Khoá học: Thiết lập dự án Wordpress

Nếu bạn đang tìm kiếm một cách nhanh chóng và hiệu quả để thiết lập một trang web cá nhân hoặc doanh nghiệp của mình, hãy bắt đầu với WordPress. Được coi là nền tảng quản lý nội dung (CMS) phổ biến nhất trên thế giới, WordPress cho phép bạn dễ dàng tạo ra một [...]

MySQL Bài 34: Ràng buộc FOREIGN KEY (khóa ngoại) trong MySQL

1) Chức năng của ràng buộc FOREIGN KEY

– Trong hệ quản trị cơ sở dữ liệu MySQL, ràng buộc FOREIGN KEY (khóa ngoại) được dùng để xây dựng một mối liên kết giữa hai cái bảng nhằm đảm bảo tính “toàn vẹn dữ liệu” của các bảng (khi trong hai cái bảng đó có một cái bảng tham chiếu đến dữ liệu của cái bảng còn lại)

Ví dụ:

– Tôi có hai cái bảng Customers & Orders lần lượt như bên dưới:

Bảng Customers lưu trữ thông tin của các khách hàng.

IDNameAddressCity
1Nguyễn Thành Nhân63 Hoàng Văn ThụCần Thơ
2Dương Văn Gánh16B Nguyễn Văn CừSóc Trăng
3Trần Thị Huỳnh Như365A Trần Quang DiệuVĩnh Long

Bảng Orders lưu trữ thông tin về các đơn đặt hàng của những khách hàng trong cái bảng Customers.

IDOrderDateCustomerID
12019-08-051
22019-09-172
32019-10-222
42019-11-083

– Cột CustomerID trong bảng Orders tham chiếu dữ liệu từ cột ID trong cái bảng Customers, nó cho chúng ta biết những khách hàng nào đã đặt những đơn hàng nào (nếu chúng ta thêm vào cái bảng Order những đơn hàng mà ID của các khách hàng không tồn tại thì những đơn hàng đó sẽ trở nên không hợp lệ)

– Để tránh việc bảng Orders bị chứa những đơn hàng không hợp lệ thì chúng ta cần phải thiết lập ràng buộc FOREIGN KEY cho cột CustomerID, ràng buộc này đảm bảo việc ngăn chặn những hành động không hợp lệ, điển hình như:

  • Không cho phép thêm những đơn hàng mà ID của khách hàng không tồn tại trong bảng Customers.
  • Không cho phép xóa những khách hàng mà ID của họ có tồn tại trong bảng Orders.
  • Không cho phép xóa bảng Customers khi bảng Orders vẫn còn đang tồn tại.
  • . . . .

– Trong hai cái bảng, bảng chứa ràng buộc FOREIGN KEY (khóa ngoại) được gọi là bảng con, còn bảng chứa khóa ứng viên thì được gọi là bảng tham chiếu hoặc bảng cha (điển hình như trong ví dụ phía trên, bảng Orders được gọi là bảng con, bảng Customers được gọi là bảng tham chiếu)

– Để tạo một ràng buộc FOREIGN KEY thì chúng ta sử dụng cú pháp như sau:

CONSTRAINT tên_ràng_buộc FOREIGN KEY (column1) REFERENCES table_name(column2)

– Trong đó:

  • column1 là tên của cái cột (bên trong bảng con) mà các bạn muốn thiết lập ràng buộc FOREIGN KEY.
  • table_name là tên của cái bảng tham chiếu.
  • column2 là tên của cái cột (bên trong bảng tham chiếu) mà cột column1 tham chiếu đến, ngoài ra column2 còn phải là khóa chính (PRIMARY KEY) của cái bảng tham chiếu.
Ví dụ:

– Dưới đây là đoạn mã dùng để tạo hai cái bảng Customers & Orders giống như trong ví dụ phía trên.

CREATE TABLE Customers(
	ID INT PRIMARY KEY,
	Name VARCHAR(255),
	Address VARCHAR(255),
	City VARCHAR(255)
);
CREATE TABLE Orders(
	ID INT PRIMARY KEY,
	OrderDate DATE,
	CustomerID INT,
	CONSTRAINT lien_ket_01 FOREIGN KEY (CustomerID) REFERENCES Customers(ID)
);

2) Thêm ràng buộc FOREIGN KEY (khi bảng đã được tạo)

– Đối với trường hợp bảng đã được tạo trước, nhưng do quên thiết lập ràng buộc FOREIGN KEY cho cột nên bây giờ các bạn muốn bổ sung, để làm được điều đó thì sử dụng lệnh chỉnh sửa bảng như bên dưới.

ALTER TABLE table1
ADD CONSTRAINT tên_ràng_buộc FOREIGN KEY (column1) REFERENCES table2(column2);

– Ví dụ:

ALTER TABLE Orders
ADD CONSTRAINT lien_ket_01 FOREIGN KEY (CustomerID) REFERENCES Customers(ID);

3) Cách xóa ràng buộc FOREIGN KEY

– Dưới đây là cú pháp dùng để xóa một ràng buộc FOREIGN KEY.

ALTER TABLE table_name DROP FOREIGN KEY tên_ràng_buộc;

– Ví dụ, để xóa ràng buộc FOREIGN KEY có tên là lien_ket_01 (trên bảng Orders) thì tôi sử dụng câu lệnh sau:

ALTER TABLE Orders DROP FOREIGN KEY lien_ket_01;

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *