কী (Key) : ডেটাবেসে কী (Key) হল একটি ফিল্ড, যার উপর ভিত্তি করে ডেটাবেসে অপরাপর ফিল্ডের তথ্যাবলী শনাক্ত করা যায় । সুতরাং কী হল একটি বিশেষ অ্যাট্রিবিউট যার দ্বারা কোনো এনটিটির অন্যান্য এক বা একাধিক অ্যাট্রিবিউটকে সহজেই শনাক্ত করা যায় ।
যেমন রোল নাম্বার (Roll No.) কী বা কী ফিল্ড-এর উপর ভিত্তি করে যে কোনো শ্রেণীর ছাত্র-ছাত্রীদের সমস্ত তথ্যাবলী (বা অন্যান্য এক বা একাধিক অ্যাট্রিবিউটকে) শনাক্ত করা যায় । নীচে একটি ছকের সাহায্যে দেখানো হল—

ডেটাবেসে বিভিন্ন টেবিলের রেকর্ড (Record) গুলিকে শনাক্তকরণ এবং একাধিক টেবিলের মধ্যে সম্পর্কস্থাপন (Relationship) করার জন্য বিভিন্ন প্রকার কী ব্যবহার করা হয় । যেমন— Super Key, Candidate Key, Primary Key, Alternate Key ইত্যাদি । নীচে ডেটাবেস টেবিলে ব্যবহৃত বিভিন্ন কী সম্পর্কে আলোচনা করা হল ।
সুপার কী (Super Key) :
সুপার কী বলতে আমরা বুঝি কোনো ডেটাবেসের অন্তর্গত কোনো একটি টেবিলের একটি ফিল্ড বা একাধিক ফিল্ডের একটি গ্রুপ । যেটি বহু রেকর্ডের মধ্যে যে কোনো একটি রেকর্ডকে সম্পূর্ণ আলাদাভাবে চিনিয়ে দেয় । নীচে Students টেবিলটির উদাহরণ দেখানো হল—
| Roll No | Name | Reg_no | Marks |
|---|---|---|---|
| 1 | Rajib Das | 012022-0147 | 480 |
| 2 | Sona Roy | 012125-0012 | 440 |
| 3 | Raja Dey | 022152-0123 | 390 |
| 4 | Rima Das | 022023-0148 | 360 |
| 5 | Ujjai Chakraborty | 0310021-0005 | 400 |
| 6 | Koyal Ghosh | 0410057-0002 | 475 |
উপরের Student টেবিলটি থেকে সম্ভাব্য Super Keyগুলি নিম্নরূপ-
| Super Key | Field(s) | Number of Field(s) |
|---|---|---|
| 1 | { Roll_no } | 1 |
| 2 | { Roll_no, Name } | 2 |
| 3 | { Reg_no } | 1 |
| 4 | { Reg_no, name, marks } | 3 |
| 5 | { Roll_no, Name, Reg_no, marks } | 4 |
ক্যানডিডেট কী (Candidate Key) :
আমরা জানি একটি টেবিলে একাধিক Super Key থাকতে পারে । এই সমস্ত Super Key গুলির মধ্যে যাদের field বা attribute-এর সংখ্যা ন্যূনতম বা সবচেয়ে কম তাদের প্রতিটিকেই Candidate Key বলা হয় । এখানে প্রথম ও তৃতীয় Super Key দুটি যথাক্রমে { Roll_no } ও { Reg_no } একটিমাত্র field দ্বারা গঠিত তাই এই দুটি Super Key-ই হলো Candidate Key ।
প্রাইমারি কী (Primary Key) :
একাধিক ক্যানডিডেট কী-র মধ্যে ডেটাবেস ডিজাইনার (database designer) যেটিকে টেবিলের রেকর্ডগুলি সনাক্তকরণের জন্য নির্বাচন করেন সেটিকে প্রাইমারি কী বলে । এখানে { reg_no } বা { roll_no } এর মধ্যে যে কোনো একটি primary key হতে পারে । এর বৈশিষ্ট্যগুলি হলো—
- a) এটি খালি বা শূন্য থাকতে পারে না (Not null)।
- b) প্রাইমারি কী এক বা একাধিক ফিল্ড দ্বারা গঠিত হতে পারে ।
- c) এর মান প্রতিটি রেকর্ডের ক্ষেত্রে পৃথক হয় (unique বা অদ্বিতীয়) । এই জন্য রেকর্ড সনাক্তকরণের (identification of record) কাজে প্রাইমারি কী ব্যবহৃত হয়।
| Roll_no | Name |
|---|---|
| 1 | Ram |
| 2 | Shyam |
| 3 | Jodu |
| 4 | Ram |
এই টেবিলে { roll_no } হলো primary key এখানে Roll_no unique বা অদ্বিতীয়। কিন্তু নাম duplicate হতে পারে (যেমন “Ram”)।
| s_name | s_roll | section |
|---|---|---|
| Ram | 1 | A |
| Shyam | 3 | B |
| Jodu | 3 | B |
| Madhu | 2 | A |
এখানে { s_name } ও { s_roll } কোনোটিই অদ্বিতীয় নয়। s_roll ও s_name একত্রেও অদ্বিতীয় নয়। টেবিলে (Ram, 1) দুবার অবস্থিত অর্থাৎ { s_roll, s_name } prmary key নয়। কিন্তু s_roll, section একত্রে primary key গঠন করছে। এটিকে composite primary key যেখানে দুটি ফিল্ড বর্তমান।
অল্টারনেট কী (Alternet Key) :
একটি টেবিলে একাধিক Candidate key-র মধ্যে একটিকে database designer প্রাইমারি কী হিসেবে মনোনীত করেন। প্রাইমারি কী ব্যতীত বাকী সমস্ত কীগুলিকে alternate key বলা হয়। student টেবিলের ক্ষেত্রে database designer যদি { roll_no } কে primary key হিসেবে মনোনীত করে, তাহলে { reg_no } হবে alternate key। অন্যদিকে যদি { reg_no } কে primary key হিসেবে মনোনীত করা হয় তবে { roll_no } হবে alternate key।
ফরেন কী সম্পর্কিত ধারণা (Concept of Foreign Key) :
পূর্বের রেফারেন্সিয়াল ইন্টিগ্রিটি কনস্ট্রেন্টস-এর ধারণা থেকে সম্পূর্ণ অন্য এক ধরনের কী সম্পর্কে ধারণা করা যায় যাকে ফরেন কী বলা হয়। এক্ষেত্রেও দুটি টেবিলের কোনো এক প্রকার সম্পর্ক থাকে। যখন কোনো ডেটাবেসের মধ্যে একটি টেবিলের প্রাইমারি কী অন্য কোনো টেবিলের অ্যাট্রিবিউট বা সাধারণ ফিল্ড হিসেবে উপস্থিত থাকে তখন ঐ প্রাইমারি কীটি প্রথম টেবিলের সাপেক্ষে দ্বিতীয় টেবিলের ফরেন কী (Foreign Key) বলা হয়।
ফরেন কী দুটি টেবিলের সাপেক্ষে নির্ধারিত হয়। ডেটাবেসের তালিকা থেকে রেকর্ডকে চিহ্নিত করতে ফরেন কী (Foreign Key) ব্যবহার হয়। নিচে Student এবং Library নামক দুটি টেবিলে প্রাইমারি ও ফরেন কী দেখানো হল—

লক্ষ্য করলে দেখা যাবে যে STUDENT টেবিলটিতে প্রাইমারি কী হল Roll No যেটি LIBRARY টেবিলে সাধারণ ফিল্ড হিসেবে ব্যবহৃত হয়েছে। সুতরাং LIBRARY টেবিলের ফরেন কী হল Roll No |