## GLR-algoritme

Na het controleren op fouten wordt het elementair IGD omgezet naar een ontwerp voor een relationele database. Dit gebeurt in drie stappen: het groeperen, het lexicaliseren, het reduceren. Deze stappen vormen samen het GLR-algoritme.
Bekijk nog eens het IGD van het model van herkansingen waarin we alle beperkingen hebben aangebracht:

In het IGD staan een aantal feittypen, waarin je meerdere tabellen bestaande uit één, twee of drie kolommen kunt herkennen. Er zijn veel tabellen en een aantal kolommen kunnen makkelijk samengevoegd worden zonder dat er redundantie optreedt. Dit wordt groeperen genoemd.

De feittypen Leerlingklas, Leerlingadres, Leerlingwoonplaats en Leerlingnaam kunnen worden samengevoegd. Elke leerling komt één keer voor in Leerlingklas: op de rol van Leerling ligt namelijk een uniciteits- en totaliteitsbeperking. Hetzelfde geldt voor de feittypen Leerlingadres, Leerlingwoonplaats en Leerlingnaam. Het resultaat zal een niet-elementair feittype zijn, waarbij echter geen redundantie optreedt.
Om het model om te kunnen zetten naar een relationele database moeten de rollen gespeeld worden door een labeltype. Bijna alle rollen worden gespeeld door objecttypen.
Bij de tweede stap, het lexicaliseren, worden de feittypen zo aangepast dat alle rollen worden gespeeld door labeltypen.
Tijdens de laatste stap, het reduceren, worden eventueel overbodige feittypen alsnog geschrapt.
Het GLR-algoritme wordt gestart door in het menu onder Run op Transform … (GLR) te klikken.

Er verschijnt een venster waarin gemeld wordt dat het IGD niet door alle testen heen gekomen is. Dat zijn de 16 waarschuwingen waar al eerder over is gesproken.

We negeren in dit voorbeeld de waarschuwingen en gaan door met het uitvoeren van het GLR-algoritme. Er verschijnt nu een melding dat het programma het oorspronkelijke model wil opslaan voordat het GLR-algoritme zal worden uitgevoerd.

Na het klikken op de OK-knop wordt het GLR-algoritme uitgevoerd. CaseTalk stelt voor om het nieuwe bestand (herkansingen_GLR) op te slaan.

Voor herkansingen_grl.igg moeten we een nieuw IGD maken. Daarvoor kiezen we in het menu bij File → New → Diagram. We geven het diagram de naam herkansingen_glr.igd.
In de Project Manager staat nu:

Het nieuwe IGD-venster met daarin het gegroepeerde model ziet er nogal rommelig uit. Dat komt doordat de rollen verplaatst zijn. Door wat heen en weer te slepen, maak je het model weer overzichtelijk.

In het nieuwe IGD zijn onder de feittypen Leerling, Leerlingvakdocent, Toets, Resultaat en Klas de tabellen makkelijk te herkennen.
Het kan voorkomen dat er bij een rol de letters OP staan. Dit is een afkorting van optioneel en geeft aan dat er null-waarden mogen voorkomen. Null-waarden kunnen in een elementair feittype niet voorkomen. Zij ontstaan pas na het groeperen.