Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Wdrażanie tabel asocjacyjnych

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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pobieranie danych z Mysql DB do listView przy użyciu JSON i PHP

  2. MySQL - Jak wykonać Oracle RANK() OVER (ORDER BY score DESC)

  3. Niezgodność MySQL z PHP

  4. Zapytanie Java MYSQL/JDBC zwraca nieaktualne dane z buforowanego połączenia

  5. Wybierz i zwróć tylko sumę kontrolną (nie tabelę) z tabeli sum kontrolnych w mysql