MySQL-এ একাধিক কলামকে মিলিয়ে কম্পোজিট প্রাইমারি কী (Composite Primary Key) তৈরি করা যায়। এটি দুটি কলামের সংযোজন (pair) কে ইউনিক নিশ্চিত করে, প্রতিটি কলাম আলাদা না হয়ে।
সিনট্যাক্স
PRIMARY KEY(yourColumnName1, yourColumnName2);
টেবিল তৈরি (কম্পোজিট PK)
mysql> CREATE TABLE DemoTable (
-> StudentFirstName VARCHAR(100),
-> StudentLastName VARCHAR(100),
-> StudentAge INT,
-> StudentCountryName VARCHAR(100),
-> PRIMARY KEY(StudentFirstName, StudentLastName)
-> );
Query OK, 0 rows affected (0.74 sec)
টেবিলের ডেসক্রিপশন দেখানো
mysql> DESC DemoTable;
আউটপুট
+--------------------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------------------+--------------+------+-----+---------+-------+ | StudentFirstName | varchar(100) | NO | PRI | NULL | | | StudentLastName | varchar(100) | NO | PRI | NULL | | | StudentAge | int(11) | YES | | NULL | | | StudentCountryName | varchar(100) | YES | | NULL | | +--------------------+--------------+------+-----+---------+-------+ 4 rows in set (0.00 sec)
ব্যাখ্যা: Key কলামে PRI দেখাচ্ছে দুটি কলামই প্রাইমারি কী অংশ। এখন একই (FirstName, LastName) যুগ্ম দুবার ইনসার্ট করা যাবে না, কিন্তু একই FirstName বা একই LastName আলাদা করে থাকতে পারে।
ব্যবহার ক্ষেত্র: ম্যাঞ্চ-টু-ম্যাঞ্চ রিলেশনশিপ টেবিল (যেমন student_course), লগ টেবিল যেখানে (user_id, event_time) ইউনিক, ইত্যাদি।
সীমাবদ্ধতা: কম্পোজিট PK-তে কোনো কলাম NULL হতে পারে না। InnoDB-এ ক্লাস্টারড ইনডেক্স এই PK-র ওপর ভিত্তি করে তৈরি হয়।