Khóa ngoại trong cơ sở dữ liệu SQL là gì?

Khóa ngoại trong cơ sở dữ liệu SQL là gì?

Các khóa ngoại cho phép người quản trị cơ sở dữ liệu dễ dàng xác định các kết nối khác nhau tồn tại trong hệ quản trị cơ sở dữ liệu SQL.





SQL thực hiện các phép toán trên dữ liệu trong hệ quản trị cơ sở dữ liệu. Các cơ sở dữ liệu này chứa các bảng khác nhau mà mỗi bảng lưu trữ dữ liệu trên một thực thể cụ thể. Nếu bạn có cơ sở dữ liệu cho thuê ô tô, một thực thể (hoặc bảng) trong cơ sở dữ liệu đó sẽ là khách hàng (sẽ lưu trữ tất cả dữ liệu cá nhân của mỗi khách hàng).





Các bảng cơ sở dữ liệu này chứa các hàng và cột, trong đó mỗi hàng lưu trữ một bản ghi và mỗi cột chứa dữ liệu thuộc tính cụ thể.





Trong hệ quản trị cơ sở dữ liệu, mỗi bản ghi (hoặc hàng) phải là duy nhất.

Các phím chính

Mặc dù quy định là mỗi bản ghi trong một bảng phải khác biệt, nhưng điều này không phải lúc nào cũng đúng. Tiếp tục với ví dụ về cơ sở dữ liệu cho thuê xe hơi, nếu cơ sở dữ liệu chứa hai khách hàng mà mỗi người có tên là John Brown, thì John Brown có thể sẽ trả lại một chiếc Mercedes-Benz mà anh ta không thuê.



Tạo khóa chính sẽ giảm thiểu rủi ro này. Trong hệ quản trị cơ sở dữ liệu SQL, khóa chính là một mã định danh duy nhất để phân biệt bản ghi này với bản ghi khác.

tại sao hbo max không hoạt động

Do đó, mọi bản ghi trong hệ quản trị cơ sở dữ liệu SQL nên có một khóa chính.





Sử dụng các khóa chính trong cơ sở dữ liệu

Để bao gồm các khóa chính trong hệ quản trị cơ sở dữ liệu bằng SQL, bạn có thể chỉ cần thêm nó như một thuộc tính bình thường khi tạo một bảng mới. Vì vậy, bảng khách hàng sẽ chứa bốn thuộc tính (hoặc cột):

  • CarOwnerID (sẽ lưu trữ khóa chính)
  • Tên đầu tiên
  • Họ
  • Số điện thoại

Có liên quan: Cách tạo bảng trong SQL





Giờ đây, mọi hồ sơ khách hàng đi vào cơ sở dữ liệu sẽ có một số nhận dạng duy nhất, cũng như họ, tên và số điện thoại. Số điện thoại không đủ duy nhất để làm khóa chính, bởi vì mặc dù số này là duy nhất đối với một người tại một thời điểm, nhưng một người có thể dễ dàng thay đổi số của họ, có nghĩa là bây giờ nó sẽ thuộc về người khác.

Bản ghi có ví dụ về khóa chính

/* creates a new record in the customers table */
INSERT INTO Customers VALUES
('0004',
'John',
'Brown',
'111-999-5555');

Mã SQL ở trên sẽ thêm một bản ghi mới vào bản ghi đã tồn tại trước đó Khách hàng bàn. Bảng dưới đây cho thấy bảng khách hàng mới với hai hồ sơ John Brown.

Khóa ngoại

Bây giờ bạn có chìa khóa chính giúp phân biệt duy nhất một người thuê xe này với người thuê xe khác. Vấn đề duy nhất là, trong cơ sở dữ liệu, không có mối liên hệ thực sự nào giữa John Brown và chiếc xe mà anh ta thuê.

Do đó, khả năng mắc sai sót vẫn tồn tại. Đây là lúc các phím ngoại phát huy tác dụng. Việc sử dụng khóa chính để giải quyết vấn đề không rõ quyền sở hữu chỉ có thể đạt được nếu khóa chính tăng gấp đôi như một khóa ngoại.

Khóa ngoại là gì?

Trong hệ quản trị cơ sở dữ liệu SQL, khóa ngoại là một mã định danh duy nhất hoặc một tổ hợp các mã định danh duy nhất kết nối hai hoặc nhiều bảng trong cơ sở dữ liệu.

