May the Force be with you.
—Star Wars
Conceptueel datamodel: oefeningen
Onderstaande oefeningen geven je de mogelijkheid om alvast te oefenen in het maken van conceptuele datamodellen. Voor de verschillende oefeningen geven we telkens een modeloplossing.
Oefening 1: jeugdvereniging: entiteittypes
Hieronder krijg je de beschrijving van de werking van een jeugdbeweging. Dit verhaal wordt voor de volgende oefeningen gebruikt. Je gaat achtereenvolgens op zoek naar entiteittypes, attributen en relaties. In deze sectie beperken we ons eerst tot de entiteittypes.

Lees onderstaande beschrijving grondig door en bepaal de entiteittypes.
Een jeugdvereniging wil een database opzetten, ter ondersteuning van haar ledenadministratie en de planning van activiteiten. Bij de eerste inschrijving krijgt elk lid een uniek lidnummer. Gegevens zoals naam, voornaam, adres, e-mailadres, geslacht en geboortedatum worden geregistreerd.
Onze leden moeten zich elk jaar opnieuw inschrijven, een inschrijving is dus geldig voor één jaar. Lidgeld wordt ook jaarlijks betaald om bijvoorbeeld de verzekeringskosten te dekken. Dit is elk jaar een ander bedrag, het belangrijkste is om te weten welke leden hun inschrijvingsgeld hebben betaald, en welke dit nog niet gedaan hebben. Op het ogenblik dat een inschrijving gebeurt, wordt het lid in een bepaalde leeftijdsklasse geplaatst, bijvoorbeeld ‘6 tot 9 jarigen’, ‘10 tot 12 jarigen’, … De leeftijdsklasse wordt bepaald op basis van de leeftijd van het lid bij de start van het nieuwe jeugdvereniging-jaar.
Na inschrijving worden de leden op basis van de leeftijdsklasse aan een groep toegevoegd. Bij heel wat inschrijvingen binnen een bepaalde leeftijdsklasse is het mogelijk dat van een bepaalde leeftijdsklasse meerdere groepen worden gecreëerd. De groepen kiezen zelf een naam die ze doorheen het jaar gaan gebruiken. Net zoals de inschrijving, wordt dit elk jaar herbekeken en de verdeling opnieuw gemaakt.
Elke groep krijgt één lid aangeduid die de rol van ‘hoofdleiding’ van de groep op zich neemt. Daarnaast krijgt elke groep mogelijk nog bijkomende ‘leiding’, wat één of meerdere leden zijn die de ‘hoofdleiding’ zullen ondersteunen. De leeftijd van de leiders moet natuurlijk niet overeen komen met de leeftijdscategorie van de groep, dat zou wat ongepast zijn. Leiding wordt elk jaar opnieuw bepaald, en geldt dus voor de levensduur van een groep. Leden kunnen van maximaal één groep de leiding nemen, dit geldt voor zowel de ‘hoofdleiding’ als de ‘leiding’.
De leiding organiseren voor hun groepen bepaalde activiteiten die samen de jaarplanning van de groep vormen. Elke activiteit wordt gepland op een bepaalde datum en bepaalde locatie. Eenzelfde activiteit kan ingepland worden voor meerdere groepen tegelijk.
We maken gebruik van een lijst van mogelijke activiteiten die beschreven staan in een lange lijst. Deze lijst bevat bijvoorbeeld ‘Zwemmen’, waarbij telkens aangegeven wordt wat de leden moet meebrengen, hoe lang dit duurt en bepaalde dingen waarmee rekening gehouden moet worden. De lijst van mogelijke activiteiten wordt aangevuld en dan gebruikt om activiteiten te plannen. De lijst wordt dan ook gebruikt om naar de leden en hun ouders te communiceren zodat ze op de hoogte zijn.
De verantwoordelijkheid voor het coördineren van deze activiteiten ligt bij de ‘hoofdleiding’. Het e-mailadres van de hoofdleiding wordt mee toegevoegd zodat leden en ouders bepaalde vragen kunnen stellen.
De bedoeling van het systeem is de ledenadministratie bij te houden waarbij we de volgende vragen willen kunnen beantwoorden:
- Welke groepen hebben we?
- Welke leden hebben we dit jaar?
- Welke leden hadden we vorig jaar?
- Welke leden hebben we van een bepaalde leeftijdsgroep?
- Welke leden hebben inschrijvingsgeld betaald?
- Welke leden zitten in welke groep?
- Welke leiding hebben we?
- Welke leiding begeleidt welke groep?
- Welke activiteiten staan op de planning voor een bepaalde groep?
- Wie is verantwoordelijk voor het coördineren van de geplande activiteiten?
- Wanneer zijn de verschillende activiteiten gepland?
- Waar gaan de activiteiten door?
De zelfstandige naamwoorden die in aanmerking komen voor een entiteittype zijn: Lid, Inschrijving, Leeftijdsklasse, Groep, Activiteit en Activiteittype.
Oefening 2: jeugdvereniging: attributen
Ga terug naar conceptueel.1 en bepaal voor elke van de entiteittypes welke attributen je hiervan terugvindt in de tekst. De attributen moeten toelaten om de entiteiten te beschrijven. Stel jezelf de volgende vragen:
- Welke eigenschappen moet ik voor elk van de entiteittypes bijhouden?
- Welke informatie is noodzakelijk voor mijn applicatie? Kan ik deze informatie terugvinden in de attributen?
- Ontbreken er bepaalde entiteittypes om de nodige data te structureren? Kan je bepaalde attributen moeilijk plaatsen bij de entiteittypes die je hebt geïdentificeerd?
- Zijn er bepaalde entiteittypes die slechts één attribuut hebben? Zijn we zeker dat het hier gaat om een entiteittype met één attribuut, of een attribuut van een ander entiteittype? Bijvoorbeeld, willen we van een persoon een leeftijd bijhouden, dan zouden we een entiteittype ‘Leeftijd’ kunnen identificeren met als attribuut ‘Leeftijd". Daarentegen kan dit ook gewoon een attribuut van het entiteittype ‘Persoon’ zijn, zonder dat we daarbij ons datamodel onnodig complex maken.
Breid jouw ERD in draw.io uit met jouw attributen. (TIP: je kan in diagrams.net een tab dupliceren. Je kan dan verder bouwen op het antwoord van een eerdere vraag, zonder dat je het antwoord op de eerste vraag kwijt speelt.)
Hieronder een overzicht van de verschillende attributen die werden geïdentificeerd voor elk van de entiteittypes:
Oefening 3: jeugdvereniging: relaties
Bouw verder op de resultaten van oefening conceptueel.2 en ga op zoek naar de verschillende relaties die er bestaan tussen de entiteittypes. Beschrijft de relaties met een duidelijke naam en geef de kardinaliteit aan voor elk van de entiteittypes van de relatie. Stel hierbij de volgende vragen:
- Laten de relaties toe om alle verbanden en informatie te achterhalen?
- Zijn alle entiteittypes met elkaar verbonden?
Breid jouw ERD in diagrams.net uit met jouw relaties.
Onderstaande ERD bevat de relaties met hun kardinaliteiten.
Oefening 4: jeugdvereniging: types van attributen
Ga terug naar het resultaat van oefening conceptueel.3 en verfijn jouw resultaat met de juiste types van attributen. Komt de notatie van jouw attributen overeen met het type? Zijn er bepaalde relaties die een attribuut hebben?
Breid jouw ERD in diagrams.net uit met jouw relaties.
Oefening 5: autoverhuurbedrijf
Voor de volgende oefeningen gaan we in een aantal stappen een ERD uittekenen. Elke stap voegt een stukje logica en/of complexiteit toe (blauwe cursieve tekst). Beschrijf duidelijk de entiteiten, attributen en relaties. Geef voor elk van de relaties duidelijk de kardinaliteit van elk van de entiteittypes aan. Gezien de verschillende opgaves telkens op elkaar verder bouwen, kan je in diagrams.net telkens een tab dupliceren. Zo houd je een overzicht van jouw werk en kan je de verschillende stappen onderscheiden.

