কম্পোজিট কী (Composite Key) হলো এমন একটি প্রাইমারি কী যা দুই বা ততোধিক অ্যাট্রিবিউট (Column) এর সংমিশ্রণ থেকে গঠিত। অর্থাৎ, একক কলামে ইউনিক থাকা না গেলে একাধিক কলাম মিলিয়ে ইউনিক হওয়া বাধ্য।
উদাহরণ ১: OrderDetails টেবিল

এখানে OrderID এবং ProductID মিলিয়ে কম্পোজিট প্রাইমারি কী বানানো হয়েছে।
| Composite Primary Key |
|---|
| {OrderID, ProductID} |
উদাহরণ ২: Student Marks টেবিল
| StudentID | StudentEnrollNo | StudentMarks | StudentPercentage |
|---|---|---|---|
| S001 | 0721722 | 570 | 90 |
| S002 | 0721790 | 490 | 80 |
| S003 | 0721766 | 440 | 86 |
এখানে StudentID এবং StudentEnrollNo মিলিয়ে কম্পোজিট প্রাইমারি কী। একক কলামেই ইউনিক নয় (একই ছাত্রের একাধিক সেমিস্টার হতে পারে)।
বৈশিষ্ট্য
- দুই বা অধিক কলামের সমষ্টি।
- প্রতিটি কলাম একায় ইউনিক নয়, কিন্তু মিলিত হয়ে ইউনিক।
- প্রাইমারি কী হিসেবে ডিক্লেয়ার করা হয়:
PRIMARY KEY (col1, col2, ...)। - ফরেন কী রেফারেন্স করার সময় সব কলাম রেফারেন্স করতে হয়।
SQL উদাহরণ
CREATE TABLE StudentMarks ( StudentID VARCHAR(10), StudentEnrollNo VARCHAR(20), StudentMarks INT, StudentPercentage DECIMAL(5,2), PRIMARY KEY (StudentID, StudentEnrollNo) );
কখন ব্যবহার করবেন?
- ম্যাপিং টেবিল (Junction Table) - যেমন Student_Course (StudentID, CourseID)۔
- অর্ডার লাইন আইটেম (OrderID, ProductID)۔
- টাইম-সিরিজ ডেটা যেখানে (EntityID, Timestamp) ইউনিক।
- প্রাকৃতিকভাবে কম্পাউন্ড আইডেন্টিটি থাকলে।
সুবিধা ও অসুবিধা
| সুবিধা | অসুবিধা |
|---|---|
| ন্যাচারেল বিজনেস কী রিফ্লেক্ট করে | জয়েন কন্ডিশন বড় হয় (Multi-column join) |
| সারোগেট কী দরকার নেই | ইন্ডেক্স সাইজ বড়, স্টোরেজ বেশি |
| ডেটা ইন্টিগ্রিটি বাঢায় | মাইগ্রেশন/রিফ্যাক্টরিং কঠিন |