Cách tạo ràng buộc khóa chính, khóa ngoại trong SQL

Ràng Buộc Khoá Ngoại

Khoá ngoại (foreign key) là từ được dùng để kết nối hai bảng lại với nhau.

Khoá ngoại là một trường ( hoặc nhiều trường ) trong một bảng tham chiếu tới khoá chính của bảng khác.

Bảng chứa khóa ngoại được gọi là bảng con và bảng chứa khóa ứng viên được gọi là bảng được tham chiếu hoặc bảng cha.

Theo dõi hai bảng sau:

Bảng Person:| PersonID | LastName | FirstName   | Age | |———-|———-|————-|—–| | 1        | Trang    | Nguyễn Kiều | 15  | | 2        | Kiệt     | Võ Văn      | 20  | | 3        | Thảo     | Đào Mai     | 24  |

Bảng Orders:| OrderID | OrderNumber | PersonID | |———|————-|———-| | 1       | 3456        | 2        | | 2       | 3457        | 1        | | 3       | 4356        | 3        |

Chú ý rằng cột PersonID trong bảng Orders trỏ đến cột PersonID trong bảng Person.

Cột PersonID trong bảng Person là khóa chính trong bảng Person.

Cột PersonIDtrong bảng Orders là khóa ngoại trong bảng Orders.

Ràng buộc khoá ngoại được sử dụng để ngăn chặn các hành động có thể phá hủy các liên kết giữa các bảng.

Ràng buộc khoá ngoại cũng ngăn không cho dữ liệu không hợp lệ được chèn vào cột khóa ngoại, vì nó phải là một trong các giá trị chứa trong bảng mà nó trỏ đến.

Tạo Khoá Ngoại Cùng Lúc Với Tạo Bảng

Theo dõi ví dụ sau đây tạo khoá ngoại trên cột PersonID khi bảng Orders được tạo.

Trên MYSQL:CREATE TABLE Orders ( OrderID int NOT NULL, OrderNumber int NOT NULL, PersonID int, PRIMARY KEY (OrderID), FOREIGN KEY (PersonID) REFERENCES Persons(PersonID) );

Trên SQL Server / Oracle / MS Access:CREATE TABLE Orders ( OrderID int NOT NULL PRIMARY KEY, OrderNumber int NOT NULL, PersonID int FOREIGN KEY REFERENCES Persons(PersonID) );

Để cho phép đặt tên cho một ràng buộc khoá ngoại, và để xác định ràng buộc khoá ngoại trên nhiều cột, sử dụng cú pháp SQL sau:

Trên MySQL / SQL Server / Oracle / MS Access:CREATE TABLE Orders ( OrderID int NOT NULL, OrderNumber int NOT NULL, PersonID int, PRIMARY KEY (OrderID), CONSTRAINT FK_PersonOrder FOREIGN KEY (PersonID) REFERENCES Persons(PersonID) );

Tạo Khoá Ngoại Sử Dụng ALTER TABLE

Để tạo ràng buộc khoá ngoại trên cột PersonID  cho bảng Orders đã có trong cơ sở dữ liệu, ta dùng câu lệnh SQL sau:

Trên MySQL / SQL Server / Oracle / MS Access:ALTER TABLE Orders ADD FOREIGN KEY (PersonID) REFERENCES Persons(PersonID);

Để cho phép đặt tên cho một ràng buộc khoá ngoại, và để xác định ràng buộc khoá ngoại trên nhiều cột, sử dụng cú pháp SQL sau:

Trên MySQL / SQL Server / Oracle / MS Access:ALTER TABLE Orders ADD CONSTRAINT FK_PersonOrder FOREIGN KEY (PersonID) REFERENCES Persons(PersonID);

Xoá Ràng Buộc Khoá Ngoại

Để xoá ràng buộc khoá ngoại ta sử dụng câu lệnh SQL sau:

Trên MYSQL:ALTER TABLE Orders DROP FOREIGN KEY FK_PersonOrder;

Trên SQL Server / Oracle / MS Access:ALTER TABLE Orders DROP CONSTRAINT FK_PersonOrder;

Video liên quan