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