কম্পিউটার টিউটোরিয়াল

MySQL-এ ফরেন কি (Foreign Key) এর বেসিক ধারণা

ফরেন কি: টেবিল間 আংশিক সম্পর্ক বজায় রাখা

Foreign Key একটি কনস্ট্রেইন্ট যা দুটি টেবিলের মধ্যে রেফারেনশিয়াল ইন্টিগ্রিটি নিশ্চিত করে। ফরেন কি ধারণকারী টেবিল = Child Table, রেফারেন্স দেওয়া টেবিল = Parent Table।

চাইল্ড ও প্যারেন্ট টেবিল তৈরি

mysql> CREATE TABLE StudentEnrollment (
    -> StudentId INT, StudentName VARCHAR(200), StudentFKPK INT
    -> );
mysql> CREATE TABLE College (
    -> StudentFKPK INT, CourseId INT, CourseName VARCHAR(200), CollegeName VARCHAR(200),
    -> PRIMARY KEY (StudentFKPK)
    -> );

ফরেন কি যোগ করা (ALTER TABLE)

mysql> ALTER TABLE StudentEnrollment
    -> ADD CONSTRAINT StudCollegeConst
    -> FOREIGN KEY (StudentFKPK) REFERENCES College(StudentFKPK);
Query OK, 0 rows affected (1.78 sec)

ফরেন কি যাচাই করা

mysql> SELECT TABLE_NAME, COLUMN_NAME, CONSTRAINT_NAME,
    -> REFERENCED_TABLE_NAME, REFERENCED_COLUMN_NAME
    -> FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
    -> WHERE REFERENCED_TABLE_NAME = 'College';

আউটপুট:

+-------------------+-------------+------------------+-----------------------+------------------------+
| TABLE_NAME        | COLUMN_NAME | CONSTRAINT_NAME  | REFERENCED_TABLE_NAME | REFERENCED_COLUMN_NAME |
+-------------------+-------------+------------------+-----------------------+------------------------+
| StudentEnrollment | StudentFKPK | StudCollegeConst | College               | StudentFKPK            |
+-------------------+-------------+------------------+-----------------------+------------------------+

মहত্ব: প্যারেন্ট টেবিলে মিলে যাওয়া প্রাইমারি কী না থাকলে চাইল্ড টেবিলে ইনসার্ট/আপডেট রিজেক্ট হবে (Error 1452)।

  1. MySQL ডেটাবেসে ফরেন কী আইডেন্টিফাই করা

  2. MySQL-এ রেকর্ড ডিলিট করার পর কী রি-অর্ডার (Reorder) করা

  3. MySQL-এ প্রাইমারি কীকে অন্য টেবিলে ফরেন কী হিসেবে রেফার করা

  4. MySQL-এ ফরেন কি ব্যবহার (Using Foreign Keys in MySQL)