
Op school zijn we voor een project bezig met een ERD ontwerp voor database die gebruikt gaat worden bij een 'chatapplicatie'. Bovenstaande afbeelding is het ontwerp tot nu toe. Ik ben het echter (in tegenstelling tot enkele groepsleden en de expert databases (docent)) niet met deze ERD eens. Ik begin nu aan mezelf te twijfelen of mijn denkwijzes wel goed zijn. De docent wil het er nu niet meer met mij over hebben omdat ik volgens hem een verkeerd beeld heb en wat ik denk niet klopt.. Vandaar mijn post hier.
Allereerst zou ik zelf voor een extra kolom met een uniek id kiezen in elke tabel. Dit in combinatie met autonummering. Mijn groepsleden begrijpen niet waarom ik voor een id kies en zien dat als overbodig. De docent zelf is fel tegen het gebruik van autonummering omdat dat voor kan zorgen dat er dubbele spookusernames kunnen worden gecreeerd.
Hier ben ik het niet mee eens omdat je in de indexes kan afdwingen dat een bepaalde kolom uniek moet zijn. De docent zegt hierop: waarom heb je dan een id als primary key? De keuze daarvoor is simpel.. Stel, ik wil een username aanpassen, dan hoef ik dit niet in de tabel 'usergroup' en 'userroom' aan te passen, maar enkel in de tabel 'user'. Alleen zegt hij dat dit ook door middel van een trigger kan... Klopt, maar is dit wel effectief?
Opzich is het natuurlijk wel overzichtelijker wanneer je in de database zelf kijkt, immers een loginname en roomname is natuurlijk een stuk duidelijker dan een tabel met alleen id's. Maar is dit van belang? Wanneer ik een inner join uitvoer krijg ik namelijk toch de informatie die ik moet hebben. De docent zegt echter dat ik door het gebruik van id's en autonummering het principe van een database fundamenteel ondermijn..
Toch ben ik op dit moment van mening dat mijn oplossing ervoor zorgt dat gegevens niet dubbel en overbodig worden opgeslagen en ook een heel stuk sneller is. (waarop mijn docent zei: je moet niet vanuit het systeem denken)
Wat is nu beter?
[ Voor 5% gewijzigd door Steephh op 13-10-2009 16:44 ]
_@/'