Foreign key là gì? Hướng dẫn tạo và xóa khóa ngoại trong SQL Server chi tiết

Những nội dung quan trọng cần nắm

 

Khái niệm: Foreign key là ràng buộc giúp liên kết dữ liệu giữa các bảng và đảm bảo tính toàn vẹn tham chiếu.

 

Lợi ích: Giúp chuẩn hóa dữ liệu, hạn chế dữ liệu sai và tăng tính nhất quán cho database.

 

Cơ chế hoạt động: Giá trị ở bảng con phải tồn tại trong bảng cha.

 

Quản lý foreign key: Có thể tạo hoặc xóa bằng CREATE TABLE hoặc ALTER TABLE.

 

Lưu ý: Cần chú ý đến kiểu dữ liệu, NULL, UNIQUE và phạm vi tham chiếu.

 

Foreign key trong SQL Server là gì?

 

Foreign key (khóa ngoại) là một ràng buộc trong Microsoft SQL Server dùng để duy trì mối quan hệ giữa các bảng trong cơ sở dữ liệu.

 

Nói đơn giản:

 

  • Bảng chứa khóa ngoại → bảng con

 

  • Bảng được tham chiếu → bảng cha

 

Giá trị trong cột foreign key của bảng con bắt buộc phải tồn tại trong cột được tham chiếu của bảng cha (thường là PRIMARY KEY hoặc UNIQUE).

 

Foreign key, Foreign key là gì?

 

Ví dụ:

 

  • Bảng orders chứa user_id

 

  • user_id phải tồn tại trong bảng users

 

Điều này giúp tránh trường hợp đơn hàng tham chiếu đến một user không tồn tại.

 

Vì sao nên dùng foreign key?

 

1. Chuẩn hóa dữ liệu

 

Foreign key giúp tách dữ liệu thành nhiều bảng liên kết với nhau thay vì lưu toàn bộ trong một bảng lớn.

 

Lợi ích:

 

  • Giảm trùng lặp dữ liệu

 

  • Database dễ mở rộng hơn

 

  • Dễ quản lý và bảo trì

 

2. Ngăn dữ liệu không hợp lệ

 

Foreign key giúp database tự kiểm tra dữ liệu khi INSERT hoặc UPDATE.

 

Ví dụ:

 

  • Không thể thêm product_id không tồn tại vào bảng order_items

 

Nhờ vậy, lỗi logic được phát hiện ngay ở tầng database thay vì chờ xử lý ở ứng dụng.

 

Foreign key hoạt động như thế nào?

 

Foreign key buộc dữ liệu ở bảng con phải khớp với dữ liệu tồn tại ở bảng cha.

 

Nếu dữ liệu không hợp lệ:

 

  • INSERT sẽ bị từ chối

 

  • UPDATE có thể bị lỗi

 

  • DELETE có thể bị chặn nếu đang có dữ liệu liên quan

 

Cơ chế này giúp tránh tạo ra orphan record — tức dữ liệu “mồ côi” không còn liên kết hợp lệ.

 

Hướng dẫn tạo foreign key

 

1. Tạo foreign key bằng CREATE TABLE

 

Bạn có thể khai báo khóa ngoại ngay khi tạo bảng:

 

Foreign key, Foreign key là gì?

 

Thông thường sẽ dùng:

 

  • CONSTRAINT

 

  • FOREIGN KEY

 

  • REFERENCES

 

Ngoài ra có thể kết hợp:

 

  • ON DELETE CASCADE

 

  • ON UPDATE CASCADE

 

  • SET NULL

 

  • NO ACTION

 

để kiểm soát hành vi khi dữ liệu ở bảng cha thay đổi.

 

2. Tạo foreign key bằng ALTER TABLE

 

Nếu bảng đã tồn tại, bạn có thể thêm khóa ngoại sau:

 

Foreign key, Foreign key là gì?

 

Cú pháp phổ biến:


 
ALTER TABLE table_name

ADD CONSTRAINT fk_name

FOREIGN KEY (column_name)

REFERENCES parent_table(parent_column);
 

Cách này phù hợp khi cần bổ sung ràng buộc cho database đang hoạt động.

 

Hướng dẫn xóa foreign key

 

Để xóa khóa ngoại, dùng:


 
ALTER TABLE table_name

DROP CONSTRAINT fk_name;
 

Foreign key, Foreign key là gì?

 

Việc xóa foreign key thường được dùng trước khi:

 

  • Đổi cấu trúc cột

 

  • Xóa bảng

 

  • Định nghĩa lại constraint

 

Những lưu ý quan trọng khi dùng foreign key

 

Foreign key có thể tham chiếu UNIQUE

 

Foreign key không bắt buộc phải tham chiếu PRIMARY KEY mà có thể tham chiếu cột UNIQUE.

 

Giá trị không NULL phải tồn tại

 

Nếu cột foreign key chứa giá trị khác NULL thì giá trị đó bắt buộc phải tồn tại ở bảng cha.

 

Nên dùng NOT NULL với composite key

 

Với foreign key nhiều cột, nên đặt NOT NULL để đảm bảo tính toàn vẹn đầy đủ.

 

Chỉ hỗ trợ trong cùng database

 

Foreign key chỉ hoạt động giữa các bảng trong cùng database trên cùng server.

 

Có thể tự tham chiếu

 

Một bảng hoàn toàn có thể tham chiếu chính nó để tạo cấu trúc phân cấp.

 

Ví dụ:

 

  • Danh mục cha – con

 

  • Cây phòng ban

 

Kiểu dữ liệu phải tương thích

 

Các cột tham chiếu cần:

 

  • Cùng kiểu dữ liệu

 

  • Hoặc tương thích với nhau

 

Nếu không, SQL Server sẽ từ chối tạo constraint.

 HỖ TRỢ TRỰC TUYẾN