Förhållandet mellan Locations
och Events
är ett exempel på en 1-till-många-relation. Detta innebär att varje enskild plats kan ha många händelser kopplade till sig. Dessa typer av relationer implementeras vanligtvis genom att lägga till en främmande nyckel till tabellen "många" (händelser) som refererar till primärnyckeln för tabellen "en" (platser).
Relationen mellan "Platser" och "Typer" är ett exempel på ett många-till-många-förhållande. Det betyder att en plats kan ha många typer och en typ kan relateras till många platser. Dessa typer av relationer implementeras vanligtvis med en länktabell, som innehåller främmande nycklar för de relaterade raderna. Länktabellen har vanligtvis en sammansatt primärnyckel av de två främmande nycklarna, vilket innebär att en plats inte kan länkas till typen "bar" två gånger.
Så följande tabellstrukturer kan vara lämpliga för dig:
Location: ID (primary key), LocationName, ...
Events: ID (primary key), LocationID (foreign key), Date, Name, ...
LocationTypes: LocationID (fk), TypeID (fk)
Types: ID (pk), Name, ...
För att fråga efter informationen i flera av tabellerna måste du använda joins. För 1-till-många-relationen kommer följande fråga att fungera:
SELECT
l.LocationName, e.Name, e.Date
FROM Location l
JOIN Events e ON l.ID = e.LocationID
För en många-till-många-relation kommer följande fråga att sammanfoga informationen.
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
Dessa exempel visar bara en standard inre koppling, det finns andra kopplingstyper som kanske passar dina behov bättre.