New Page
In deze les gaan we normaliseren volgens de ERFDAK methode. In deze methode wordt stapje voor stapje uitgelegd hoe je uit een verhaal een ERD, een datamodel moet maken,
De ERFDAK - methode -> Entiteiten - Relaties - Filter - Diagram - Attributen - Keys
Stap 1 - Entiteiten
Een entiteit is een groep van dingen, personen, gebeurtenissen. Bijvoorbeeld: leerlingen, klaslokalen, adres, belastingaanslag, verkeersboete, rekening, kassabon, docenten, developers, medewerkers, etc.
Stap 2 - Relaties
Leg de directe relaties. Gebruik daarvoor een tabel. Stel je hebt vier entiteiten, entiteit 1, entiteit 2, entiteit 3 en entiteit 4.
Bij 4 entiteiten heb je 6 mogelijke relaties, bij 5 24
Stel van alle combinaties de relatie vast en kies daarbij uit:
- 1:1
- 1:N
- N:1
- N:M
- geen directe relatie
Entiteit 1 | Entiteit 2 | Relatie |
entiteit 1 | entiteit 2 | |
entiteit 1 | entiteit 3 | |
entiteit 1 | entiteit 4 | |
entiteit 2 | entiteit 3 | |
entiteit 2 | entiteit 4 | N:1 |
entiteit 3 | entiteit 4 | geen relatie |
Stap 3- Filter
Haal alles eruit wat niet van belang is
Entiteit 1 | Entiteit 2 | Relatie |
team | training | N:M |
team | speler | 1:N |
training | coach | N:1 |
adres | speler | 1:1 |
Adres en speler is 1:1 en adres heeft alleen met speler een relatie dan kun je ze samen voegen.
Koppeltabel
Een N:M relatie moet in een RDBMS altijd met een koppeltabel worden vormgegeven. We hebben dus een extra entiteit, de koppeltabel. We vinden daarvoor nog wel een toepasselijke naam.
Stap 4 - Diagram
We maken een diagram (ERD) - eerst nog zonder keys en attributen, maar wel met de relaties.
Stap 5 - Attributen
Zet alle items die je wilt vastleggen als attributen in de juiste entiteit.
Stap 6 - Keys
Primary Key
Bepaal de primary keys (PK's) dat is een uniek gegeven per entiteit.
Tip: voeg een aparte key (ID) toe aan elke entiteit, dus TeamID en TainingID, SpelerID, etc.
Foreign Key
Bepaal de foreign keys (FK's) dat zijn de verbindingen naar de ander tabellen. Zodra er sprake is van een 1:N relatie dan heeft de N-kant de pprimary key van de 1-kant en dat heet dan de foreign key. Zo heeft speler een TeadID als foreign key.
Extra - Stap 7 check
- Leg je attributen meer dan 1x vast (los van de foreign key's) dan is er iets niet goed, dan moet je meer entiteiten maken?
- Heb je 1:1 relaties, dan kun je die waarschijnlijk samenvoegen?
- Is alles een 1:N relatie?
- Heeft elke entiteit tenminste een relatie? Uitzondering kan zo kan login/user soms los van alles staan en helemaal geen relatie hebben met de andere entiteiten.