Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> SQL

Mô hình quan hệ nhiều-nhiều (Many-to-Many Relationship Model)


Trong cơ sở dữ liệu "bán hàng sản phẩm", đơn 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 hàng. Trong cơ sở dữ liệu "nhà sách", một 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 sách. Loại quan hệ này gọi là nhiều-nhiều.

Minh họa với cơ sở dữ liệu "bán hàng sản phẩm". Bắt đầu với hai bảng: Products và Orders. Bảng products chứa thông tin sản phẩm (tên, mô tả, quantityInStock) với productID là khóa chính. Bảng orders chứa đơn hàng khách hàng (customerID, dateOrdered, dateRequired, status). Lại không thể lưu mặt hàng đặt trong bảng Orders vì không biết cần bao nhiêu cột. Cũng không thể lưu thông tin đơn hàng trong bảng Products.

Để hỗ trợ quan hệ nhiều-nhiều, cần tạo bảng thứ ba (bảng nối - junction table), ví dụ OrderDetails (hoặc OrderLines), nơi mỗi hàng đại diện cho một mặt hàng của một đơn hàng cụ thể. Đối với bảng OrderDetails, khóa chính 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 OrderDetails dùng để tham chiếu Orders và Products, do đó chúng cũng là khóa ngoại trong OrderDetails.

Mô hình quan hệ nhiều-nhiều (Many-to-Many Relationship Model)

Quan hệ nhiều-nhiều thực chất được triển khai thành hai quan hệ một-nhiều, với sự xuất hiện của bảng nối.

Một đơn hàng có nhiều mục trong OrderDetails. Một mục OrderDetails thuộc về một đơn 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.