Computer >> Máy Tính >  >> Lập trình >> SQL

Mô hình mối quan hệ nhiều-nhiều


Trong cơ sở dữ liệu "bán sản phẩm", đơn đặt hàng của khách hàng có thể chứa một hoặc nhiều sản phẩm; và một sản phẩm có thể xuất hiện trong nhiều đơn đặt hàng. Trong cơ sở dữ liệu "hiệu sách", một cuốn sách được viết bởi một hoặc nhiều tác giả; trong khi một tác giả có thể viết không hoặc nhiều cuốn sách. Mối quan hệ kiểu này được gọi là nhiều-nhiều.

Hãy minh họa bằng cơ sở dữ liệu "bán sản phẩm". Chúng ta bắt đầu với hai bảng:Sản phẩm và Đơn đặt hàng. Các sản phẩm trong bảng chứa thông tin về các sản phẩm (chẳng hạn như tên, mô tả và số lượngInStock) với productID làm khóa chính của nó. Các đơn đặt hàng trong bảng chứa các đơn đặt hàng của khách hàng (ID khách hàng, dateOrdered, dateRequired và trạng thái). Một lần nữa, chúng tôi không thể lưu trữ các mục đã đặt hàng bên trong bảng Đơn đặt hàng, vì chúng tôi không biết có bao nhiêu cột để đặt trước cho các mục. Chúng tôi cũng không thể lưu trữ thông tin đặt hàng trong bảng Sản phẩm.

Để hỗ trợ mối quan hệ nhiều-nhiều, chúng ta cần tạo một bảng thứ ba (được gọi là bảng nối), chẳng hạn OrderDetails (hoặc OrderLines), trong đó mỗi hàng đại diện cho một mục của một đơn hàng cụ thể. Đối với bảng OrderDetails, khóa chính bao gồm hai cột:orderID và productID, xác định duy nhất mỗi hàng. Các cột orderID và productID trong bảng OrderDetails được sử dụng để tham chiếu đến các bảng Đơn hàng và Sản phẩm, do đó, chúng cũng là các khóa ngoại trong bảng OrderDetails.

Mô hình mối quan hệ nhiều-nhiều

Trên thực tế, mối quan hệ nhiều-nhiều được triển khai dưới dạng hai mối quan hệ một-nhiều, với sự ra đời của bảng nối.

Một đơn đặt hàng có nhiều mục trong OrderDetails. Một mục OrderDetails thuộc về một đơn đặt hàng cụ thể.

Một sản phẩm có thể xuất hiện trong nhiều OrderDetails. Mỗi mục OrderDetails chỉ định một sản phẩm.