Trong số bốn hệ quản trị cơ sở dữ liệu SQL đang tồn tại, hệ quản trị cơ sở dữ liệu quan hệ là hệ thống phổ biến nhất. Khi quyết định bảng nào trong cơ sở dữ liệu quan hệ nên có khóa ngoại, trước tiên bạn nên xác định bảng nào là chủ đề và bảng nào là đối tượng trong mối quan hệ của chúng.

Quay trở lại cơ sở dữ liệu cho thuê ô tô, để kết nối từng khách hàng với đúng chiếc ô tô, bạn cần hiểu rằng khách hàng (chủ thể) thuê ô tô (đối tượng). Vì vậy, chìa khóa nước ngoài nên có trong bảng ô tô.

Mã SQL tạo bảng có khóa ngoại hơi khác so với quy chuẩn.

Tạo bảng bằng ví dụ khóa ngoại

/* creates a new cars table in the car rental database */
CREATE TABLE Cars
(
LicenseNumber varchar(30) NOT NULL PRIMARY KEY,
CarType varchar(30) NOT NULL,
CustomerID varchar(30) FOREIGN KEY REFERENCES Customers(CustomerID)
);

Như bạn có thể thấy trong đoạn mã trên, khóa ngoại phải được xác định rõ ràng như vậy, cùng với tham chiếu đến khóa chính đang được kết nối với bảng mới.

cách lấy nước ra khỏi cổng sạc iphone

Có liên quan: Bảng lừa đảo câu lệnh SQL cơ bản cho người mới bắt đầu

Để thêm bản ghi vào bảng mới, bạn cần đảm bảo rằng giá trị trong trường khóa ngoài khớp với giá trị trong trường khóa chính của bảng gốc.

Thêm bản ghi với ví dụ khóa ngoại

/* creates a new record in the cars table */
INSERT INTO Cars VALUES
('100012',
'Mercedes-Benz',
'0004');

Đoạn mã trên tạo một bản ghi mới trong Ô tô bảng, tạo ra kết quả sau.

Bàn ô tô

Từ bảng trên, bạn có thể xác định đúng John Brown thuê một chiếc Mercedes-Benz bằng chìa khóa ngoại trong hồ sơ.

Phím nước ngoài trước

Có hai cách khác để sử dụng khóa ngoại trong cơ sở dữ liệu.

Nếu bạn nhìn lại định nghĩa về khóa ngoại ở trên, bạn sẽ thấy rằng khóa ngoại có thể là một số nhận dạng duy nhất hoặc kết hợp các số nhận dạng duy nhất.

Quay lại ví dụ về cơ sở dữ liệu cho thuê ô tô, bạn sẽ thấy rằng việc tạo một bản ghi mới (của cùng một chiếc ô tô) mỗi khi khách hàng thuê chiếc ô tô đó, sẽ làm mất đi mục đích của Ô tô bàn. Nếu những chiếc xe được rao bán và được bán cho một khách hàng duy nhất một lần, thì cơ sở dữ liệu hiện có là hoàn hảo; nhưng do xe cho thuê nên có một cách tốt hơn để trình bày dữ liệu này.

Phím tổng hợp

Một khóa tổng hợp có hai hoặc nhiều số nhận dạng duy nhất. Trong cơ sở dữ liệu quan hệ, sẽ có những trường hợp khi việc sử dụng một khóa ngoại duy nhất sẽ không thể hiện đầy đủ các mối quan hệ tồn tại trong cơ sở dữ liệu đó.

Trong ví dụ cho thuê xe hơi, cách tiếp cận thực tế nhất là tạo một bảng mới lưu trữ chi tiết tiền thuê. Để thông tin trong bảng thuê xe hữu ích, nó phải kết nối với cả bảng khách hàng và nhà xe.

Tạo bảng với các phím ngoại tổng hợp

/* creates a CarRental table in the car rental database */
CREATE TABLE CarRental
(
DateRented DATE NOT NULL,
LicenseNumber varchar(30) NOT NULL FOREIGN KEY REFERENCES Cars(LicenseNumber),
CustomerID varchar(30) NOT NULL FOREIGN KEY REFERENCES Customers(CustomerID),
PRIMARY KEY (DateRented, LicenseNumber, CustomerID)
);

