মাইএসকিউএল এনাম বনাম সেট


92

মাইএসকিউএল ডেটা টাইপের "এনাম" এবং "সেট" এর জন্য একটির বিপরীতে ব্যবহারের পার্থক্য এবং সুবিধা এবং অসুবিধাগুলি কী?

উদাহরণস্বরূপ ডেটা টাইপ:

  • এনুম ('এ', 'বি', 'সি')
  • সেট ('এ', 'বি', 'সি')

আমি যে পার্থক্য সম্পর্কে সচেতন তা হ'ল ENUM কেবলমাত্র একটি মান নির্বাচন করতে অনুমতি দেয় বনাম SET একাধিক মান নির্বাচন করার অনুমতি দেয়।


4
কোনও অ্যাড / ডিএসডিভি নেই। আপনার প্রয়োজনীয়তার উপর নির্ভর করে আপনার মধ্যে একটি চয়ন করা উচিত।
রাভনূর

4
দুটি ধরণের সম্পর্ক নেই। আপনি পাশাপাশি জিজ্ঞাসা করতে পারেন কোনটি ভাল - ইনট বা পাঠ্য?
বোহেমিয়ান

উত্তর:


68

মাইএসকিউএল ডকুমেন্টেশন যেমন বলে:

একটি ENUM বা SET কলামের সংজ্ঞা কলামে প্রবেশ করা মানগুলির প্রতিবন্ধক হিসাবে কাজ করে। এই শর্তগুলি পূরণ করে না এমন মানগুলির জন্য একটি ত্রুটি দেখা দেয়:

একটি ENUM মান অবশ্যই কলাম সংজ্ঞায়িত তালিকাভুক্ত বা তার অভ্যন্তরের সংখ্যাসূচক সমতুল্য হওয়া উচিত। মানটি ত্রুটির মান হতে পারে না (এটি 0 বা খালি স্ট্রিং)। ENUM ('a', 'b', 'c') হিসাবে সংজ্ঞায়িত কলামের জন্য, '', 'd', বা 'কুড়াল' এর মতো মানগুলি অবৈধ এবং প্রত্যাখ্যান করা হয়।

একটি এসইটি মান অবশ্যই খালি স্ট্রিং বা কমা দ্বারা পৃথককৃত কলাম সংজ্ঞাতে তালিকাবদ্ধ মানগুলির মধ্যে থাকা একটি মান হতে হবে। SET ('a', 'b', 'c') হিসাবে সংজ্ঞায়িত কলামের জন্য, 'd' বা 'a, b, c, d' এর মতো মানগুলি অবৈধ এবং প্রত্যাখ্যান করা হয়।


22
বিঃদ্রঃ! একটি মান (a, b, c, d)প্রত্যাখ্যান করা হবে না। কেবলমাত্র dপ্রত্যাখ্যান করা হবে ফলে ফলস্বরূপ মান (a, b, c)
Itay গ্রুদেব

4
এটি অফিশিয়াল ডকুমেন্টেশন হতে পারে তবে এটি বর্ণনা করার এখনও একটি বিভ্রান্তিমূলক উপায়। অন্যান্য উত্তরের উপর ভিত্তি করে পার্থক্য পরিষ্কার হয়ে যায়। SET হল ENUM এর একটি অ্যারে, যেখানে প্রতিটি মান 0 বা ততোধিক এনুম স্টাইল মান ধারণ করে।
জোনাথন

10
এটি একটি ভাল উত্তর নয়। পার্থক্য এবং ডিস / সুবিধার স্পষ্ট ব্যাখ্যা জিজ্ঞাসা করা হয়েছিল; সরকারী ডকুমেন্টেশন, যার মধ্যে এই উত্তরটি কেবল একটি অনুলিপি, তা করতে ব্যর্থ।
স্মুফ

(ক, খ, সি, ডি) যদি কড়া মোড চালু থাকে তা প্রত্যাখ্যান করা হবে
চিন্মায়

4
এটি উত্তর নয়।
অমিত শাহ

204

সাদৃশ্য:
ENUM = রেডিও ক্ষেত্রগুলি (কেবলমাত্র স্বীকৃত মানগুলি তালিকাভুক্ত রয়েছে কেবল এটিই চয়ন করতে পারে)
SET = চেকবক্স ক্ষেত্রগুলি (কেবল স্বীকৃত মানগুলি তালিকাভুক্ত, একাধিক চয়ন করতে পারে)


