sql >> Database >  >> RDS >> Mysql

Associatietabellen implementeren

De relatie tussen Locations en Events is een voorbeeld van een 1-op-veel relatie. Dit betekent dat aan elke individuele locatie vele evenementen kunnen worden gekoppeld. Dit soort relaties wordt meestal geïmplementeerd door een externe sleutel toe te voegen aan de tabel 'veel' (events) die verwijst naar de primaire sleutel van de tabel 'één' (locaties).

De relatie tussen 'Locaties' en 'Typen' is een voorbeeld van een veel-op-veel-relatie. Dit betekent dat een locatie veel typen kan hebben en een type aan veel locaties gerelateerd kan zijn. Dit soort relaties wordt meestal geïmplementeerd met een linktabel, die refererende sleutels voor de gerelateerde rijen bevat. De koppelingstabel heeft meestal een samengestelde primaire sleutel van de twee externe sleutels, wat betekent dat een locatie niet twee keer aan het type 'bar' kan worden gekoppeld.

De volgende tabelstructuren kunnen dus geschikt voor u zijn:

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

Als u de informatie over verschillende tabellen wilt opvragen, moet u joins gebruiken. Voor de 1-op-veel-relatie werkt de volgende zoekopdracht:

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

Voor een veel-op-veel-relatie zal de volgende zoekopdracht de informatie samenvoegen.

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

Deze voorbeelden laten alleen een standaard inner join zien, er zijn andere typen joins die mogelijk beter aan uw behoeften voldoen.



  1. Hoe te ontsnappen aan het vraagteken (?) -teken met Spring JpaRepository

  2. querycache werkt niet

  3. MySQL SELECT *-query parallel uitvoeren

  4. MySQL Galera Cluster 4.0 implementeren op Amazon AWS EC2