উত্তর: DBMS বা Database Management System-এর Relational Model-এ Candidate Key বা ক্যান্ডিডেট কী বলতে এমন একটি attribute বা attributes-এর সমষ্টিকে বোঝায়, যার সাহায্যে একটি table বা relation-এর প্রতিটি tuple বা row-কে uniquely identify করা যায় এবং যার মধ্যে কোনো অতিরিক্ত বা অপ্রয়োজনীয় attribute থাকে না।
Candidate Key হলো একটি minimal super key। অর্থাৎ, Candidate Key এমন একটি super key, যেখান থেকে কোনো attribute বাদ দিলে সেটি আর row-কে uniquely identify করতে পারবে না।
সহজ ভাষায়: যে key table-এর প্রতিটি row-কে আলাদাভাবে চিহ্নিত করতে পারে এবং যার মধ্যে কোনো extra attribute নেই, তাকে Candidate Key বলা হয়।
Candidate Key হলো এমন একটি minimal attribute বা attribute set, যার সাহায্যে table-এর প্রতিটি tuple বা row-কে uniquely identify করা যায়। Candidate Key-তে কোনো unnecessary বা extra attribute থাকে না। একটি table-এ একাধিক Candidate Key থাকতে পারে, কিন্তু তাদের মধ্যে একটি key-কে Primary Key হিসেবে নির্বাচন করা হয়। উদাহরণস্বরূপ, Student table-এ যদি Roll এবং Phone দুটোই unique হয়, তাহলে {Roll} এবং {Phone} দুটোই Candidate Key হতে পারে।
ধরা যাক, একটি Student table আছে। সেখানে প্রত্যেক ছাত্রের Roll number আলাদা এবং প্রত্যেক ছাত্রের Phone number-ও আলাদা। তাহলে Roll number ব্যবহার করে যেমন একজন ছাত্রকে আলাদাভাবে identify করা যায়, Phone number ব্যবহার করেও তাকে identify করা যায়।
এই অবস্থায় Roll এবং Phone—দুটিই Candidate Key হতে পারে, কারণ দুটিই আলাদা আলাদা ভাবে প্রতিটি row uniquely identify করতে পারে।
কিন্তু {Roll, Name} Candidate Key নয়, কারণ Roll একাই যথেষ্ট। এখানে Name extra attribute। তাই {Roll, Name} Super Key হতে পারে, কিন্তু Candidate Key নয়।
সহজ উদাহরণ: একজন ছাত্রকে Roll Number দিয়েও চেনা যায়, আবার Phone Number দিয়েও চেনা যায়। যদি দুইটি value-ই unique হয়, তাহলে Roll এবং Phone—দুটিই Candidate Key হতে পারে।
ধরা যাক, একটি Student table আছে:
| Roll | Name | Class | Phone | |
|---|---|---|---|---|
| 1 | Rahul | 10 | 9876543210 | rahul@gmail.com |
| 2 | Sima | 10 | 9876543211 | sima@gmail.com |
| 3 | Amit | 10 | 9876543212 | amit@gmail.com |
উপরের table-এ Roll, Phone এবং Email প্রত্যেক student-এর জন্য আলাদা। তাই এই তিনটি attribute আলাদা আলাদা ভাবে প্রতিটি row uniquely identify করতে পারে।
উপরের Student table অনুযায়ী Candidate Key হতে পারে:
কারণ Roll, Phone এবং Email—প্রত্যেকটি attribute আলাদা আলাদা ভাবে প্রতিটি student-কে uniquely identify করতে পারে।
যে attribute বা attribute set row uniquely identify করতে পারে না অথবা যার মধ্যে extra attribute থাকে, সেটি Candidate Key নয়।
Candidate Key identify করার জন্য নিচের ধাপগুলো অনুসরণ করা যায়:
উদাহরণ: Student table-এ Roll unique হলে {Roll} Candidate Key। কিন্তু {Roll, Name} Candidate Key নয়, কারণ Roll একাই যথেষ্ট।
| বিষয় | Super Key | Candidate Key |
|---|---|---|
| অর্থ | যে key row uniquely identify করে | Minimal Super Key |
| Extra Attribute | থাকতে পারে | থাকে না |
| Minimal কিনা | সব সময় minimal নয় | সব সময় minimal |
| উদাহরণ | {Roll}, {Roll, Name}, {Roll, Class} | {Roll} |
| ব্যবহার | সব possible unique identifying set বোঝায় | Primary Key নির্বাচনের জন্য ব্যবহার করা হয় |
একটি table-এ একাধিক Candidate Key থাকতে পারে। কিন্তু database designer সাধারণত Candidate Key-গুলোর মধ্যে একটি key নির্বাচন করে Primary Key হিসেবে ব্যবহার করেন।
ধরা যাক, Student table-এ Roll, Phone এবং Email—তিনটি attribute-ই unique।
এখন এই Candidate Key-গুলোর মধ্যে {Roll} কে Primary Key হিসেবে নির্বাচন করা যেতে পারে।
| Key | অর্থ | উদাহরণ |
|---|---|---|
| Candidate Key | যে minimal key row uniquely identify করতে পারে | {Roll}, {Phone}, {Email} |
| Primary Key | Candidate Key-গুলোর মধ্যে নির্বাচিত main key | {Roll} |
| Alternate Key | যে Candidate Key primary key হিসেবে নির্বাচিত হয়নি | {Phone}, {Email} |
ধরা যাক, একটি school database-এ Student table আছে:
Student (Roll, Name, Class, Phone, Email)
শিক্ষক ছাত্রদের এভাবে বোঝাতে পারেন:
ধরা যাক, একটি class register আছে। সেখানে ছাত্রদের Roll Number, Phone Number এবং Email লেখা আছে। যদি প্রত্যেক ছাত্রের Roll Number আলাদা হয়, তাহলে Roll Number দিয়ে ছাত্রকে চেনা যায়। যদি Phone Number-ও প্রত্যেকের আলাদা হয়, তাহলে Phone Number দিয়েও ছাত্রকে চেনা যায়। আবার Email আলাদা হলে Email দিয়েও ছাত্রকে চেনা যায়।
তাই Roll, Phone এবং Email—এই তিনটি attribute আলাদা আলাদা ভাবে ছাত্রকে identify করতে পারে। তাই এগুলো Candidate Key হতে পারে।
কিন্তু Roll Number-এর সাথে Name যোগ করলে সেটি আর Candidate Key থাকবে না, কারণ Roll Number একাই যথেষ্ট। Candidate Key সবসময় minimal হওয়া দরকার।
প্রথমে Candidate Key-এর সংজ্ঞা লিখবে।
তারপর লিখবে যে এটি minimal super key।
উল্লেখ করবে যে এটি tuple বা row uniquely identify করে।
লিখবে যে Candidate Key-তে extra attribute থাকে না।
Student table-এর Roll, Phone বা Email-এর উদাহরণ দেবে।
শেষে লিখবে Candidate Key-গুলোর মধ্যে একটি Primary Key হিসেবে নির্বাচন করা হয়।
Candidate Key হলো minimal Super Key—যা row uniquely identify করে এবং যার মধ্যে কোনো extra attribute থাকে না।
DBMS-এর Relational Model-এ Candidate Key হলো এমন একটি attribute বা attributes-এর minimal set, যার সাহায্যে একটি table-এর প্রতিটি tuple বা row-কে uniquely identify করা যায়। Candidate Key হলো minimal Super Key, অর্থাৎ এর মধ্যে কোনো অতিরিক্ত attribute থাকে না। একটি table-এ একাধিক Candidate Key থাকতে পারে, কিন্তু তাদের মধ্যে একটি key-কে Primary Key হিসেবে নির্বাচন করা হয়। উদাহরণস্বরূপ, Student table-এর attributes যদি Roll, Name, Class, Phone এবং Email হয় এবং Roll, Phone ও Email প্রত্যেক student-এর জন্য unique হয়, তাহলে {Roll}, {Phone} এবং {Email} Candidate Key হতে পারে। কিন্তু {Roll, Name} Candidate Key নয়, কারণ Roll একাই row uniquely identify করার জন্য যথেষ্ট।