Skip to main content

5.0 ERD in het kort

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

Bepaal alle entiteiten.

Een entiteit is een groep van dingen, personen, gebeurtenissen. Bijvoorbeeld: leerlingen, klaslokalen, adres, belastingaanslag, verkeersboete, rekening, kassabon, docenten, developers, medewerkers, etc.

Van entiteiten leg je gegevens vast, dit heten attributen. Zo kan je van een medewerker, zijn naam, zijn adres, zijn bankrekeningnummer, etc vastleggen.

Voorbeeld:

Een bedrijf wil een planning maken voor de telefonische hulpdienst die zij bieden aan hun klanten. Zij willen vastleggen welke medewerker wanneer moet meedraaien met de telefonisch hulpdienst.

De entitetiten zijn: bedrijf, hulpdienst, klanten en medewerker. MAAR let  op! Je wilt alleen  gegevens vastleggen van medewerkers en de planning (van de hulpdienst). Je legt namelijk vast welke medewerker wanneer moet meedraaien. Welke medewerker bepaal je door de entiteit medewerker te maken en wanneer leg e vast in de entiteit planning.

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 (3+2+1), bij 5 10 (4+3+2+1)en bij 6 15 (5+4+3+2+1), etc.

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 (voorbeelden)
entiteit 1 entiteit 2 N:M
entiteit 1 entiteit 3 1:1
entiteit 1 entiteit 4 1:N
entiteit 2 entiteit 3 geen (directe) relatie
entiteit 2 entiteit 4 1:N
entiteit 3 entiteit 4 geen (directe) relatie

Stap 3- Filter

Haal alles eruit wat niet van belang is.

Entiteit 1 Entiteit 2 Relatie (voorbeelden)
entiteit 1 entiteit 2 N:M
entiteit 1 entiteit 3 1:1
entiteit 1 entiteit 4 1:N
entiteit 2 entiteit 3 geen (directe) relatie
entiteit 2 entiteit 4 1:N
entiteit 3 entiteit 4 geen (directe) relatie

Een 1:1 relatie kan soms worden samengevoegd (dit kan later ook nog).

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.

Vervang N:M relaties met 1:N relaties via de koppeltabel. Uitleg zie: https://youtu.be/4bwu4s_wjUs

Stap 5 - Attributen

Zet alle items die je wilt vastleggen als attributen in de juiste entiteit.

Attributen zijn de eigenschappen van een entiteit. Als iets een nummer is, bijvoorbeeld, eindcijfer, prijs, temperatuur, datum, huisnummer, .... dan is het een attribuut (en dus geen entiteit).

Stap 6 - Keys

Primary Key

Bepaal de primary keys (PK's) dat is een uniek gegeven per entiteit en mag nooit wijzigen.
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.

image-1600268897589.png

Zie jij waar Greg woont? Kijk eerst goed naar het plaatsje en bepaal waar Greg woont. Lees dan pas verder.

Gefeliciteerd om te bepalen waar Greg woont heb je gebruik gemaakt van de foreign key en de primary key.

Je zoekt namelijk eerst de FK op in de kolom stad in de tabel personen. Deze FK verwijst dan naar de kolom ID in de tabel plaatsnamen. In de tabel plaatsnamen is deze kolom de PK.

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?
    In zijn algemeenheid; als je een gegeven/attribuut wilt aanpassen, hoef je dan maar op één plaats te doen?
  • 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.

--