Định Nghĩa SQL Foreign Key
Khóa ngoại (Foreign Key) trong SQL là một ràng buộc được sử dụng để liên kết hai bảng lại với nhau. Nó đảm bảo tính toàn vẹn của dữ liệu bằng cách giới hạn các giá trị của trường trong một bảng dựa trên các giá trị của trường trong bảng khác. Khóa ngoại dẫn xuất một cách tự nhiên từ ngữ nghĩa của cơ sở dữ liệu, nơi mà một bảng có thể có mối quan hệ với một bảng khác thông qua một cột (hoặc nhiều cột) mà thường là khóa chính (Primary Key).
Cú Pháp Khóa Ngoại
Cú pháp để định nghĩa khóa ngoại trong SQL có thể được thực hiện khi tạo bảng hoặc cập nhật bảng sau này. Dưới đây là cú pháp chung:
-- Khi tạo bảng CREATE TABLE tên_bảng ( tên_cột1 kiểu_dữ_liệu, tên_cột2 kiểu_dữ_liệu, ... CONSTRAINT tên_ràng_buộc FOREIGN KEY (tên_cột_khóa_ngoại) REFERENCES tên_bảng_khác(tên_cột_khóa_chính) ); -- Khi cập nhật bảng ALTER TABLE tên_bảng ADD CONSTRAINT tên_ràng_buộc FOREIGN KEY (tên_cột_khóa_ngoại) REFERENCES tên_bảng_khác(tên_cột_khóa_chính);
Ví Dụ Về Khóa Ngoại
Giả sử chúng ta có hai bảng là Customers (Khách hàng) và Orders (Đơn hàng). Mỗi khách hàng có thể có nhiều đơn hàng, vì vậy chúng ta sẽ thiết lập khóa ngoại từ bảng Orders đến bảng Customers.
-- Tạo bảng Customers CREATE TABLE Customers ( CustomerID INT PRIMARY KEY, CustomerName VARCHAR(100) ); -- Tạo bảng Orders với khóa ngoại liên kết đến Customers CREATE TABLE Orders ( OrderID INT PRIMARY KEY, OrderDate DATE, CustomerID INT, CONSTRAINT fk_Customer FOREIGN KEY (CustomerID) REFERENCES Customers(CustomerID) );
Trong ví dụ trên, trường CustomerID trong bảng Orders là khóa ngoại, nó liên kết đến trường CustomerID trong bảng Customers. Nghĩa là, một giá trị của CustomerID trong bảng Orders phải tồn tại trong bảng Customers.
Những Điều Cần Lưu Ý
Khi sử dụng khóa ngoại, có một số điều cần lưu ý:
- Khi xóa hoặc cập nhật bản ghi trong bảng mẹ (bảng có khóa chính), bạn cần cẩn thận với các bản ghi liên quan trong bảng con (bảng có khóa ngoại). Điều này có thể gây ra lỗi nếu dữ liệu không nhất quán.
- Có thể sử dụng các hành động CASCADE, SET NULL hoặc NO ACTION để quản lý sự thay đổi dữ liệu giữa các bảng.
Kết Luận
Khóa ngoại là một phần quan trọng trong thiết kế cơ sở dữ liệu, giúp duy trì tính toàn vẹn của dữ liệu và gia tăng khả năng liên kết giữa các bảng. Hiểu rõ về cách thức hoạt động và cách triển khai khóa ngoại sẽ giúp bạn xây dựng các ứng dụng cơ sở dữ liệu hiệu quả hơn.