ফরেন কি ব্যবহার করে টেবিলগুলোর মধ্যে সম্পর্ক স্থাপন করা হয়। ফরেন কি সম্পর্ক এক-দ-এক (one-to-one) বা এক-দ-বহু (one-to-many) হতে পারে। একটি ফরেন কি অন্য টেবিলের অন্য একটি ফিল্ডের সাথে মিলে থাকে।
- এক-দ-এক সম্পর্ক (One to One) - একটি টেবিলের এক রেকর্ড অন্য টেবিলের এক রেকর্ডের সাথে লিঙ্ক থাকবে।
- এক-দ-বহু সম্পর্ক (One to Many) - একটি রেকর্ড অন্য টেবিলের একাধিক রেকর্ডের সাথে লিঙ্ক থাকবে।
উদাহরণ
প্রথমে একটি টেবিল তৈরি করব। CREATE কমান্ড ব্যবহার করে টেবিল তৈরি করা হয়।
mysql> create table tblF -> ( -> id int, -> FirstName varchar(100), -> FK_PK int -> ); Query OK, 0 rows affected (0.57 sec)
দ্বিতীয় টেবিল তৈরি:
mysql> create table tblP -> ( -> FK_PK int, -> LastName varchar(100), -> primary key(FK_PK) -> ); Query OK, 0 rows affected (0.94 sec)
ফরেন কি তৈরি করার সিনট্যাক্স
mysql> ALTER table tblF add constraint ConstFK foreign key(FK_PK) references tblP(FK_PK); Query OK, 0 rows affected (2.17 sec) Records: 0 Duplicates: 0 Warnings: 0
DESC কমান্ড দিয়ে ফরেন কি তৈরি হয়েছে কিনা চেক করুন:
mysql> DESC tblF;
আউটপুট:
+-----------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-----------+--------------+------+-----+---------+-------+ | id | int(11) | YES | | NULL | | | FirstName | varchar(100) | YES | | NULL | | | FK_PK | int(11) | YES | MUL | NULL | | +-----------+--------------+------+-----+---------+-------+ 3 rows in set (0.05 sec)
Key কলামে MUL দেখাচ্ছে যে FK_PK একটি ফরেন কি (নন-ইউনিক ইন্ডেক্স)।