Związek między Locations
i Events
jest przykładem relacji jeden-do-wielu. Oznacza to, że z każdą poszczególną lokalizacją może być powiązanych wiele wydarzeń. Tego typu relacje są zwykle implementowane przez dodanie klucza obcego do tabeli „wiele” (zdarzeń), która odwołuje się do klucza podstawowego tabeli „jeden” (lokalizacje).
Relacja między „Lokalizacją” a „Typami” jest przykładem relacji wiele-do-wielu. Oznacza to, że lokalizacja może mieć wiele typów, a typ może być powiązany z wieloma lokalizacjami. Tego typu relacje są zwykle implementowane za pomocą tabeli łączy, która zawiera klucze obce dla powiązanych wierszy. Tabela linków zwykle zawiera złożony klucz podstawowy z dwóch kluczy obcych, co oznacza, że jedna lokalizacja nie może być dwukrotnie połączona z typem „bar”.
Dlatego poniższe struktury tabel mogą być dla Ciebie odpowiednie:
Location: ID (primary key), LocationName, ...
Events: ID (primary key), LocationID (foreign key), Date, Name, ...
LocationTypes: LocationID (fk), TypeID (fk)
Types: ID (pk), Name, ...
Aby wykonać zapytanie o informacje w kilku tabelach, musisz użyć sprzężeń. W przypadku relacji jeden-do-wielu zadziała następujące zapytanie:
SELECT
l.LocationName, e.Name, e.Date
FROM Location l
JOIN Events e ON l.ID = e.LocationID
W przypadku relacji wiele-do-wielu następujące zapytanie połączy informacje.
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
Te przykłady pokazują tylko standardowe sprzężenie wewnętrzne, istnieją inne typy sprzężenia, które mogą lepiej odpowiadać Twoim potrzebom.