DBMS-এ কীর ধরনাবিশেষ
DBMS-এ কীর বিভিন্ন ধরন:
- Candidate Key (ক্যান্ডিডেট কী): একটি টেবিলের ক্যান্ডিডেট কীগুলো হলো সেই কী সেট যা মিনিম্যাল এবং টেবিলের যেকোনো ডেটা সারি ইউনিকভাবে শনাক্ত করতে পারে।
- Primary Key (প্রাইমারি কী): প্রাইমারি কী ক্যান্ডিডেট কী থেকে একটি সিলেক্ট করা হয় এবং টেবিলের আইডেন্টিফাইং কী হয়ে যায়। এটি টেবিলের যেকোনো ডেটা সারি ইউনিকভাবে শনাক্ত করতে পারে।
- Super Key (সুপার কী): সুপার কী হলো প্রাইমারি কীর সুপারসেট। সুপার কীতে অ্যাট্রিবিউটের একটি সেট থাকে, যার মধ্যে প্রাইমারি কী থাকে, যা টেবিলের যেকোনো ডেটা সারি ইউনিকভাবে শনাক্ত করতে পারে।
- Composite Key (কমপোজিট কী): যদি টেবিলের কোনো একক অ্যাট্রিবিউট কী হিসেবে কাজ করতে না পারে (অর্থাৎ সারি ইউনিকভাবে শনাক্ত করতে না পারে), তবে দুটি বা অধিক অ্যাট্রিবিউট কম্বাইন করে একটি কী বানানো হয়। এটিকে কমপোজিট কী বলা হয়।
- Secondary Key (সেকেন্ডারি কী): ক্যান্ডিডেট কী থেকে শুধু একটি প্রাইমারি কী হিসেবে সিলেক্ট করা হয়। বাকিগুলো সেকেন্ডারি কী হিসেবে পরিচিত।
- Foreign Key (ফরেন কী): একটি ফরেন কী হলো একটি টেবিলের অ্যাট্রিবিউট ভ্যালু যা অন্য একটি টেবিলে প্রাইমারি কী হিসেবে কাজ করে। তাই ফরেন কী দুটি টেবিল লিঙ্ক করার জন্য উপযোগী। ফরেন কী কলামে ডেটা দিয়ে বড় সতর্কতা রেখে দিতে হয়, কারণ ভুল ডেটা দুটি টেবিলের মধ্যে রিলেশনশIP অবৈধ করতে পারে।
উদাহরণ
<STUDENT>
| Student_Number | Student_Name | Student_Phone | Subject_Number |
|---|---|---|---|
| 1 | Andrew | 6615927284 | 10 |
| 2 | Sara | 6583654865 | 20 |
| 3 | Harry | 4647567463 | 10 |
<SUBJECT>
| Subject_Number | Subject_Name | Subject_Instructor |
|---|---|---|
| 10 | DBMS | Korth |
| 20 | Algorithms | Cormen |
| 30 | Algorithms | Leiserson |
<ENROLL>
| Student_Number | Subject_Number |
|---|---|
| 1 | 10 |
| 2 | 20 |
| 3 | 10 |
<Student> টেবিলের Super Keys:
{Student_Number} {Student_Phone} {Student_Number,Student_Name} {Student_Number,Student_Phone} {Student_Number,Subject_Number} {Student_Phone,Student_Name} {Student_Phone,Subject_Number} {Student_Number,Student_Name,Student_Phone} {Student_Number,Student_Phone,Subject_Number} {Student_Number,Student_Name,Subject_Number} {Student_Phone,Student_Name,Subject_Number}
<Subject> টেবিলের Super Keys:
{Subject_Number} {Subject_Number,Subject_Name} {Subject_Number,Subject_Instructor} {Subject_Number,Subject_Name,Subject_Instructor} {Subject_Name,Subject_Instructor}
<Enroll> টেবিলের Super Key:
{Student_Number,Subject_Number}
<Student> টেবিলের Candidate Key: {Student_Number} বা {Student_Phone}
<Subject> টেবিলের Candidate Key: {Subject_Number} বা {Subject_Name,Subject_Instructor}
<Enroll> টেবিলের Candidate Key: {Student_Number, Subject_Number}
<Student> টেবিলের Primary Key: {Student_Number}
<Subject> টেবিলের Primary Key: {Subject_Number}
<Enroll> টেবিলের Primary Key: {Student_Number, Subject_Number}
<Enroll> টেবিলের Composite Key: {Student_Number, Subject_Number}
<Student> টেবিলের Secondary Key: {Student_Phone}
<Subject> টেবিলের Secondary Key: {Subject_Name,Subject_Instructor}
{Subject_Number} হলো <Student> টেবিলের Foreign Key এবং <Subject> টেবিলের Primary key।