এসকিউএল কীগুলি, ইউএসআই বনাম পিআরআই বনাম UL


247

মধ্যে পার্থক্য কি MUL, PRIএবং UNIমাইএসকিউএল মধ্যে?

কমান্ডটি ব্যবহার করে আমি একটি মাইএসকিউএল কোয়েরিতে কাজ করছি:

desc mytable; 

ক্ষেত্রগুলির মধ্যে একটিকে MULকী হিসাবে দেখানো হয়েছে , অন্যরা UNIবা হিসাবে প্রদর্শিত হবে PRI

আমি জানি যে কোনও কী থাকলে PRIটেবিলের জন্য কেবল একটি রেকর্ড সেই চাবিটির সাথে যুক্ত হতে পারে। যদি একটি কী থাকে MULতবে এর অর্থ কি এর সাথে যুক্ত যে একাধিক রেকর্ড থাকতে পারে?

এর প্রতিক্রিয়া এখানে mytable

+-----------+---------+------+-----+---------+-------+
| Field     | Type    | Null | Key | Default | Extra |
+-----------+---------+------+-----+---------+-------+
| courseid  | int(11) | YES  | MUL | NULL    |       | 
| dept      | char(3) | YES  |     | NULL    |       | 
| coursenum | char(4) | YES  |     | NULL    |       | 
+-----------+---------+------+-----+---------+-------+

উত্তর:


158

এর অর্থ ক্ষেত্রটি একটি অ-অনন্য সূচকের (অংশ)। আপনি ইস্যু করতে পারেন

show create table <table>;

টেবিল কাঠামো সম্পর্কে আরও তথ্য দেখতে।


2
যদি সেই ক্ষেত্রটি একটি অ-অনন্য সূচকের (অংশ) হয়, তবে কেন MULকেবল সেই কলামটির বিরুদ্ধে দেখা যাচ্ছে না এবং অন্যান্য সমস্ত কলামও নয়।
বিকাশ গোয়েল

1
জড়িতভাবে অন্য কোনও কলাম জড়িত না। অ-অনন্য মাত্র অর্থ একই স্তরের একাধিকবার ঘটতে পারে ।
pgoetz

424
DESCRIBE <table>; 

এটি তীব্রভাবে শর্টকাট এর জন্য:

SHOW COLUMNS FROM <table>;

যে কোনও ক্ষেত্রে, "কী" বৈশিষ্ট্যের জন্য তিনটি সম্ভাব্য মান রয়েছে:

  1. PRI
  2. UNI
  3. MUL

এর অর্থ PRIএবং UNIবেশ স্পষ্ট:

  • PRI => প্রাথমিক কী
  • UNI => অনন্য কী

তৃতীয় সম্ভাবনা, MUL(যা সম্পর্কে আপনি জিজ্ঞাসা করেছিলেন) হ'ল মূলত এমন একটি সূচক যা কোনও প্রাথমিক কী বা কোনও অনন্য কী নয়। নামটি "একাধিক" থেকে আসে কারণ একই মানের একাধিক সংঘটন অনুমোদিত। সোজা মাইএসকিউএল ডকুমেন্টেশন থেকে :

যদি Keyহয় MUL, কলামটি নুনউনিক সূচকের প্রথম কলাম যেখানে কোনও মানের একাধিক ঘটনা কলামের মধ্যে অনুমোদিত।

এখানে একটি চূড়ান্ত সতর্কতাও রয়েছে:

কী মূল্যবোধের একাধিক একটি টেবিলের একটি প্রদত্ত কলামে প্রয়োগ হলে কী প্রদর্শন সর্বোচ্চ অগ্রাধিকার দিয়ে, যাতে PRI, UNI, MUL

একটি সাধারণ নোট হিসাবে, মাইএসকিউএল ডকুমেন্টেশন বেশ ভাল। সন্দেহ হলে, এটি পরীক্ষা করে দেখুন!


3
"প্রাথমিক কীতে অবশ্যই অনন্য মান থাকতে হবে।" w3schools.com/sql/sql_primarykey.asp
ktm5124

