Beste leden,

Op dit moment ben ik bezig met het ontwerpen van een database.
Hier komen ook koppeltabellen in voor.

Nu heb ik een interne discussie met mijzelf wat de beste oplossing is:
Meerdere koppel tabelen tussen tabelen of een enkele koppeltabel voor alle tabelen

Om een voorbeeld te geven:

Er zijn verschillende tabelen.

GEBRUIKER
gebruiker_id
naam

EVENEMENT
evenement_id
naam

LOCATIE
locatie_id
naam

De relaties:
GEBRUIKER *-----* EVENEMENTEN
GEBRUIKER *-----* LOCATIES
EVENEMENTEN *----* LOCATIES

Mogelijkheid 1 zijn de meerdere koppeltabelen, namelijk:
GEBRUIKER_EVENEMENT
gebruiker_id
evenement_id

en

GEBRUIKER_LOCATIE
gebruiker_id
locatie_id

en

EVENEMENT_LOCATIE
evenement_id
locatie_id

Optie 2 is de enkele koppeltabel:

KOPPELING
id_een
id_twee
soort_een
soort_twee

Welke de volgende waardes zal bevatten (als voorbeeld)
|-------|-------|---------|----------|
|id_een |id_twee|soort_een|soort_twee|
|-------|-------|---------|----------|
| 1 | 1 |evenement|locatie |
| 1 | 1 |evenement|gebruiker |
| 2 | 1 |evenement|gebruiker |
|-------|-------|---------|----------|

Wat vinden jullie de beste optie?

Ik hoop dat ik duidelijk genoeg ben :)
Optie 1, geen twijfel over. In optie 2 gan je twee keer zoveel data opslaan (of nog meer als je voor het soort inderdaad strings zou gebruiken), met een grote kans op fouten ook nog eens.
Dank Erwin voor de snelle reactie

Erwin H op 19/08/2014 11:04:46

In optie 2 gan je twee keer zoveel data opslaan (of nog meer als je voor het soort inderdaad strings zou gebruiken)

Daar zit wat in :)

Helemaal met Erwin eens.

Ik vraag me zelfs af of je de koppeltabel gebruikers_locaties nodig hebt.
Dat vroeg ik me ook af:
Patrick Bergman op 19/08/2014 10:58:25

De relaties:
GEBRUIKER *-----* EVENEMENTEN
GEBRUIKER *-----* LOCATIES
EVENEMENTEN *----* LOCATIES

Daarin suggereert de tweede relatie namelijk dat een gebruiker zich op een locatie kan bevinden waar op dat moment géén evenement is. Dat zou kunnen, bijvoorbeeld als je bewakers van lege evenementenhallen moet inroosteren.
De relaties die ik hier schets zijn in weze 0..* op 0..* relaties. Het kan er zijn, maar hoeft niet.
Maakt dat het iets duidelijker? :)

Nadat ik Ward zijn reactie opnieuw gelezen heb, begrijp ik dat het al duidelijk is :)

Reageren