Beste forumleden,
Bij het ontwerpen van een database kom ik regelmatig met hetzelfde probleem in aanraking. Veel gezocht op dit foum en op google, maar zonde resultaat. Misschien ook wel deels omdat ik niet de juiste zoektermen weet.
Voor alle zekerheid: De database gaat gebruik worden in een PHP/MySQL omgeving.
Het probleem is het volgende:
Er is een tabel persoon, docent en leerling. Een persoon is of een docent of een leerling. Nou heb ik een aantal ontwerp ideeen bedacht.
1. Docent heeft een 1 op veel relatie met persoon en leerling heeft een 1 op veel relatie met persoon. Dit zou betekenen dat persoon twee FK's krijgt, namelijk de PK's van docent en leerling. Programmatechnisch zou je dan kunnen afvangen welke van toepassing is. Maar DB technisch gezien lijkt me dit niet netjes, omdat je dan een lege FK zou krijgen.
2. Tussen persoon - docent en tussen persoon - leerling maak je een veel op veel relatie. Hierdoor komen er twee tussentabbelen bij. In je programma kijk je dan of de des betreffende persoon een relatie heeft met docent of met leerling.
Beide oplossingen lijken me niet zo netjes. Ben daarom ook heel benieuwd hoe jullie dit oplossen. Of jullie een van deze opties toepassen, een andere oplossing hebben of een aangepaste oplossing.
In het voorbeeld zijn de tabellen gekozen om het beter duidelijk te maken. In werkelijkheid gaat het vaak over andere onderwerpen. Maar het komt er op neer dat er twee tabellen een relatie hebben met een zelfde tabel, maar waar altijd maar een van de twee relaties geldt.
Hopelijk is er iemand die mij verder kan helpen. Alvast bedankt voor de moeite.
Bij het ontwerpen van een database kom ik regelmatig met hetzelfde probleem in aanraking. Veel gezocht op dit foum en op google, maar zonde resultaat. Misschien ook wel deels omdat ik niet de juiste zoektermen weet.
Voor alle zekerheid: De database gaat gebruik worden in een PHP/MySQL omgeving.
Het probleem is het volgende:
Er is een tabel persoon, docent en leerling. Een persoon is of een docent of een leerling. Nou heb ik een aantal ontwerp ideeen bedacht.
1. Docent heeft een 1 op veel relatie met persoon en leerling heeft een 1 op veel relatie met persoon. Dit zou betekenen dat persoon twee FK's krijgt, namelijk de PK's van docent en leerling. Programmatechnisch zou je dan kunnen afvangen welke van toepassing is. Maar DB technisch gezien lijkt me dit niet netjes, omdat je dan een lege FK zou krijgen.
2. Tussen persoon - docent en tussen persoon - leerling maak je een veel op veel relatie. Hierdoor komen er twee tussentabbelen bij. In je programma kijk je dan of de des betreffende persoon een relatie heeft met docent of met leerling.
Beide oplossingen lijken me niet zo netjes. Ben daarom ook heel benieuwd hoe jullie dit oplossen. Of jullie een van deze opties toepassen, een andere oplossing hebben of een aangepaste oplossing.
In het voorbeeld zijn de tabellen gekozen om het beter duidelijk te maken. In werkelijkheid gaat het vaak over andere onderwerpen. Maar het komt er op neer dat er twee tabellen een relatie hebben met een zelfde tabel, maar waar altijd maar een van de twee relaties geldt.
Hopelijk is er iemand die mij verder kan helpen. Alvast bedankt voor de moeite.