Mysql
 sql >> Database >  >> RDS >> Mysql

Implementazione tabelle di associazione

La relazione tra Locations e Events è un esempio di relazione 1-a-molti. Ciò significa che ogni singola località può avere molti eventi ad essa associati. Questi tipi di relazioni vengono generalmente implementati aggiungendo una chiave esterna alla tabella "molti" (eventi) che fa riferimento alla chiave primaria della tabella "uno" (posizioni).

La relazione tra "Località" e "Tipi" è un esempio di relazione molti-a-molti. Ciò significa che una posizione può avere molti tipi e un tipo può essere correlato a molte posizioni. Questi tipi di relazioni sono generalmente implementati con una tabella di collegamento, che contiene chiavi esterne per le righe correlate. La tabella dei collegamenti di solito ha una chiave primaria composta delle due chiavi esterne, il che significa che una posizione non può essere collegata al tipo "bar" due volte.

Quindi, le seguenti strutture di tabelle potrebbero essere adatte a te:

Location: ID (primary key), LocationName, ...
Events: ID (primary key), LocationID (foreign key), Date, Name, ...
LocationTypes: LocationID (fk), TypeID (fk)
Types: ID (pk), Name, ...

Per interrogare le informazioni su diverse tabelle, devi usare i join. Per la relazione 1-a-molti, funzionerà la seguente query:

SELECT
    l.LocationName, e.Name, e.Date
FROM Location l
    JOIN Events e ON l.ID = e.LocationID

Per una relazione molti-a-molti, la query seguente unirà le informazioni.

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

Questi esempi mostrano solo un inner join standard, esistono altri tipi di join che potrebbero soddisfare meglio le tue esigenze.