Stap 1
Een autoverhuurbedrijf verhuurt wagens aan klanten. Bij de eerste verhuur krijgen de klanten een klantennummer toegekend. Van elke klant houden we ook de naam, voornaam, adres, e-mailadres en GSM-nummer bij. Van elke wagen houden we merk, model, nummerplaat en chassisnummer bij. Ons systeem moet een overzicht genereren van:
- de klanten die op dit ogenblik een wagen huren
- de wagen en bij welke klanten deze zich op dit ogenblik bevinden
- de wagens en wanneer deze beschikbaar zijn voor een volgend verhuur
Stap 2
Tekst in het blauw en cursief is een uitbreiding van de vorige oefening. Er komen dus telkens extra vereisten bij.
Een autoverhuurbedrijf verhuurt wagens aan klanten. Klanten kunnen op voorhand een type wagen reserveren, waarbij ze aangeven wanneer ze de wagen zouden willen oppikken en wanneer ze deze zouden willen terugbrengen. Bij de eerste verhuur krijgen de klanten een klantennummer toegekend. Van elke klant houden we ook de naam, voornaam, adres, e-mailadres en GSM-nummer bij. Van elke wagen houden we merk, model, nummerplaat en chassisnummer bij. Ons systeem moet een overzicht genereren van:
- de reservaties die de klanten hebben gemaakt;
- de klanten die op dit ogenblik een wagen huren;
- de wagen en bij welke klanten deze zich op dit ogenblik bevinden;
- de wagens en wanneer deze beschikbaar zijn voor een volgend verhuur.
TIP! Voor zij die nog nooit een wagen gehuurd hebben, breng eens een bezoekje aan één van de online autoverhuurbedrijven. Stel jezelf de vraag, wat reserveer ik eigenlijk?
Stap 3
Een autoverhuurbedrijf verhuurt wagens aan klanten. Klanten kunnen op voorhand een type wagen reserveren, waarbij ze aangeven wanneer ze de wagen zouden willen oppikken en wanneer ze deze zouden willen terugbrengen. Bij de eerste verhuur krijgen de klanten een klantennummer toegekend. Van elke klant houden we ook de naam, voornaam, adres, e-mailadres en GSM-nummer bij. Van elke wagen houden we merk, model, nummerplaat en chassisnummer bij. Ons systeem moet een overzicht genereren van:
- de reservaties die de klanten hebben gemaakt;
- de klanten die op dit ogenblik een wagen huren;
- de wagen en bij welke klanten deze zich op dit ogenblik bevinden;
- de wagens en wanneer deze beschikbaar zijn voor een volgend verhuur;
- alle wagens die in het verleden door een bepaalde klant werden gehuurd;
- alle klanten die in het verleden een bepaalde wagen hebben gehuurd.
Oefening 6: studentenadministratie
Voor de volgende oefeningen gaan we in een aantal stappen een ERD uittekenen. Elke stap voegt een stukje logica en/of complexiteit toe (blauwe cursieve tekst). Beschrijf duidelijk de entiteiten, attributen en relaties. Geef voor elk van de relaties duidelijk de kardinaliteit van elk van de entiteittypes aan. Gezien de verschillende opgaves telkens op elkaar verder bouwen, kan je in diagrams.net telkens een tab dupliceren. Zo houd je een overzicht van jouw werk en kan je de verschillende stappen onderscheiden.

