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

Implementering af foreningstabeller

Forholdet mellem Locations og Events er et eksempel på et 1-til-mange forhold. Det betyder, at hver enkelt lokation kan have mange begivenheder tilknyttet. Disse typer relationer implementeres normalt ved at tilføje en fremmednøgle til tabellen 'mange' (hændelser), der refererer til den primære nøgle i tabellen 'én' (placeringer).

Forholdet mellem 'Steder' og 'Typer' er et eksempel på et mange-til-mange forhold. Det betyder, at en lokation kan have mange typer, og en type kan relateres til mange lokationer. Disse typer relationer implementeres normalt med en linktabel, som indeholder fremmednøgler til de relaterede rækker. Linktabellen har normalt en sammensat primær nøgle af de to fremmednøgler, hvilket betyder, at en placering ikke kan linkes til "bar"-typen to gange.

Så følgende tabelstrukturer kan være egnede til dig:

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

For at forespørge oplysningerne på tværs af flere af tabellerne, skal du bruge joins. For 1-til-mange-relationen vil følgende forespørgsel fungere:

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

For et mange-til-mange-forhold vil følgende forespørgsel samle oplysningerne.

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

Disse eksempler viser blot en standard indre sammenføjning. Der er andre sammenføjningstyper, der måske bedre passer til dine behov.



  1. Brug af ODBC med Salesforce og Active Directory Federation Services (ADFS) Single Sign On (SSO)

  2. mysql_connect() mislykkes med tom advarsel

  3. mysql import på windows

  4. MySQL MAX() funktion til at sammenligne numeriske værdier i en opdatering?