Relaties tussen tabellen
In het semantisch gegevensmodel (SGM) komen infologische relaties tussen primaire entiteittypen voor. Zo kan er een infologische relatie bestaan tussen de entiteittypen medewerker en afdeling, die tot uitdrukking komt in het beweringtype:
medewerker werkt op afdeling.
In het operationeel gegevensmodel bij dit model kun je tabellen aantreffen voor de entiteittypen medewerker en afdeling. Deze zouden er, aangevuld met enkele gegevens, als volgt uit kunnen zien.
|
|
De vraag is nu, hoe de bedoelde relatie tussen de twee entiteittypen in dit tabellenmodel tot uitdrukking gebracht kan worden. Een directe manier is door de primaire sleutel (afdelingscode) uit de tabel afdeling als extra attribuuttype in de tabel medewerker op te nemen. Het tabellenmodel ziet er dan als volgt uit.
|
|
Er bestaat dus een relatie tussen tabel A (Afdeling) en tabel B (Medewerker), indien tabel B attribuuttypen heeft die de primaire sleutel vormen van tabel A.
Dit verwijzende attribuuttype wordt een externe sleutel of ook wel vreemde sleutel genoemd. De afdelingscode in de tabel Medewerker is een externe sleutel, omdat deze attributen elk precies één rij uit een andere tabel (namelijk Afdeling) aanwijzen.
In het SGM gaan we bewust om met de relaties. D.w.z. we specificeren daar bijvoorbeeld dat er een infologische relatie bestaat tussen medewerker en afdeling, hetgeen tot uitdrukking komt in een gegevenstype medewerker werkt op afdeling. Het relatiebegrip gaat echter verder. We zeggen dan ook dat er een relatie bestaat tussen tabel A en tabel B, als beide tabellen attribuuttypen bevatten, die op hetzelfde domein zijn gespecificeerd. Het verschil met het hiervoor genoemde enge begrip is, dat die attribuuttypen geen primaire of externe sleutels behoeven te zijn.
Alleen de relaties in de enge zin moeten voldoen aan de eis van referentiële integriteit.
In het proces-gegevensmodel zijn de cardinaliteiten benoemd, zowel cijfermatig in de diagrammen (0, 1, n, ...), als in de vorm van teksthaken en accolades in de beweringtypen. Ook hiervan vinden we de effecten in het logische gegevensmodel. Zo kan in het SGM het volgende beweringtype zijn gespecificeerd:
|
Uit bovenstaand model vloeien de volgende cardinaliteiten voort:
-
iedere medewerker werkt op een afdeling;
-
een medewerker kan op ten hoogste één afdeling werken;
-
op een afdeling behoeven geen medewerkers te werken;
-
op een afdeling kan meer dan één medewerker werken.
Kijken we naar het tabellenmodel, dan vinden we daarin van deze cardinaliteiten het volgende terug:
-
In de tabel MEDEWERKER is voor iedere rij het attribuuttype afdelingscode gevuld;
-
Inherent aan de structuur van het tabellenmodel is, dat een medewerker bij ten hoogste één afdeling kan werken (per rij kun je namelijk slechts één afdelingscode registreren).
-
Er zijn rijen in de tabel AFDELING waarvan de primaire sleutel niet als externe sleutel in de kolom afdelingscode van de tabel MEDEWERKER voorkomt.
-
In de kolom afdelingscode van de tabel MEDEWERKER komt meermalen dezelfde waarde voor (bij verschillende medewerkers).
In het proces-gegevensmodel kunnen ook zgn. meer op meer relaties zijn gespecificeerd, zoals in onderstaand voorbeeld:
|
Uit dit voorbeeld blijkt, dat een medewerker op meer afdelingen kan werken, en dat op een afdeling meer medewerkers kunnen werken. We zeggen dan, dat tussen medewerker en afdeling een n:m-relatie bestaat. In het tabellenmodel moeten deze worden opgelost, iets waarvoor de volgende truc is uitgevonden:
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
relatietabel:
|
Aan het model is een tabel toegevoegd, die uitsluitend is bedoeld om de relatie tussen medewerker en afdeling te kunnen representeren (relatietabel). Daarin is bijvoorbeeld geregistreerd dat de medewerker met nummer 24680 (waarvan we in de medewerkertabel kunnen zien dat daarmee Karel de Groot wordt bedoeld) werkt op zowel de afdeling BA als de afdeling P1. Daarnaast kunnen we zien, dat op afdeling P1 tevens de medewerker met nummer 68024 werkt.
De relatietabel kan nog andere in het SGM gespecificeerde attribuuttypen over die relatie bevatten zoals de ingangs- en einddatum van de relatie en het percentage van de tijd waarin de medewerker op de betreffende afdeling werkt.
De relatietabel is een voorbeeld van een tabel, die niet als primair entiteittype in het proces-gegevensmodel is gespecificeerd.
Lees verder: Integriteit van tabellen