Stap 1
Een student kan één of meerdere opleidingsonderdelen volgen, elk opleidingsonderdeel wordt gegeven door één lector. Lectoren geven les aan studenten. Van een student worden naam, voornaam, adres, en leeftijd bijgehouden. Van een lector worden naam, voornaam, discipline en aantal jaren in dienst bijgehouden. Van elk opleidingsonderdeel houden we de code en naam van het opleidingsonderdeel bij. We moeten het overzicht voor het lopende academiejaar kunnen geven.
Stap 2
Een student kan één of meerdere opleidingsonderdelen volgen, elk opleidingsonderdeel wordt gegeven door één lector. Lectoren geven les aan studenten. We willen een lijst kunnen genereren waarbij we een overzicht krijgen van welke studenten les krijgen van welke lectoren. Van een student worden naam, voornaam, adres, en leeftijd bijgehouden. Van een lector worden naam, voornaam, discipline en aantal jaren in dienst bijgehouden. Van elk opleidingsonderdeel houden we de code en naam van het opleidingsonderdeel bij. We moeten het overzicht voor het lopende academiejaar kunnen geven.
We kunnen de lijst genereren op basis van het vorige resultaat. Er moet niets toegevoegd worden.
Stap 3
Een student kan één of meerdere opleidingsonderdelen volgen, elk opleidingsonderdeel wordt gegeven door één of meerdere lectoren. Lectoren geven les aan studenten. We willen een lijst kunnen genereren waarbij we een overzicht krijgen van welke studenten les krijgen van welke lectoren. Van een student worden naam, voornaam, adres, en leeftijd bijgehouden. Van een lector worden naam, voornaam, discipline en aantal jaren in dienst bijgehouden. Van elk opleidingsonderdeel houden we de code en naam van het opleidingsonderdeel bij. We moeten het overzicht voor het lopende academiejaar kunnen geven.
Stap 4
Een student kan één of meerdere opleidingsonderdelen volgen, elk opleidingsonderdeel wordt gecoördineerd door één lector, maar wordt gegeven door één of meerdere lectoren. Lectoren geven les aan studenten. We willen een lijst kunnen genereren waarbij we een overzicht krijgen van welke studenten les krijgen van welke lectoren. Van een student worden naam, voornaam, adres, en leeftijd bijgehouden. Van een lector worden naam, voornaam, discipline en aantal jaren in dienst bijgehouden. Van elk opleidingsonderdeel houden we de code en naam van het opleidingsonderdeel bij. We moeten het overzicht voor het lopende academiejaar kunnen geven.
Stap 5
Een student kan één of meerdere opleidingsonderdelen volgen, elk opleidingsonderdeel wordt gecoördineerd door één lector, maar wordt gegeven door één of meerdere lectoren. Lectoren geven les aan studenten. We willen een lijst kunnen genereren waarbij we een overzicht krijgen van welke studenten les krijgen van welke lectoren. Van een student worden naam, voornaam, adres, en leeftijd bijgehouden. Van een lector worden naam, voornaam, de verschillende disciplines waar hij/zij toe behoort en aantal jaren in dienst bijgehouden. Van elk opleidingsonderdeel houden we de code en naam van het opleidingsonderdeel bij. We moeten het overzicht voor het lopende academiejaar kunnen geven.
Je kan dit alvast op twee manier oplossen, enerzijds met een entiteittype ‘Discipline’, anderzijds met een meervoudig attribuut ‘Discipline’. Beide oplossingen zijn correct.
Stap 6
Een student kan één of meerdere opleidingsonderdelen volgen, elk opleidingsonderdeel wordt gecoördineerd door één lector, maar wordt gegeven door één of meerdere lectoren. Lectoren geven les aan studenten. We willen een lijst kunnen genereren waarbij we een overzicht krijgen van welke studenten les krijgen van welke lectoren. Van een student worden naam, voornaam, adres, en leeftijd bijgehouden. Van een lector worden naam, voornaam, de verschillende disciplines waar hij/zij toe behoort en aantal jaren in dienst bijgehouden. Van elk opleidingsonderdeel houden we de code en naam van het opleidingsonderdeel bij. Voor elk opleidingsonderdeel dat door een student wordt gevolgd, houden we de punten bij die de student op dit opleidingsonderdeel heeft verdiend. We moeten het overzicht voor het lopende academiejaar kunnen geven.
Stap 7
Een student kan één of meerdere opleidingsonderdelen volgen, elk opleidingsonderdeel wordt gecoördineerd door één lector, maar wordt gegeven door één of meerdere lectoren. Lectoren geven les aan studenten. We willen een lijst kunnen genereren waarbij we een overzicht krijgen van welke studenten les krijgen van welke lectoren. Van een student worden naam, voornaam, adres, en leeftijd bijgehouden. Van een lector worden naam, voornaam, de verschillende disciplines waar hij/zij toe behoort en aantal jaren in dienst bijgehouden. Van elk opleidingsonderdeel houden we de code en naam van het opleidingsonderdeel bij. Voor elk opleidingsonderdeel dat door een student wordt gevolgd, houden we de punten bij die de student op dit opleidingsonderdeel heeft verdiend. De student kiest een stage binnen een bepaalde discipline. We moeten het overzicht voor het lopende academiejaar kunnen geven.
Stap 8
Een student kan één of meerdere opleidingsonderdelen volgen, elk opleidingsonderdeel wordt gecoördineerd door één lector, maar wordt gegeven door één of meerdere lectoren. Lectoren geven les aan studenten. We willen een lijst kunnen genereren waarbij we een overzicht krijgen van welke studenten les krijgen van welke lectoren. Van een student worden naam, voornaam, adres, en leeftijd bijgehouden. Van een lector worden naam, voornaam, de verschillende disciplines waar hij/zij toe behoort en aantal jaren in dienst bijgehouden. Van elk opleidingsonderdeel houden we de code en naam van het opleidingsonderdeel bij. Voor elk opleidingsonderdeel dat door een student wordt gevolgd, houden we de punten bij die de student op dit opleidingsonderdeel heeft verdiend. De student kiest een stage binnen een bepaalde discipline, waarbij een lector wordt aangeduid als een coach voor de stage. We moeten het overzicht voor het lopende academiejaar kunnen geven.
Stap 9
Een student kan één of meerdere opleidingsonderdelen volgen, elk opleidingsonderdeel wordt gecoördineerd door één lector, maar wordt gegeven door één of meerdere lectoren. Lectoren geven les aan studenten. We willen een lijst kunnen genereren waarbij we een overzicht krijgen van welke studenten les krijgen van welke lectoren. Van een student worden naam, voornaam, adres, en leeftijd bijgehouden. Van een lector worden naam, voornaam, de verschillende disciplines waar hij/zij toe behoort en aantal jaren in dienst bijgehouden. Van elk opleidingsonderdeel houden we de code en naam van het opleidingsonderdeel bij. Voor elk opleidingsonderdeel dat door een student wordt gevolgd, houden we de punten bij die de student op dit opleidingsonderdeel heeft verdiend. De student kiest een stage binnen een bepaalde discipline, waarbij een lector wordt aangeduid als een coach voor de stage. De discipline van de stage moet overeenkomen met de discipline van de lector. (Is het mogelijk om voorwaarden aan een ERD toe te voegen?) We moeten het overzicht voor het lopende academiejaar kunnen geven.
Het is niet mogelijk om voorwaarden toe te voegen aan een ERD. Het resultaat blijft dus ongewijzigd.
Stap 10
Een student kan één of meerdere opleidingsonderdelen volgen, elk opleidingsonderdeel wordt gecoördineerd door één lector, maar wordt gegeven door één of meerdere lectoren. Lectoren geven les aan studenten. We willen een lijst kunnen genereren waarbij we een overzicht krijgen van welke studenten les krijgen van welke lectoren. Van een student worden naam, voornaam, adres, en leeftijd bijgehouden. Van een lector worden naam, voornaam, de verschillende disciplines waar hij/zij toe behoort en aantal jaren in dienst bijgehouden. Van elk opleidingsonderdeel houden we de code en naam van het opleidingsonderdeel bij. Een opleidingsonderdeel kan op verschillende campussen gegeven worden. Elke campus heeft een naam en een adres. Voor elk opleidingsonderdeel dat door een student wordt gevolgd, houden we de punten bij die de student op dit opleidingsonderdeel heeft verdiend.De student kiest een stage binnen een bepaalde discipline, waarbij een lector wordt aangeduid als een coach voor de stage. De discipline van de stage moet overeenkomen met de discipline van de lector. We moeten het overzicht voor het lopende academiejaar kunnen geven.
Stap 11
Een student kan één of meerdere opleidingsonderdelen volgen, elk opleidingsonderdeel wordt gecoördineerd door één lector, maar wordt gegeven door één of meerdere lectoren. Lectoren geven les aan studenten. We willen een lijst kunnen genereren waarbij we een overzicht krijgen van welke studenten les krijgen van welke lectoren. Van een student worden naam, voornaam, adres, en leeftijd bijgehouden. Van een lector worden naam, voornaam, de verschillende disciplines waar hij/zij toe behoort en aantal jaren in dienst bijgehouden. Van elk opleidingsonderdeel houden we de code en naam van het opleidingsonderdeel bij. Sommige opleidingsonderdelen bouwen verder op bestaande opleidingsonderdelen en kunnen enkel gevolgd worden indien de student die opleidingsonderdeel heeft gevolgd. Een vak kan toegang geven tot meerdere vakken. Een vak kan ook vereisen dat verschillende andere vakken eerder gevolgd moeten zijn. Een opleidingsonderdeel kan op verschillende campussen gegeven worden. Elke campus heeft een naam en een adres. Voor elk opleidingsonderdeel dat door een student wordt gevolgd, houden we de punten bij die de student op dit opleidingsonderdeel heeft verdiend.De student kiest een stage binnen een bepaalde discipline, waarbij een lector wordt aangeduid als een coach voor de stage. De discipline van de stage moet overeenkomen met de discipline van de lector. We moeten het overzicht voor het lopende academiejaar kunnen geven.
Stap 12
Een student kan één of meerdere opleidingsonderdelen volgen, elk opleidingsonderdeel wordt gecoördineerd door één lector, maar wordt gegeven door één of meerdere lectoren. Lectoren geven les aan studenten. We willen een lijst kunnen genereren waarbij we een overzicht krijgen van welke studenten les krijgen van welke lectoren. Van een student worden naam, voornaam, adres, en leeftijd bijgehouden. Van een lector worden naam, voornaam, de verschillende disciplines waar hij/zij toe behoort en aantal jaren in dienst bijgehouden. Van elk opleidingsonderdeel houden we de code en naam van het opleidingsonderdeel bij. Sommige opleidingsonderdelen bouwen verder op bestaande opleidingsonderdelen en kunnen enkel gevolgd worden indien de student die opleidingsonderdeel heeft gevolgd. Een vak kan toegang geven tot meerdere vakken. Een vak kan ook vereisen dat verschillende andere vakken eerder gevolgd moeten zijn. Een opleidingsonderdeel kan op verschillende campussen gegeven worden. Elke campus heeft een naam en een adres. Voor elk opleidingsonderdeel dat door een student wordt gevolgd, houden we de punten bij die de student op dit opleidingsonderdeel heeft verdiend.De student kiest een stage binnen een bepaalde discipline, waarbij een lector wordt aangeduid als een coach voor de stage. De discipline van de stage moet overeenkomen met de discipline van de lector. We moeten het overzicht voor het lopende en alle afgelopen academiejaren kunnen geven.
Oefening 7: bibliotheek
Voor de volgende oefeningen gaan we in een aantal stappen een ERD uittekenen. Elke stap voegt een stukje logica en/of complexiteit toe (blauwe cursieve tekst) . Beschrijf duidelijk de entiteiten, attributen en relaties. Geef voor elk van de relaties duidelijk de kardinaliteit van elk van de entiteittypes aan. Gezien de verschillende opgaves telkens op elkaar verder bouwen, kan je in diagrams.net telkens een tab dupliceren. Zo houd je een overzicht van jouw werk en kan je de verschillende stappen onderscheiden.

