এসকিউএল সার্ভারের সাথে মাইএসকিউএল এনাম ডাটা টাইপের সমতুল্য?


উত্তর:


155

এটা হয় না। একটি অস্পষ্ট সমতুল্য:

mycol VARCHAR(10) NOT NULL CHECK (mycol IN('Useful', 'Useless', 'Unknown'))

10
বৈধ মান নির্ধারণ করে এমন একটি সারণী কেন ব্যবহার করবেন না এবং তার পরিবর্তে কোনও বিদেশী কী বাধা ব্যবহার করবেন?
ইলাস্কানেটর

@ ইলেসকানেটর আমি এটিকে খুব সরাসরি স্পষ্টভাবে উত্তর ওপরে জবাব দেব, যদিও এর সর্বোত্তম সমাধান সম্ভবত এফকে + বহিরাগত টেবিল ব্যবহার।
ব্যবহারকারীফিউজার

আপনাকে ধন্যবাদ এলাসকানেটর আমাকে সুস্পষ্টর কথা মনে করিয়ে দেওয়ার জন্য ... তথ্যকে সাধারণীকরণ করুন এবং এনামের উপস্থিতি বন্ধ রয়েছে।
অ্যান্ড্রু

88

আমি এর মধ্যে সবচেয়ে ভাল সমাধানটি পেয়েছি হ'ল প্রাথমিক কী হিসাবে সম্ভাব্য মানগুলির সাথে একটি অনুসন্ধান সারণী তৈরি করা এবং অনুসন্ধান সারণীতে একটি বিদেশী কী তৈরি করা।


13
উপরে দেখানো চেক সীমাবদ্ধতার চেয়ে একটি রক্ষণাবেক্ষণের দৃষ্টিভঙ্গি থেকে আরও ভাল সমাধান।
এইচএলজিইএম

21
এটি এনএমসের চেয়েও ভাল সমাধান - মাইএসকিউএল-তেও।
ypercubeᵀᴹ

2
@ টাইপ्यूब কেন এটি মাইএসকিউএল এর জন্য আরও ভাল?
বেনআর

4
@ বেনারকর্ড মাইএসকিউএল এর এনামগুলিতে বেশ কয়েকটি সমস্যা রয়েছে: 8 টি কারণ যা মাইএসকিউএল এর এনএমএম ডেটা টাইপটি খারাপ । আমি এটি 100% এর সাথে একমত নই যে এটি খারাপ, তবে এগুলি ব্যবহার করার সময় আপনাকে অতিরিক্ত সতর্কতা অবলম্বন করতে হবে।
ypercubeᵀᴹ

1
@ বেনআরও যদি আমি সঠিকভাবে স্মরণ করি তবে মাইএসকিউএল-এর সাথে অ-কড়া মোডে, একটি অকার্যকর এনাম এনএইউএল হিসাবে প্রবেশ করানো যেতে পারে। শর্তটি যাই হোক না কেন, আমার একটি পূর্ববর্তী টিমের একটি মাইএসকিউএল এনাম sertedোকানো না হওয়া এবং মূল্যগুলির তালিকায় মান নির্দিষ্ট না করা অবস্থায় ব্যর্থ না হওয়া নিয়ে সমস্যা ছিল । একটি সন্ধানের টেবিলে একটি বিদেশী কী বাধা ব্যর্থতার কারণ হতে পারে। আমি সম্মত হই যে মাইএসকিউএল এর জন্য অনুসন্ধান সারণী আরও ভাল better
জিম শুবার্ট

4

আইএমএইচও লুকআপ টেবিলগুলি হ'ল উপায়, রেফারেন্সিয়াল অখণ্ডতা সহ। তবে কেবলমাত্র যদি আপনি "এভিল ম্যাজিক নাম্বার" এড়াতে চান তবে উদাহরণস্বরূপ: টি 4 ব্যবহার করে একটি ডাটাবেস অনুসন্ধান সারণী থেকে এনাম তৈরি করুন

আনন্দ কর!


2
CREATE FUNCTION ActionState_Preassigned()
RETURNS tinyint
AS
BEGIN
    RETURN 0
END

GO

CREATE FUNCTION ActionState_Unassigned()
RETURNS tinyint
AS
BEGIN
    RETURN 1
END

-- etc...

যেখানে কর্মক্ষমতা গুরুত্বপূর্ণ, এখনও কঠোর মান ব্যবহার করুন।


1

আমি এসকিউএল সার্ভারে এনামগুলি প্রয়োগ করতে চাইলে এই আকর্ষণীয় পদ্ধতির সন্ধান পেয়েছি।

নীচে লিঙ্কে উল্লিখিত পদ্ধতিটি বেশ জোরালো, আপনার সমস্ত ডাটাবেস এনাম প্রয়োজন বিবেচনা করে 2 কেন্দ্রীয় সারণিতে সন্তুষ্ট হতে পারে।

http://blog.sqlauthority.com/2010/03/22/sql-server-enumerations-in-relational-database-best-practice/


8
এটি "এক সত্য (অনুসন্ধান) সারণী" হিসাবে পরিচিত অ্যান্টি-প্যাটার্নের একটি প্রকরণ। যথাযথ পদ্ধতির জন্য প্রতিটি এনামের টাইপের জন্য আলাদা আলাদা টেবিল রাখা এবং বিদেশী কীগুলি ব্যবহার করা (যদি আপনার কিছুটা অনুসন্ধানের প্রয়োজন হয় তবে এটি "খাঁটি" এনামগুলির ক্ষেত্রে নাও হতে পারে)।
ব্র্যাঙ্কো দিমিত্রিজেভিক

2
লিঙ্কযুক্ত পৃষ্ঠায় দেওয়া মন্তব্যগুলি এই উত্তরটি যা নির্দিষ্ট করে তার চেয়ে প্রতিটি "এনাম" এর জন্য পৃথক সারণী ব্যবহারের জন্য ভাল ব্যাকআপ সরবরাহ করে
skia.heliou

4
এটি বেশ মজার বিষয় যে বেশিরভাগ লোকেরা কীভাবে সঠিকভাবে এই নকশাকে উপস্থাপন করতে পারে, তবুও লেখক তাঁর নিবন্ধটির নাম দিয়েছেন "সেরা অনুশীলন"।
আন্ডারস্কোর_ডি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.