Entity Relationship Diagram (ERD)¶
Om een relationele database te ontwerpen, maak je als eerste een Entity Relationship Diagram. Je modelleert hierin de gegevens die de gebruiker wil opslaan, zonder te kijken naar de technische implementatie. In een ERD spelen de volgende begrippen een rol:
- Entiteit: een type “ding” waarover de gebruiker gegevens wil opslaan, bijvoorbeeld een gebruiker, een bestelling of een student.
- Attribuut: eigenschappen van een entiteit. Voor een gebruiker kan dat bijvoorbeeld zijn: gebruikersnaam, email en wachtwoord
- Relaties: verbinding tussen entiteiten, bijvoorbeeld het feit dat één klant meerdere bestellingen kan plaatsen.
- Instanties: een voorbeeld van een entiteit, bijvoorbeeld de bestelling met bestelnummer 239741.
In een ERD kunnen verschillende soorten relaties bestaan:
- 1-op-veel (1:N): bij één instantie kunnen meerdere instanties van een andere entiteit horen. Bijvoorbeeld: een klant kan meerdere bestellingen plaatsen, maar een bestelling hoort maar bij één klant.
- veel-op-veel (N:M): bij één instantie kunnen meerdere instanties van een andere entiteit horen, maar andersom geldt dit ook. Bijvoorbeeld: een bestelling kan meerdere producten bevatten en andersom kan een product op meerdere bestellingen voorkomen.
- 1-op-1 (1:1): bij één instantie hoort maximaal één instantie van een andere entiteit. Bijvoorbeeld: een werknemer kan één leaseauto hebben en een leaseauto is van één werknemer.
Voorbeeld ERD van een podcast-applicatie
Hieronder een voorbeeld van een ERD over podcasts, gemaakt in draw.io
In een ERD staan nog geen primary keys en foreign keys. Wel kun je identificerende attributen (identifiers) aangeven, die in een organisatie gebruikt worden om een instantie te identificeren. Identifiers in een ERD worden onderstreept.
Oefening: maak een ERD
Maak een ERD voor een webwinkel voor sportartikelen. Neem hierin op de entiteiten met de belangrijkste attributen, de relaties en de identifiers.
ERD afspraken¶
Als je bij het bouwen van een applicatie of informatiesysteem in een team werkt is het belangrijk dat je afspraken maakt met elkaar over de wijze waarop een ontwerp van een informatiesysteem - of delen ervan - worden vastgelegd. Dit zorgt ervoor dat iedereen op eenzelfde wijze werkt en dat je elkaars werk eenvoudig kunt reviewen en/of overnemen.
De afspraken die we hierover maken zijn zogenaamde naming conventions en vind je hieronder:
- Kies één voertaal voor je hele ERD. Dit mag zijn Nederlands of Engels.
- Probeer te voorkomen dat je gebruik maakt van spaties of ‘reserved keywords’ (syntax uit de SQL-taal zoals SELECT, WHERE, ORDER, …) in de naamgeving van entiteiten en attributen.
Entiteit¶
- Begint met een hoofdletter (Upper-CamelCase / PascalCase), elk daarop volgend woord begint ook met een hoofdletter.
- Is in enkelvoud geschreven.
- Voorbeelden: Smartphone, Student, Gebouw, Boek, Bestelling, Auteur.
Attribuut¶
- Begint met een kleine letter (camelCase), elk daarop volgend woord begint met een hoofdletter.
- Is in enkelvoud geschreven.
- Voorbeelden: klantnummer, geboortedatum, datum, emailadres, naam
Relaties¶
- Geef elke relatie een passende beschrijving.
- Gebruik niet meer dan 5 woorden.
- Voorbeelden: Gebruiker heeft een Bericht geplaatst, Student zit in Klas
Voor het tekenen van een Entity Relationship Diagram (ERD) kan je gebruik maken van de (online) tooling draw.io of mermaid.
Checklist ERD
Als je een ERD maakt, laat dan zien dat je volgend de afspraken hebt gewerkt door deze checklist te doorlopen.
- Eenduidige voertaal
- Geen spaties of ‘reserved keywords’
Entiteit¶
- Begint met een hoofdletter (PascalCase)
- Is in enkelvoud geschreven
Attribuut¶
- Begint met een kleine letter (camelCase)
- Is in enkelvoud geschreven
Relaties¶
- alle relaties passend beschreven
- niet meer dan 5 woorden