Stap 1
Een bibliotheek leent boeken uit. Elk boek wordt gekenmerkt door een ISBN-nummer, een titel en één of meerdere auteurs. Van één bepaald boek kunnen we verschillende exemplaren hebben, daarom geven we elk boek een exemplaarnummer. Het ISBN en het exemplaarnummer laten ons toe elk boek uniek te identificeren. Om een boek uit te lenen moet je lid zijn van de bibliotheek. Wanneer een lid voor de eerste keer een boek ontleent, schrijft hij of zij zich in. Wanneer het lid zich inschrijft, ontvangen met de naam, voornaam, adres, e-mailadres en GSM-nummer. We kennen dan ook een lidnummer toe. De bibliotheek wil weten welke boeken op dit ogenblik ontleend zijn. Wanneer een boek niet op tijd wordt teruggebracht, wordt een boete geregistreerd. We willen een overzicht kunnen genereren van de openstaande boetes.
We kunnen dit op twee manieren oplossen. We kunnen de verschillende relaties als een combinatie van binaire relaties modelleren.
Het nadeel hiervan is dat we niet rechtstreeks kunnen achterhalen voor welke ontlening een bepaalde boete is gegeven. Alternatief kunnen we dit als een ternaire relatie modelleren. Hierbij kan een onlening optioneel gelinkt worden aan een boete. Deze optie heeft de voorkeur omdat we meer informatie kunnen bijhouden.
Stap 2
Een bibliotheek leent boeken uit. We hebben echter ook boeken die te waardevol zijn om uit te lenen. Deze kunnen enkel geraadpleegd worden in de bibliotheek. Elk boek wordt gekenmerkt door een ISBN nummer, een titel en één of meerdere auteurs. Van één bepaald boek kunnen we verschillende exemplaren hebben, daarom geven we elk boek een exemplaarnummer. Het ISBN en het exemplaarnummer laten ons toe elk boek uniek te identificeren. Om een boek uit te lenen moet je lid zijn van de bibliotheek. Wanneer een lid voor de eerste keer een boek ontleent, schrijft hij of zij zich in. Wanneer het lid zich inschrijft, ontvangen met de naam, voornaam, adres, e-mailadres en GSM-nummer. We kennen dan ook een lidnummer toe. De bibliotheek wil weten welke boeken op dit ogenblik ontleend zijn. Wanneer een boek niet op tijd wordt teruggebracht, wordt een boete geregistreerd. We willen een overzicht kunnen genereren van de openstaande boetes.
Stap 3
Een bibliotheek leent boeken uit. We hebben echter ook boeken die te waardevol zijn om uit te lenen. Deze kunnen enkel geraadpleegd worden in de bibliotheek. Elk boek wordt gekenmerkt door een ISBN nummer, een titel en één of meerdere auteurs. Van één bepaald boek kunnen we verschillende exemplaren hebben, daarom geven we elk boek een exemplaarnummer. Het ISBN en het exemplaarnummer laten ons toe elk boek uniek te identificeren. Om een boek uit te lenen moet je lid zijn van de bibliotheek. Wanneer een lid voor de eerste keer een boek ontleent, schrijft hij of zij zich in. Wanneer het lid zich inschrijft, ontvangen met de naam, voornaam, adres, e-mailadres en GSM-nummer. We kennen dan ook een lidnummer toe. De bibliotheek wil weten welke boeken op dit ogenblik ontleend zijn. Wanneer een boek niet op tijd wordt teruggebracht, wordt een boete geregistreerd. We willen een overzicht kunnen genereren van de openstaande boetes. De bibliothecaris wil niet enkel een overzicht welke boeken op dit ogenblik uitgeleend zijn, maar ook welke boeken het meest of minst uitgeleend worden, welke boeken het meest of minst geraadpleegd worden en welke leden het vaakst boeken te laat terugbrengen.
Oefening 8: bordspelenvereniging
Maak voor de volgende beschrijving een ERD-diagram. Geef duidelijk de kardinaliteit van de relaties en de attributen van de entiteittypes aan.

