Computer >> Máy Tính >  >> Lập trình >> MySQL

Bạn hiểu KEY NGOẠI LỆ là gì và chúng ta có thể sử dụng nó trong bảng MySQL như thế nào?

Thực ra NGOẠI KHÓA là một cột hoặc tổ hợp các cột có thể được sử dụng để thiết lập liên kết giữa dữ liệu trong hai bảng. Nói cách khác, chúng ta có thể nói rằng ràng buộc NGOẠI KHÓA liên quan đến hai bảng. Nó cũng được sử dụng để tăng cường tính toàn vẹn của dữ liệu vì KHÓA CHÍNH của một bảng được liên kết với KHÓA NGOÀI của các bảng khác.

Cú pháp

FOREIGN KEY [column_name] REFERENCES [table having Primary Key] ([column_name]);

Ở đây TÀI LIỆU THAM KHẢO là một từ khóa; column_name là danh sách các cột mà FOREIGN KEY sẽ được đặt; bảng có Khóa chính là tên của bảng chứa KHÓA CHÍNH; column_name là danh sách các cột mà PRIMARY KEY đã đặt.

Ví dụ

Giả sử chúng ta có hai bảng ‘Khách hàng’ và ‘Đơn hàng’. Mối quan hệ giữa cả hai bảng có thể được thiết lập bằng khóa ngoại trong bảng ‘đơn hàng’ được chỉ định bởi trường ‘Cust_Id’. Truy vấn để tạo cả hai bảng như sau -

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    |       |
+--------------+-------------+------+-----+---------+-------+
4 rows in set (0.04 sec)

Ở đây, bảng ‘Khách hàng’ được gọi là bảng Cha hoặc bảng tham chiếu và bảng ‘Đơn hàng’ được gọi là bảng con hoặc bảng tham chiếu. Một hàng trong bảng con phải chứa các giá trị tồn tại trong bảng mẹ. Ví dụ:mỗi hàng trong bảng "đơn đặt hàng" phải có một "Cust_Id" tồn tại trong bảng "khách hàng".