Mối quan hệ Cơ sở dữ liệu là gì?

Mục lục:

Mối quan hệ Cơ sở dữ liệu là gì?
Mối quan hệ Cơ sở dữ liệu là gì?
Anonim

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

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

Một 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 viên thường là cột đầu tiên trong bảng và có thể được cơ sở dữ liệu tạo tự động để đảm bảo rằng nó là duy nhất. Khóa ngoại là một khóa ứng 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 khóa học nào. Ở đây, khóa chính của bảng Khóa học là Course_ID. Khóa ngoại của nó là Teacher_ID:

Khóa_chỉ Khóa_tên Thầy_ID
Khóa_001 Sinh học Thầy_001
Khóa_002 Toán Thầy_002
Khoá_003 Anh Thầy_003

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

Thầy_ID Thầy_Nhà
Thầy_001 Carmen
Thầy_002 Veronica
Thầy_003 Jorge

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

Image
Image

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

Sử dụng khóa ngoại hoặc khóa ứng viên khác, bạn có thể triển khai ba kiểu 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 bảng khác. Ví dụ, trong một cuộc hôn nhân, mỗi người phối ngẫu chỉ có một người phối ngẫu khác. Loại mối quan hệ này có thể được triển khai 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ó thể 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 có cơ sở dữ liệu có các bảng Khách hàng và Đơn hàng.

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

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ể cần bảng Khách hàng và Đơn đặt hàng, và có thể cũng cần bảng Sản phẩm.

Một lần nữa, mối quan hệ giữa bảng Khách hàng và Đơn hàng là một-nhiều, nhưng hãy xem xét mối quan hệ giữa bảng Đơn hàng và Sản phẩm. Một đơ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 vì 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 yêu cầu tối thiểu ba bảng.

Tại sao Mối quan hệ Cơ sở dữ liệu lại quan trọng?

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 của dữ liệu, góp phần chuẩn hóa cơ sở dữ liệu. Ví dụ: điều gì sẽ xảy ra 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 đó kết hợp dữ liệu trong bảng Khóa học và bảng Giáo viên, như sau:

Thầy_ID Thầy_Nhà Khoá
Thầy_001 Carmen Sinh học, Toán
Thầy_002 Veronica Toán
Thầy_003 Jorge Anh

Thiết kế này không linh hoạt và vi phạm nguyên tắc đầu tiên của việc chuẩn hóa cơ sở dữ liệu, Biểu mẫu Thông thường Đầu tiên, quy định rằng mỗi ô trong 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 thêm bản ghi thứ hai cho Carmen, để thực thi 1NF:

Thầy_ID Thầy_Nhà Khoá
Thầy_001 Carmen Sinh học
Thầy_001 Carmen Toán
Thầy_002 Veronica Toán
Thầy_003 Jorge Anh

Đây vẫn là một thiết kế yếu, tạo ra sự trùng lặp không cần thiết và những gì được gọi là dị thường chèn dữ liệu, có nghĩa là nó có thể góp phần tạo ra dữ liệu không nhất quán. Ví dụ, nếu một 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 việc chỉnh sửa dữ liệu không nhận ra rằng nhiều bản ghi tồn tại? Sau đó, bảng 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 nào rõ ràng để xác định hoặc tránh nó.

Việc chia bảng này thành hai bảng, Giáo viên và Khóa học, 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 nhất quán và chính xác của dữ liệu.

Đề xuất: