Hoi!
Ik heb een probleempje met het omzetten van een ER schema naar entiteiten (voor in de database). Stel je hebt volgend ER schema:

Volgens mij boek (*) is dit niets bijzonders, en moet ik het als volgt doen:
1. turn each entity set into a relation with the same set of attributes
2. replace a relationship by a relation whose attributes are the keys of the connected entity sets
Oké, dat geeft dus volgende relaties:
A(age (PK), dad)
B(geg (PK), agb)
C(xyz (PK), abc) (ben xyz vergeten te onderstrepen!)
Relatie1(age, xyz)
Relatie2(geg, xyz)
Maar zelf, zonder de regel uit mijn boek, zou ik het zo gedaan hebben:
A(age (PK), dad)
B(geg (PK), agb)
C(xyz (PK), abc)
Relatie(key, xyz, type), waarbij key de primary key is uit de relaties A of B en type een enum is, met waarden: 'A', 'B'
Nu weet ik niet tussen welk van de 2 oplossingen ik moet kiezen. De entities A en B hebben dus totaal niets met elkaar te maken. Het probleem is dat ik in mijn model 6 entities heb die niets met elkaar te maken, en dezelfde entity C die in relatie staat met al die 6 entities. Bij de eerste oplossing krijg je dan 6+6+1 verschillende tabellen, terwijl je bij de tweede oplossing 6+1+1 tabellen krijgt. Heeft iemand ervaring met deze situatie? Zelf lijkt mij de eerste oplossing efficiënter (je moet niet steeds het veld 'type' vastleggen in de WHERE clause van je queries), maar minder zuinig met geheugen en oplossing 2 geeft ook een beter overzicht van je database model, omdat je daar maar 1 tabel hebt, die in principe al 'identieke' relaties omvat.
Realistisch voorbeeld: stel bijvoorbeeld op tweakers.net: A = nieuwspost, B = user profile en C = comment. Nieuwsposten en user profiles hebben dus niets met elkaar te maken, en je kan zowel een comment posten op een nieuwspost, als op een user profile.
(*) boek: database systems - the complete book van Hector Garcia-Molina, Jeffrey D. Ullman en Jennifer Widom
Ik heb een probleempje met het omzetten van een ER schema naar entiteiten (voor in de database). Stel je hebt volgend ER schema:

Volgens mij boek (*) is dit niets bijzonders, en moet ik het als volgt doen:
1. turn each entity set into a relation with the same set of attributes
2. replace a relationship by a relation whose attributes are the keys of the connected entity sets
Oké, dat geeft dus volgende relaties:
A(age (PK), dad)
B(geg (PK), agb)
C(xyz (PK), abc) (ben xyz vergeten te onderstrepen!)
Relatie1(age, xyz)
Relatie2(geg, xyz)
Maar zelf, zonder de regel uit mijn boek, zou ik het zo gedaan hebben:
A(age (PK), dad)
B(geg (PK), agb)
C(xyz (PK), abc)
Relatie(key, xyz, type), waarbij key de primary key is uit de relaties A of B en type een enum is, met waarden: 'A', 'B'
Nu weet ik niet tussen welk van de 2 oplossingen ik moet kiezen. De entities A en B hebben dus totaal niets met elkaar te maken. Het probleem is dat ik in mijn model 6 entities heb die niets met elkaar te maken, en dezelfde entity C die in relatie staat met al die 6 entities. Bij de eerste oplossing krijg je dan 6+6+1 verschillende tabellen, terwijl je bij de tweede oplossing 6+1+1 tabellen krijgt. Heeft iemand ervaring met deze situatie? Zelf lijkt mij de eerste oplossing efficiënter (je moet niet steeds het veld 'type' vastleggen in de WHERE clause van je queries), maar minder zuinig met geheugen en oplossing 2 geeft ook een beter overzicht van je database model, omdat je daar maar 1 tabel hebt, die in principe al 'identieke' relaties omvat.
Realistisch voorbeeld: stel bijvoorbeeld op tweakers.net: A = nieuwspost, B = user profile en C = comment. Nieuwsposten en user profiles hebben dus niets met elkaar te maken, en je kan zowel een comment posten op een nieuwspost, als op een user profile.
(*) boek: database systems - the complete book van Hector Garcia-Molina, Jeffrey D. Ullman en Jennifer Widom
[ Voor 26% gewijzigd door Verwijderd op 25-08-2003 17:20 ]
