Mối quan hệ giữa Locations
và Events
là một ví dụ về mối quan hệ 1-nhiều. Điều này có nghĩa là mỗi vị trí riêng lẻ có thể có nhiều sự kiện được liên kết với nó. Các kiểu quan hệ này thường được triển khai bằng cách thêm khóa ngoại vào bảng 'nhiều' (sự kiện) tham chiếu đến khóa chính của bảng 'một' (các vị trí).
Mối quan hệ giữa 'Vị trí' và 'Loại' là một ví dụ về mối quan hệ nhiều-nhiều. Điều này có nghĩa là một vị trí có thể có nhiều loại và một loại có thể liên quan đến nhiều vị trí. Các kiểu quan hệ này thường được triển khai bằng một bảng liên kết, bảng này chứa các khóa ngoại cho các hàng liên quan. Bảng liên kết thường có khóa chính tổng hợp của hai khóa ngoại, có nghĩa là một vị trí không thể được liên kết với loại 'thanh' hai lần.
Vì vậy, các cấu trúc bảng sau có thể phù hợp với bạn:
Location: ID (primary key), LocationName, ...
Events: ID (primary key), LocationID (foreign key), Date, Name, ...
LocationTypes: LocationID (fk), TypeID (fk)
Types: ID (pk), Name, ...
Để truy vấn thông tin trên một số bảng, bạn phải sử dụng các phép nối. Đối với mối quan hệ 1-nhiều, truy vấn sau sẽ hoạt động:
SELECT
l.LocationName, e.Name, e.Date
FROM Location l
JOIN Events e ON l.ID = e.LocationID
Đối với mối quan hệ nhiều-nhiều, truy vấn sau sẽ kết hợp thông tin với nhau.
SELECT
l.LocationName, t.Name as TypeName
FROM Location l
JOIN LocationTypes lt ON l.ID = lt.LocationID
JOIN Types t ON lt.TypeID = t.ID
Những ví dụ này chỉ hiển thị một phép nối bên trong tiêu chuẩn, có những kiểu phép nối khác có thể phù hợp hơn với nhu cầu của bạn.