Mối quan hệ cơ sở dữ liệu

Mối quan hệ cơ sở dữ liệu là xương sống của tất cả các cơ sở dữ liệu quan hệ

Mối quan hệ được thiết lập giữa hai bảng cơ sở dữ liệu khi một bảng có khóa ngoài tham chiếu khóa chính của bảng khác. Đây là khái niệm cơ bản đằng sau cơ sở dữ liệu quan hệ.

Làm thế nào một chìa khóa nước ngoài hoạt động để thiết lập một mối quan hệ

Hãy xem lại các khái niệm cơ bản của khóa chính và khóa ngoài. Khóa chính xác định duy nhất mỗi bản ghi trong bảng. Nó là một loại khóa ứng cử viên thường là cột đầu tiên trong một bảng và có thể được tự động tạo ra bởi cơ sở dữ liệu để đảm bảo rằng nó là duy nhất.

Khóa ngoài là một khóa ứng cử viên khác (không phải khóa chính) được sử dụng để liên kết bản ghi với dữ liệu trong bảng khác.

Ví dụ, hãy xem xét hai bảng này xác định giáo viên nào dạy môn nào.

Ở đây, khóa chính của khóa học là Course_ID. Khóa ngoại của nó là Teacher_ID:

Các khóa học
Mã khóa học Tên khóa học Teacher_ID
Course_001 Sinh học Teacher_001
Khóa học_002 môn Toán Teacher_001
Course_003 Anh Teacher_003

Bạn có thể thấy khóa ngoại trong các khóa học khớp với khóa chính trong Giáo viên:

Giáo viên
Teacher_ID Tên giáo viên
Teacher_001 Carmen
Teacher_002 Veronica
Teacher_003 Jorge

Chúng ta có thể nói rằng khóa ngoại ngữ Teacher_ID đã giúp thiết lập mối quan hệ giữa các khóa học và các bảng giáo viên.

Các loại mối quan hệ cơ sở dữ liệu

Sử dụng khóa ngoài hoặc các khóa ứng viên khác, bạn có thể triển khai ba loại mối quan hệ giữa các bảng:

One-to-one : Loại mối quan hệ này chỉ cho phép một bản ghi ở mỗi bên của mối quan hệ.

Khóa chính chỉ liên quan đến một bản ghi - hoặc không có - trong một bảng khác. Ví dụ, trong một cuộc hôn nhân, mỗi vợ / chồng chỉ có một người phối ngẫu khác. Loại mối quan hệ này có thể được thực hiện trong một bảng duy nhất và do đó không sử dụng khóa ngoại.

Một-nhiều : Mối quan hệ một-nhiều cho phép một bản ghi trong một bảng có liên quan đến nhiều bản ghi trong một bảng khác.

Hãy xem xét một doanh nghiệp với một cơ sở dữ liệu có bảng Customers và Orders.

Một khách hàng có thể mua nhiều đơn đặt hàng, nhưng một đơn đặt hàng không thể được liên kết với nhiều khách hàng. Do đó bảng Orders sẽ chứa khóa ngoài khớp với khóa chính của bảng Customers, trong khi bảng Customers sẽ không có khóa ngoài trỏ đến bảng Orders.

Nhiều-nhiều : Đây là một mối quan hệ phức tạp trong đó nhiều bản ghi trong một bảng có thể liên kết với nhiều bản ghi trong một bảng khác. Ví dụ: doanh nghiệp của chúng tôi có thể không chỉ cần các bảng Khách hàng và Đơn đặt hàng, nhưng cũng có thể cần một bảng Sản phẩm.

Một lần nữa, mối quan hệ giữa bảng Customers và Orders là một-nhiều, nhưng hãy xem xét mối quan hệ giữa bảng Orders và Products. Đơn đặt hàng có thể chứa nhiều sản phẩm và một sản phẩm có thể được liên kết với nhiều đơn đặt hàng: một số khách hàng có thể gửi đơn đặt hàng chứa một số sản phẩm giống nhau. Loại mối quan hệ này đòi hỏi tối thiểu ba bảng.

Quan hệ cơ sở dữ liệu quan trọng là gì?

Thiết lập mối quan hệ nhất quán giữa các bảng cơ sở dữ liệu giúp đảm bảo tính toàn vẹn dữ liệu, góp phần vào việc chuẩn hóa cơ sở dữ liệu. Ví dụ: nếu chúng tôi không liên kết bất kỳ bảng nào thông qua khóa ngoại và thay vào đó chỉ kết hợp dữ liệu trong các bảng Khóa học và giáo viên, như sau:

Giáo viên và khóa học
Teacher_ID Tên giáo viên Khóa học
Teacher_001 Carmen Sinh học, Toán
Teacher_002 Veronica môn Toán
Teacher_003 Jorge Anh

Thiết kế này không linh hoạt và vi phạm nguyên tắc chuẩn hóa cơ sở dữ liệu đầu tiên, Biểu mẫu thông thường đầu tiên (1NF), cho biết mỗi ô bảng phải chứa một phần dữ liệu rời rạc.

Hoặc có lẽ chúng tôi quyết định chỉ cần thêm một bản ghi thứ hai cho Carmen, để thực thi 1NF:

Giáo viên và khóa học
Teacher_ID Tên giáo viên Khóa học
Teacher_001 Carmen Sinh học
Teacher_001 Carmen môn Toán
Teacher_002 Veronica môn Toán
Teacher_003 Jorge Anh

Đây vẫn là một thiết kế yếu, giới thiệu sự sao chép không cần thiết và cái được gọi là dị thường chèn dữ liệu , điều đó có nghĩa là nó có thể đóng góp vào dữ liệu không nhất quán.

Ví dụ: nếu giáo viên có nhiều bản ghi, điều gì sẽ xảy ra nếu một số dữ liệu cần được chỉnh sửa nhưng người thực hiện chỉnh sửa dữ liệu không nhận ra có nhiều bản ghi tồn tại? Bảng sau đó sẽ chứa các dữ liệu khác nhau cho cùng một cá nhân, mà không có bất kỳ cách rõ ràng để xác định nó hoặc tránh nó.

Việc chia bảng này thành hai bảng, các Giáo viên và các khóa học (như được hình dung ở trên), tạo ra mối quan hệ thích hợp giữa dữ liệu và do đó giúp đảm bảo tính thống nhất và chính xác của dữ liệu.