Koppeltabel, meerdere of een enkele voor alle koppelingen
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.
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 :)
Ik vraag me zelfs af of je de koppeltabel gebruikers_locaties nodig hebt.
Patrick Bergman op 19/08/2014 10:58:25:
De relaties:
GEBRUIKER *-----* EVENEMENTEN
GEBRUIKER *-----* LOCATIES
EVENEMENTEN *----* LOCATIES
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.
Maakt dat het iets duidelijker? :)
Nadat ik Ward zijn reactie opnieuw gelezen heb, begrijp ik dat het al duidelijk is :)
Gewijzigd op 19/08/2014 11:25:02 door Patrick Bergman