La relation entre Locations
et Events
est un exemple de relation 1 à plusieurs. Cela signifie que chaque emplacement individuel peut être associé à de nombreux événements. Ces types de relations sont généralement mis en œuvre en ajoutant une clé étrangère à la table « plusieurs » (événements) qui fait référence à la clé primaire de la table « un » (emplacements).
La relation entre 'Emplacements' et 'Types' est un exemple de relation plusieurs-à-plusieurs. Cela signifie qu'un emplacement peut avoir plusieurs types et qu'un type peut être lié à plusieurs emplacements. Ces types de relations sont généralement implémentés avec une table de liens, qui contient des clés étrangères pour les lignes associées. La table de liens a généralement une clé primaire composée des deux clés étrangères, ce qui signifie qu'un emplacement ne peut pas être lié deux fois au type 'bar'.
Ainsi, les structures de table suivantes pourraient vous convenir :
Location: ID (primary key), LocationName, ...
Events: ID (primary key), LocationID (foreign key), Date, Name, ...
LocationTypes: LocationID (fk), TypeID (fk)
Types: ID (pk), Name, ...
Pour interroger les informations sur plusieurs tables, vous devez utiliser des jointures. Pour la relation 1-à-plusieurs, la requête suivante fonctionnera :
SELECT
l.LocationName, e.Name, e.Date
FROM Location l
JOIN Events e ON l.ID = e.LocationID
Pour une relation plusieurs-à-plusieurs, la requête suivante regroupera les informations.
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
Ces exemples montrent simplement une jointure interne standard, il existe d'autres types de jointure qui peuvent mieux répondre à vos besoins.