6
কিছু প্রসঙ্গে কি বলা যায় যে, মুল মানে কীটি একটি বিদেশী চাবি ??
আর্মেল লার্শিয়ার

5
@ অরবগুইননেস, মাইএসকিউএল ডকুমেন্টেশন যেমন অ-ইংরাজী দ্বারা রচিত তা পড়ে। অনেক সময় তারা 1 লাইন দিয়ে সম্পন্ন হতে পারে এমন কিছু ব্যাখ্যা করতে 3 লাইন নেবে।
পেসারিয়ার


1
@ পেসারিয়র, আমি মাইএসকিউএল ডকুমেন্টেশনের ভারবৌজিকতা সম্পর্কে আপনার সাথে একমত। এজন্য স্ট্যাকওভারফ্লোটি আমি প্রথমে প্রথমে যাচাই করি, বিশেষত যদি আমি খুব তাড়াতাড়ি থাকি। ;-)
রবগুইননেস 12'18

86

যদিও মাইএসকিউএল এ এমইউএল, পিআরআই এবং ইউএনআই আছে তার উপর হাঁটাচলা করুন?

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

  • যদি কী পিআরআই হয়, কলামটি একটি প্রাথমিক কী বা একাধিক-কলামের প্রাথমিক কীতে কলামগুলির মধ্যে একটি।
  • কী যদি ইউএনআই হয় তবে কলামটি ইউনিক ইনডেক্সের প্রথম কলাম। (একটি অনন্য সূচক একাধিক নুল মানকে অনুমতি দেয় তবে কলামটি নাল ক্ষেত্রটি পরীক্ষা করে কলামটি NULL অনুমতি দেয় কিনা তা আপনি বলতে পারেন))
  • যদি কীটি এমএল হয় তবে কলামটি ননউনিক সূচকের প্রথম কলামে যেখানে দেওয়া মানটির একাধিক ঘটনা কলামের মধ্যে অনুমোদিত।

লাইভ উদাহরণ

নিয়ন্ত্রণ গোষ্ঠী, এই উদাহরণটির মধ্যে পিআরআই, এমইউএল বা ইউএনআই নেই:

mysql> create table penguins (foo INT);
Query OK, 0 rows affected (0.01 sec)

mysql> desc penguins;
+-------+---------+------+-----+---------+-------+
| Field | Type    | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| foo   | int(11) | YES  |     | NULL    |       |
+-------+---------+------+-----+---------+-------+
1 row in set (0.00 sec)

একটি কলামে একটি কলাম এবং একটি কলামে একটি সূচী সহ একটি টেবিলের একটি MUL রয়েছে:

mysql> create table penguins (foo INT, index(foo));
Query OK, 0 rows affected (0.01 sec)

mysql> desc penguins;
+-------+---------+------+-----+---------+-------+
| Field | Type    | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| foo   | int(11) | YES  | MUL | NULL    |       |
+-------+---------+------+-----+---------+-------+
1 row in set (0.00 sec)

একটি কলামের সাথে একটি সারণী যা একটি প্রাথমিক কী রয়েছে পিআরআই

mysql> create table penguins (foo INT primary key);
Query OK, 0 rows affected (0.02 sec)

mysql> desc penguins;
+-------+---------+------+-----+---------+-------+
| Field | Type    | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| foo   | int(11) | NO   | PRI | NULL    |       |
+-------+---------+------+-----+---------+-------+
1 row in set (0.00 sec)

একটি অনন্য কী এর সাথে একটি কলামযুক্ত একটি সারণীতে ইউএনআই রয়েছে:

mysql> create table penguins (foo INT unique);
Query OK, 0 rows affected (0.01 sec)

mysql> desc penguins;
+-------+---------+------+-----+---------+-------+
| Field | Type    | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| foo   | int(11) | YES  | UNI | NULL    |       |
+-------+---------+------+-----+---------+-------+
1 row in set (0.00 sec)