Đoạn mã trên mô tả một điểm quan trọng; mặc dù một bảng trong cơ sở dữ liệu SQL có thể có nhiều hơn một khóa ngoại, nó chỉ có thể có một khóa chính duy nhất. Điều này là do chỉ nên có một cách duy nhất để xác định một bản ghi.

Cần kết hợp cả ba thuộc tính trong bảng để có một khóa duy nhất. Một khách hàng có thể thuê nhiều xe trong cùng một ngày (vì vậy ID khách hàngDateRented không phải là một sự kết hợp tốt) nhiều khách hàng cũng có thể thuê cùng một chiếc xe trong cùng một ngày (vì vậy Số giấy phépDateRented không phải là một sự kết hợp tốt).

Tuy nhiên, việc tạo ra một chiếc chìa khóa tổng hợp cho biết khách hàng nào, xe gì và vào ngày nào đã tạo nên một chiếc chìa khóa độc đáo tuyệt vời. Khóa duy nhất này đại diện cho cả khóa ngoại tổng hợp và khóa chính tổng hợp.

cách di chuyển các chương trình đã cài đặt sang ổ đĩa khác

Khóa chính nước ngoài

Ồ có, khóa chính nước ngoài thoát. Mặc dù không có tên chính thức cho nó, nhưng khóa ngoại cũng có thể là khóa chính trong cùng một bảng. Điều này xảy ra khi bạn tạo một bảng mới có chứa dữ liệu chuyên biệt về một thực thể hiện có (hoặc bản ghi trong một bảng khác).

Giả sử Fred (người làm việc tại công ty cho thuê xe hơi) có trong cơ sở dữ liệu của công ty dưới bảng nhân viên. Sau một vài năm, anh ấy trở thành giám sát viên và được thêm vào bảng giám sát.

Fred vẫn là một nhân viên và sẽ vẫn có cùng số id. Vì vậy, id nhân viên của Fred hiện có trong bảng người giám sát dưới dạng khóa ngoại, khóa này cũng sẽ trở thành khóa chính trong bảng đó (vì không có ý nghĩa gì khi tạo số id mới cho Fred khi anh ấy là người giám sát).

Bây giờ bạn có thể xác định khóa ngoại trong cơ sở dữ liệu SQL

Các khóa ngoại kết nối các bảng khác nhau trong cơ sở dữ liệu SQL. Từ bài viết này, bạn có thể thấy khóa ngoại là gì, nó hoạt động như thế nào và tại sao việc có chúng trong cơ sở dữ liệu lại quan trọng. Bạn cũng hiểu các dạng khóa ngoại cơ bản, và thậm chí phức tạp hơn.

Nếu bạn cho rằng khóa ngoại là thú vị, bạn sẽ có một ngày thực địa khi bắt đầu sử dụng dự án và các thao tác lựa chọn để truy vấn cơ sở dữ liệu SQL của mình.

Đăng lại Đăng lại tiếng riu ríu E-mail Tìm hiểu cách sử dụng dự án và các hoạt động lựa chọn trong SQL

Nắm bắt cơ sở dữ liệu quan hệ SQL bằng cách hiểu các hoạt động Dự án và Lựa chọn với các ví dụ này.

Đọc tiếp
Chủ đề liên quan
  • Lập trình
  • Lập trình
  • SQL
  • cơ sở dữ liệu
Giới thiệu về tác giả Kadeisha Kean(21 bài báo đã xuất bản)

Kadeisha Kean là Nhà phát triển Phần mềm Full-Stack và Người viết Kỹ thuật / Công nghệ. Cô ấy có khả năng khác biệt để đơn giản hóa một số khái niệm công nghệ phức tạp nhất; sản xuất vật liệu mà bất kỳ người mới làm quen với công nghệ nào cũng có thể dễ dàng hiểu được. Cô ấy đam mê viết lách, phát triển phần mềm thú vị và đi du lịch thế giới (thông qua phim tài liệu).

Xem thêm từ Kadeisha Kean

Theo dõi bản tin của chúng tôi

Tham gia bản tin của chúng tôi để biết các mẹo công nghệ, đánh giá, sách điện tử miễn phí và các ưu đãi độc quyền!

Bấm vào đây để đăng ký