4
পরিষ্কার এবং বুঝতে সহজ!
আবু শোয়েব

এটি সঠিক পার্থক্য যা পরিষ্কারভাবে বর্ণিত হয়েছে। আপনাকে ধন্যবাদ ব্র্যাড কেন্ট
রবি তেজা

44

এনুম এবং সেট সম্পূর্ণরূপে প্রয়োজনীয়তার উপর নির্ভর করে যেমন আপনার যদি রেডিও বোতামের একটি তালিকা থাকে যেখানে একবারে কেবলমাত্র একজনকে বেছে নেওয়া যায় তবে এনাম ব্যবহার করুন। এবং যদি আপনার চেকবক্সের একটি তালিকা থাকে যেখানে একসাথে আরও একটি আইটেম বেছে নেওয়া যায়, সেটটি ব্যবহার করুন।


22
CREATE TABLE setTest(
  attrib SET('bold','italic','underline')
);

INSERT INTO setTest (attrib) VALUES ('bold');
INSERT INTO setTest (attrib) VALUES ('bold,italic');
INSERT INTO setTest (attrib) VALUES ('bold,italic,underline');

আপনি উপরের কোডটি অনুলিপি করতে পারেন এবং এটি মাইএসকিএলে পেস্ট করতে পারেন এবং আপনি দেখতে পাবেন যে এসইটি আসলে একটি সংগ্রহ। আপনি যে বৈশিষ্ট্যগুলি ঘোষণা করেছেন তার প্রতিটি সমন্বয় আপনি সঞ্চয় করতে পারেন।

CREATE TABLE enumTest(
 color ENUM('red','green','blue')
);

INSERT INTO enumTest (color) VALUES ('red');
INSERT INTO enumTest (color) VALUES ('gray');
INSERT INTO enumTest (color) VALUES ('red,green');

আপনি উপরের কোডটিও অনুলিপি করতে পারেন। এবং আপনি দেখতে পাবেন যে প্রতিটি ENUM প্রকৃতপক্ষে কেবলমাত্র একবারে স্টোর করা যায়। এবং আপনি দেখতে পাবেন যে শেষ 2 লাইনের ফলাফল উভয়ই ফাঁকা থাকবে।


9

আসলে এটি বেশ সহজ:

আপনি যখন কোনও ENUM ('হ্যাঁ', 'না', 'হতে পারে') সংজ্ঞায়িত করেন তখন আপনাকে অবশ্যই এই মানগুলির একটি (বা তাদের অবস্থানের সূচক নম্বর) লিখতে হবে

যখন আপনি একটি সংজ্ঞায়িত সেট ( 'আর', 'ওয়াট', 'এক্স') তারপর আপনি করতে পারেন একটি খালি স্ট্রিং ঢোকান, বা এক বা মূল্যবোধের আরও অনেক কিছু। আপনি যদি পূর্বনির্ধারিত সেটটিতে নেই এমন কিছু প্রবেশ করান তবে পরিবর্তে একটি খালি স্ট্রিং .োকানো হবে। নোট করুন tingোকানোর আগে সমস্ত সদৃশ মান বাতিল করা হয়, সুতরাং প্রতিটি অনুমোদিত মানের মধ্যে একটি মাত্র instanceোকানো হচ্ছে।

আশা করি এটি পরিষ্কার হয়ে যাবে।

দয়া করে নোট করুন যে উইনবোববের উত্তরটি ভুল এবং এতে ত্রুটিযুক্ত উদাহরণ রয়েছে, যেমন একাধিক মান সন্নিবেশ করানোর সময় মানগুলি অবশ্যই কমা দিয়ে পৃথক করা উচিত ings তার সমস্ত সন্নিবেশকৃতগুলি কেবলমাত্র একটি একক মান সন্নিবেশ করছে (এবং শেষ দুটি সংজ্ঞায়িত সেটটিতে নেই)


0

ENUM -> সন্নিবেশ করতে উপলভ্য মানগুলির মধ্যে একটি বেছে নিন।

(নো_নুল, নো_আনি_লিপি)


সেট -> কোনও সেটের মতো কোনও সংমিশ্রণ বা একক মান চয়ন করুন এবং এগুলিতে sertোকান।

(নাল, স্বতন্ত্র_মর্যাদাগুলি, সমস্ত_প্রাপ্য_মূল্য_একটি সহ)

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.