Een bordspelenvereniging wil een applicatie ontwikkelen om haar werking te ondersteunen. De vereniging organiseert tornooien voor de verschillende leden van de vereniging. Een tornooi draait rond één specifiek bordspel. Typisch geven we een grappige naam om makkelijk naar de leden te communiceren. Het doel is om een lid als winnaar van het tornooi uit te roepen. De leden schrijven in voor het tornooi. Op basis van de inschrijvingen worden wedstrijden georganiseerd. Elke wedstrijd wordt op een bepaalde datum en een bepaald tijdstip ingepland. De wedstrijden gaan door in het verenigingscentrum. Elke tafel heeft een nummer. Voor de wedstrijden houden bij op welke tafel de wedstrijd gepland is. Elke wedstrijd wordt gespeeld door een aantal van de leden van de vereniging. Bij elke wedstrijd neemt één van de leden de rol van spelleider. Deze is verantwoordelijk om de individuele scores van de spelers te registreren. De leden worden geregistreerd in het systeem zodat ze kunnen deelnemen aan wedstrijden en de rol van spelleider opnemen. Voor elke lid houden we naam, e-mailadres en geboortedatum bij. Leden kunnen andere leden aanbrengen. We hebben een catalogus van spellen die we gebruiken om de tornooien en wedstrijden te organiseren. Van elk spel moeten we de naam, het aantal spelers en de editie weten. Een bordspel kan of een basisspel, of een uitbreiding zijn. Indien het gaat om een uitbreiding, willen we weten van welk basisspel het een uitbreiding is. Van elk bordspel willen we een overzicht van de leden die wedstrijden van het bordspel kunnen leiden. We moeten op elk ogenblik een overzicht kunnen creëren van
- de planning van de tornooien en de wedstrijden;
- de gespeelde wedstrijden, welke leden hebben deelgenomen en de scores die de leden hebben gehaald;
- de winnaars van de verschillende tornooien;
- de catalogus van bordspelen, met mogelijke spelleiders.