Cách tạo khóa ngoài trong Microsoft SQL Server

Một trong những khái niệm quan trọng nhất trong cơ sở dữ liệu là tạo ra các mối quan hệ giữa các bảng cơ sở dữ liệu. Những mối quan hệ này cung cấp một cơ chế để liên kết dữ liệu được lưu trữ trong nhiều bảng và truy xuất nó theo cách hiệu quả. Để tạo liên kết giữa hai bảng, bạn phải chỉ định khóa ngoài trong một bảng tham chiếu đến cột trong bảng khác.

Bảng cơ sở dữ liệu và mối quan hệ

Bạn có thể đã biết rằng cơ sở dữ liệu chỉ đơn giản là một loạt các bảng , tương tự như những gì bạn có thể đã sử dụng trong một chương trình bảng tính , chẳng hạn như Microsoft Excel. Trong thực tế, bạn thậm chí có thể chuyển đổi một bảng tính Excel sang cơ sở dữ liệu. Tuy nhiên, khi cơ sở dữ liệu phân tán từ bảng tính, là khi xây dựng mối quan hệ mạnh mẽ giữa các bảng.

Hãy xem xét, ví dụ, một cơ sở dữ liệu được sử dụng bởi một công ty để theo dõi thông tin nguồn nhân lực. Cơ sở dữ liệu đó có thể có một bảng gọi là Nhân viên có chứa các thông tin sau đây cho mỗi thành viên của nhân viên công ty:

Trong ví dụ này, ID nhân viên là một số nguyên được tạo duy nhất được gán cho mỗi nhân viên khi chúng được thêm vào cơ sở dữ liệu. ID vị trí là mã công việc được sử dụng để tham chiếu vị trí của nhân viên trong công ty. Trong chương trình này, một nhân viên chỉ có thể có một vị trí, nhưng nhiều nhân viên (hoặc không) có thể điền vào từng vị trí. Ví dụ: bạn có thể có hàng trăm nhân viên có vị trí "Nhân viên thu ngân".

Cơ sở dữ liệu cũng có thể chứa một bảng được gọi là Vị trí với các thông tin bổ sung sau đây về từng vị trí:

Trường ID vị trí trong bảng này tương tự như trường ID nhân viên trong bảng Nhân viên - nó là một số nguyên được tạo duy nhất được tạo khi vị trí được thêm vào cơ sở dữ liệu.

Khi chúng tôi đi đến một danh sách các nhân viên từ cơ sở dữ liệu, nó sẽ là tự nhiên để yêu cầu tên của mỗi người và danh hiệu của họ. Tuy nhiên, thông tin này được lưu trữ trong nhiều bảng cơ sở dữ liệu, do đó, nó chỉ có thể được truy xuất bằng cách sử dụng truy vấn JOIN yêu cầu một mối quan hệ hiện có giữa các bảng.

Khi bạn nhìn vào cấu trúc của các bảng, trường xác định mối quan hệ có lẽ là hiển nhiên - trường ID vị trí. Mỗi nhân viên chỉ có thể có một vị trí và vị trí đó được xác định bằng cách bao gồm ID vị trí từ mục tương ứng của bảng Vị trí. Ngoài việc là khóa chính cho bảng Positions, trong ví dụ này, trường ID vị trí cũng là khóa ngoài từ bảng Employees đến bảng Positions. Cơ sở dữ liệu sau đó có thể sử dụng trường này để tương quan thông tin từ nhiều bảng và đảm bảo rằng bất kỳ thay đổi hoặc bổ sung nào cho cơ sở dữ liệu tiếp tục thực thi tính toàn vẹn tham chiếu .

Khi bạn đã xác định khóa ngoài, bạn có thể tiếp tục và lấy thông tin mong muốn từ cơ sở dữ liệu bằng truy vấn sau:

SELECT FirstName, LastName, Title FROM Nhân viên INNER JOIN Positions ON Employees.PositionID = Positions.PositionID

Tạo khóa ngoài trong SQL Server

Về mặt kỹ thuật, bạn không cần phải xác định mối quan hệ một cách rõ ràng để có thể thực hiện các truy vấn như ở trên. Tuy nhiên, nếu bạn định nghĩa một cách rõ ràng mối quan hệ bằng cách sử dụng ràng buộc khóa ngoài, cơ sở dữ liệu sẽ có thể thực hiện một số công việc vệ sinh cho bạn:

Đây là cách bạn sẽ tạo khóa ngoài trong SQL Server:

ALTER TABLE Nhân viên THÊM KEY NGOÀI (PositionID) TÀI LIỆU THAM KHẢO Vị trí (PositionID)

Bạn cũng có thể tạo khóa ngoài khi tạo bảng bằng cách thêm mệnh đề:

CÁC TÀI LIỆU THAM KHẢO CHÍNH NGOÀI Vị trí (PositionID)

đến cuối của định nghĩa cột cho cột khóa ngoài.