Hoofdstuk 11. Informatiemodellering

  11.8 Groeperen: het ontwerp van de database

Als de beperkingsregels in het IGD zijn aangebracht is het model van de informatie klaar.
Dan kan bepaald worden welke tabellen er voor de database nodig zijn, en welke kolommen er in de tabellen voorkomen.

Dat kan je zelf doen. Maar je kan ook de database door Infagon laten ontwerpen.
Als je klikt op het GLR-icoontje (GLR=grouping, lexicalizing, reducing) dan krijgt je het volgende venster:



Als je dan op Run klikt gaat het programma controleren of aan alle voorwaarden voldaan is. En als dat het geval is dan worden de tabellen gevormd.

Als je niet op alle feittypen en objecttypen een pijl hebt geplaatst krijg je een foutmelding en dan moet je dat eerst veranderen.

Soms krijg je ook nog waarschuwingen, maar daar hoef je je niets van aan te trekken.

De controle bestaat uit negen onderdelen (checks), waarbij de checks 1 tot en met 3 van groot belang zijn.
Check 7 geeft vaak een groot aantal waarschuwingen waar we ons niets van aan hoeven te trekken.
We bespreken daarom alleen 1, 2, 3 en 7.

Als je voor verschillende objecten dezelfde labeltypen hebt gebruikt dan krijg je dat in een venster te zien, en dan moet je er alsnog verschillende namen voor bedenken door er iets voor te zetten (prefix) of er achter (suffix)

Als je de uniciteitsbeperkingen hebt aangebracht zoals in de figuur vlak boven 11.8 dan krijg je het volgende uitvoerrapport. Je ziet dat er wel enkele waarschuwingen zijn, maar dat er 0 Errors zijn.



Klik dan op Run en als alles goed gaat dan krijg je een nieuw IGD dat er als volgt uitziet:



Je ziet dat er drie tabellen zijn, en je ziet ook uit welke kolommen die tabellen bestaan.
En je ziet ook wat de bijbehorende sleutelvelden zijn, dat zie je aan de pijlen die er boven staan.

Je kunt de volgorde van de vakjes eventueel nog veranderen.
Het is het meest logisch om in alle tabellen de voornaam en de achternaam vooraan te plaatsen.
Als dat niet zo is, en je wilt het vakje van de voornaam verschuiven, dan selecteer je het vakje van voornaam (klik op het vakje terwijl je de Alt-toets ingedrukt houdt) en je versleept het naar voren.

Hoe bepaal je welke tabellen er zijn, en wat er in die tabellen zit?

Je kunt volgen hoe het programma Infagon het doet, maar je moet het ook zelf kunnen!
Om het GLR-proces te starten kun je in onderstaand venster het vinkje voor Step-by-Step aanklikken.




Als je dan op Run klikt gaat het programma bezig, en dan kun je precies volgen wat er gebeurt.

Eerst verschijnt het volgende venster:



Het programma ziet dat een persoon maar één geboortedatum heeft (aan de pijl van de uniciteitsbeperking), en stelt voor om de geboortedatum in de tabel van de persoon (voornaam+achternaam) op te nemen. Het feittype is_geboren_op en het objecttype datum hebben dan hun dienst gedaan, en kunnen dan wel gemist worden.

Als je op Yes hebt geklikt verschijnt het volgende venster:



Het programma ziet dat een persoon maar één adres heeft (aan de pijl van de uniciteitsbeperking), en stelt voor om het adres in de tabel met voornaam+achternaam+geboortedatum op te nemen. Het feittype woont_op en het objecttype adres hebben dan hun dienst gedaan, en kunnen dan wel gemist worden.

Als je op Yes hebt geklikt verschijnt het volgende venster:



Het programma ziet dat een persoon maar één woonplaats heeft (aan de pijl van de uniciteitsbeperking), en stelt voor om de woonplaats in de tabel met voornaam+achternaam+geboortedatum+adres op te nemen. Het feittype woont_in en het objecttype plaats hebben dan hun dienst gedaan, en kunnen dan wel gemist worden.

Als je op Yes hebt geklikt verschijnt het volgende venster:



Het programma ziet dat een persoon maar in één klas kan zitten (aan de pijl van de uniciteitsbeperking), en stelt voor om de klas in de tabel met voornaam+achternaam+geboortedatum+adres+woonplaats op te nemen. Het feittype zit_in_klas en het objecttype klas hebben dan hun dienst gedaan, en kunnen dan wel gemist worden.

Dan zijn er nog twee feittypen over, die verbonden zijn met het objecttype persoon.
Er zit geen uniciteitsbepering op de rol persoon bij die feittypen, daarom worden daar aparte tabellen voor gegenereerd.
De ene tabel bevat dan de voornaam+achternaam van de persoon + sport.
De andere tabel bevat dan de voornaam+achternaam van de persoon + vak + cijfer.