FOREIGN KEY एक कॉलम या कॉलम समूह है जो दो टेबल के डेटा के बीच लिंक बनाता है। यह दो टेबल को संबंधित करता है और डेटा इंटीग्रिटी बढ़ाता है क्योंकि एक टेबल की PRIMARY KEY दूसरी टेबल की FOREIGN KEY से जुड़ी होती है।
सिंटैक्स
FOREIGN KEY [column_name] REFERENCES [parent_table] ([parent_column]);
REFERENCES- कीवर्डcolumn_name- चाइल्ड टेबल में FK कॉलमparent_table- पैरेंट टेबल नाम (जिसमें PK है)parent_column- पैरेंट टेबल में PK कॉलम
उदाहरण: Customer और Orders टेबल बनाना
mysql> CREATE TABLE Customer(
Cust_ID INT PRIMARY KEY,
First_name VARCHAR(20),
Last_name VARCHAR(20),
City VARCHAR(10)
);
Query OK, 0 rows affected (0.13 sec)
mysql> CREATE TABLE Orders(
Order_Id INT PRIMARY KEY,
Product_Name VARCHAR(25),
Orderdate DATE,
Cust_ID INT,
FOREIGN KEY(Cust_ID) REFERENCES Customer(Cust_id)
);
Query OK, 0 rows affected (0.13 sec)
mysql> DESCRIBE Orders;
+--------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------------+-------------+------+-----+---------+-------+
| Order_Id | int(11) | NO | PRI | NULL | |
| Product_Name | varchar(25) | YES | | NULL | |
| Orderdate | date | YES | | NULL | |
| Cust_ID | int(11) | YES | MUL | NULL | | -- MUL = FK
+--------------+-------------+------+-----+---------+-------+
टर्मिनोलॉजी
| शब्द | अर्थ | उदाहरण |
|---|---|---|
| Parent Table / Referenced Table | जिसे रेफरेंस किया जाता है | Customer |
| Child Table / Referencing Table | जिसमें FK होती है | Orders |
| Referential Integrity | चाइल्ड का मान पैरेंट में मौजूद होना चाहिए | Orders.Cust_ID ∈ Customer.Cust_ID |
नियम
- चाइल्ड पंक्ति का FK मान पैरेंट में मौजूद होना चाहिए <ली>पैरेंट पंक्ति डिलीट नहीं कर सकते अगर चाइल्ड रेफरेंस करती है (बिना CASCADE)
- दोनों टेबल InnoDB होनी चाहिए
- FK कॉलम पर ऑटोमैटिक इंडेक्स बनता है (MUL)
नामित कंस्ट्रेंट
CREATE TABLE Orders(
...
CONSTRAINT fk_orders_customer
FOREIGN KEY(Cust_ID) REFERENCES Customer(Cust_id)
);