Ràng buộc khóa ngoại (FOREIGN KEY constraint) trong SQL được sử dụng để thiết lập mối quan hệ giữa các bảng trong cơ sở dữ liệu. Nó đảm bảo tính toàn vẹn của dữ liệu bằng cách tham chiếu một cột hoặc nhóm các cột trong một bảng (bảng con) đến khóa chính của một bảng khác (bảng cha).
Có hai cách để tạo ràng buộc FOREIGN KEY:
- Thêm ràng buộc khi tạo bảng:
CREATE TABLE <Ten bang con> ( <Cot>, <Cot>, FOREIGN KEY (<Cot ngoai>, <Cot ngoai 1>, ...) REFERENCES <Ten bang cha> (<Cot chinh>, <Cot chinh 1>, ...) <Cot khac>, );
- Thêm ràng buộc sau khi tạo bảng:
ALTER TABLE <Ten bang con> ADD FOREIGN KEY (<Cot ngoai>, <Cot ngoai 1>, ...) REFERENCES <Ten bang cha> (<Cot chinh>, <Cot chinh 1>, ...);
Trong đó:
- <Ten bang con>: Tên của bảng con.
- <Cot>: Các cột trong bảng con.
- <Cot ngoai>: Tên của cột (hoặc nhóm các cột) trong bảng con tham chiếu đến khóa chính của bảng cha.
- <Ten bang cha>: Tên của bảng cha chứa khóa chính.
- <Cot chinh>: Tên của cột (hoặc nhóm các cột) tạo thành khóa chính của bảng cha.
Một số lưu ý:
- Kiểu dữ liệu và thứ tự sắp xếp của các cột trong FOREIGN KEY phải tương thích với các cột trong REFERENCES.
- Bảng cha phải tồn tại trước khi tạo ràng buộc khóa ngoại trên bảng con.
- Ràng buộc FOREIGN KEY có thể tham chiếu đến một khóa chính hoặc một khóa duy nhất (UNIQUE) trong bảng cha.
- Xoá FOREIGN KEY Constraint:
--Mysql ALTER TABLE Orders DROP FOREIGN KEY FK_PersonOrder; --SQL Server / Oracle / MS Access: ALTER TABLE Orders DROP CONSTRAINT FK_PersonOrder;
Ví dụ:
CREATE TABLE Orders ( OrderID INT PRIMARY KEY, CustomerID INT, FOREIGN KEY (CustomerID) REFERENCES Customers(CustomerID) );
Trong ví dụ này, cột CustomerID trong bảng Orders tham chiếu đến khóa chính CustomerID trong bảng Customers. Điều này đảm bảo rằng mỗi đơn hàng (Order) phải được liên kết với một khách hàng (Customer) hợp lệ.