Voorbeelduitwerking Informatiseringsbank Deze oefenopgave hoort bij Hoofdstuk 3 van het dictaat Datamodellering en –verwerking (8C020). De uitwerking die hier wordt beschreven is een voorbeelduitwerking. Andere oplossingen hoeven zeker niet fout of slechter te zijn. De informatiseringsbank is een overheidsinstelling die studietoelagen toekent aan studenten die daar recht op hebben. Om te bepalen of een student een studietoelage krijgt, en hoe hoog die toelage is, moet de informatiseringsbank tenminste het adres, de studie en de leeftijd van die student hebben. Later zullen we nagaan welke informatie er nog meer nodig is en hoe dit steeds gemodelleerd kan worden. Het is bij deze opgave steeds de bedoeling om je antwoord uit een vraag mee te nemen naar de volgende en het model dan aan te passen aan de nieuwe vraag. 1. Geef in een ER-diagram aan, welke entiteiten en attributen je kunt onderscheiden. Voor de hand liggende entiteiten zijn STUDENT (met attributen ADRES, STUDIE, GEB_DATUM, CORR_NR en NAAM) en STUDIETOELAGE (met attribuut BEDRAG). 2. Welke relaties bestaan er tussen de verschillende entiteiten? Geef van een relatie ook de minimum en maximum cardinaliteit aan. 3. Geef voor elke entiteit een geschikte (primaire) sleutel en geef aan waarom deze sleutel geschikt is. De combinatie van NAAM en ADRES is niet altijd uniek. Bovendien is het een samengestelde sleutel (meer dan één attribuut) en is het aan verandering onderhevig. Dit is dus geen goede sleutel. Een betere sleutel is de kunstmatige sleutel CORR_NR. De entiteit STUDIETOELAGE is een zwakke entiteit, d.w.z. een instantie van STUDIETOELAGE kan alleen bestaan indien er een relatie bestaat met een instantie van STUDENT. Om deze reden erft STUDIETOELAGE het attribuut CORR_NR als onderdeel van de primaire sleutel. We hebben het model nu heel simpel voorgesteld. Het zal echter zo zijn, dat er van bepaalde attributen soms meerdere waarden bijgehouden worden. 4. Voor welke attributen zal in sommige gevallen meer dan één waarde bijgehouden worden en waarom? Een meerwaardig attribuut is bijvoorbeeld ADRES, omdat van elke student zowel het studie- als vakantieadres wordt bijgehouden. Een ander meerwaardig attribuut is STUDIE, omdat een student meerdere studies tegelijk kan volgen. 5. Deze meerwaardige attributen zijn meestal niet gewenst. Welke meerwaardige attributen zou je in dit geval willen vervangen? Bedenk daarvoor een duidelijkere constructie. Meerwaardig attribuut ADRES kan op verschillende manieren worden vervangen: Meerwaardig attribuut STUDIE kan als volgt worden vervangen: Gegevens kunnen veranderen in de tijd. Soms wil je dan zowel oude als nieuwe waarden bijhouden, in plaats van alle oude gegevens door de nieuwe te vervangen. Dit kun je doen door tijd te modelleren. 6. Welke gegevens in ons model zijn tijdafhankelijk? Hoe ga je dit modelleren? De volgende gegevens zijn tijdsafhankelijk: STUDIE: een student kan een studie onderbreken of een vervolgstudie gaan doen. STUDIETOELAGE: studietoelage verandert bij nieuwe wetten of bij veranderingen in studentgegevens. STUDIE- en VAKANTIEADRES: indien adres verandert, moet oude adres ook bijgehouden worden. Tijdafhankelijke gegevens kunnen als volgt worden gemodelleerd: Een alternatieve mogelijkheid om veranderingen in adresgegevens te registreren: We hebben de studietoelage die een student krijgt heel eenvoudig gemodelleerd, als één entiteit. Zo’n studietoelage is echter opgebouwd uit een basisbeurs, een rentedragende lening en een aanvullende beurs. 7. Welke verschillen en overeenkomsten zijn er tussen de verschillende beurzen? Hoe modelleer je dit? Geef van elke entiteit weer zijn sleutel en denk ook aan de cardinaliteit van de relaties. De verschillende studietoelagen hebben de volgende attributen gemeenschappelijk: VAN, TOT, BEDRAG. Verder is de combinatie van CORR_NR en VAN geen goede sleutel, omdat een student op één bepaald moment meerdere studietoelagen kan ontvangen. Daarom is gekozen voor een nieuwe (kunstmatige) sleutel TOELAGE_NR. Het attribuut CORR_NR is hiermee overbodig geworden. Het is wel heel waarschijnlijk dat het correspondentienummer van een student opgeslagen is in het toelagenummer van die student. Er zijn drie entiteiten die een ISA-relatie hebben met entiteit ST_TOELAGE, namelijk BEURS, AANV, en LENING. BEURS heeft als extra attribuut STATUS, die aangeeft of de beurs voorlopig of definitief toegewezen is. Van LENING wordt het rentepercentage bijgehouden. Ieder van deze entiteiten erft de sleutel van ST_TOELAGE. Het model is hieronder weergegeven: Om ervoor te zorgen dat de gegevens die ingevoerd worden correct zijn en blijven, worden er bepaalde constraints gemodelleerd. In het uiteindelijke systeem zal bijvoorbeeld bij het invoeren van gegevens gecontroleerd worden of de gegevens aan de gegeven regels voldoen. 8. Specificeer van drie verschillende attributen met verschillende domeinen geschikte domeinconstraints. RENTE: de waarde moet groter zijn dan 0 en ten hoogste gelijk zijn aan 100. BEDRAG: positief, met twee cijfers achter de komma. Waarde valt tussen 0 en een maximum bedrag. TOT: hoeft niet van toepassing te zijn. Een datum is als volgt aangegeven DD-MM-JJJJ (dag, maand, jaar). 9. Geef ook een trigger voor het model. Een voorbeeld van een trigger: als de leeftijd (“vandaag – geboortedatum”) van een student een bepaald maximum bereikt dan vervalt de toelage.