ফু এবং বারের সাথে একটি সূচী coveringাকা একটি টেবিলের কেবল ফু-তে MUL রয়েছে:

mysql> create table penguins (foo INT, bar INT, index(foo, bar));
Query OK, 0 rows affected (0.01 sec)

mysql> desc penguins;
+-------+---------+------+-----+---------+-------+
| Field | Type    | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| foo   | int(11) | YES  | MUL | NULL    |       |
| bar   | int(11) | YES  |     | NULL    |       |
+-------+---------+------+-----+---------+-------+
2 rows in set (0.00 sec)

দুটি কলামে দুটি পৃথক সূচকযুক্ত একটি টেবিলের প্রত্যেকটির জন্য এমএলআর রয়েছে

mysql> create table penguins (foo INT, bar int, index(foo), index(bar));
Query OK, 0 rows affected (0.01 sec)

mysql> desc penguins;
+-------+---------+------+-----+---------+-------+
| Field | Type    | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| foo   | int(11) | YES  | MUL | NULL    |       |
| bar   | int(11) | YES  | MUL | NULL    |       |
+-------+---------+------+-----+---------+-------+
2 rows in set (0.00 sec)

তিনটি কলামে বিস্তৃত একটি সূচক সহ একটি টেবিলের প্রথমটিতে MUL রয়েছে:

mysql> create table penguins (foo INT, 
       bar INT, 
       baz INT, 
       INDEX name (foo, bar, baz));
Query OK, 0 rows affected (0.01 sec)

mysql> desc penguins;
+-------+---------+------+-----+---------+-------+
| Field | Type    | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| foo   | int(11) | YES  | MUL | NULL    |       |
| bar   | int(11) | YES  |     | NULL    |       |
| baz   | int(11) | YES  |     | NULL    |       |
+-------+---------+------+-----+---------+-------+
3 rows in set (0.00 sec)

বিদেশী কী সহ একটি সারণী যা অন্য সারণীর প্রাথমিক কীটি উল্লেখ করে মুল হয়

mysql> create table penguins(id int primary key);
Query OK, 0 rows affected (0.01 sec)

mysql> create table skipper(id int, foreign key(id) references penguins(id));
Query OK, 0 rows affected (0.01 sec)

mysql> desc skipper;
+-------+---------+------+-----+---------+-------+
| Field | Type    | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| id    | int(11) | YES  | MUL | NULL    |       |
+-------+---------+------+-----+---------+-------+
1 row in set (0.00 sec)

mysql> desc penguins;
+-------+---------+------+-----+---------+-------+
| Field | Type    | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| id    | int(11) | NO   | PRI | NULL    |       |
+-------+---------+------+-----+---------+-------+
1 row in set (0.00 sec)

আপনার নিউকোর্টেক্সে এটি আঁকুন এবং ডায়ালটিকে "ফ্রেপ্পে" সেট করুন।


6

মুলের পক্ষে এটি আমার পক্ষে সহায়ক ডকুমেন্টেশনও ছিল - http://grokbase.com/t/mysql/mysql/9987k2ew41/key-field-mul-newbie-question

"মুল মানে হ'ল কীটি একাধিক সারিকে একই মান রাখতে দেয় That এটি কোনও ইউনিক কী নয়" "

উদাহরণস্বরূপ, ধরা যাক আপনার কাছে দুটি মডেল, পোস্ট এবং মন্তব্য রয়েছে। মন্তব্যের সাথে পোস্টের একটি has_many সম্পর্ক আছে। মন্তব্য টেবিলে একটি MUL কী (পোষ্ট আইডি) রাখার অর্থ হবে কারণ অনেক মন্তব্য একই পোস্টে দায়ী করা যেতে পারে।


4
যদি এটি কেবল একটি স্বতন্ত্র কী না হয় তবে কেন স্পষ্টভাবে মুল হিসাবে উল্লেখ করবেন? ডিফল্টরূপে এটি কোনওভাবেই অনন্য নয়, তাই না? নাকি আমি কিছু মিস করছি?
সুদীপ ভান্ডারী

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