Hoofdstuk 2.1 Hoofdstuk 2.2 Hoofdstuk 2.3 Hoofdstuk 2.4 Hoofdstuk 2.5 Hoofdstuk 2.6 Hoofdstuk 3.1 Hoofdstuk 3.2 Hoofdstuk 3.3 Hoofdstuk 3.4 Hoofdstuk 3.5
1 - | Het relationele model |
2 - | Tabellen in een relationeel model |
1 - Het relationele model ![]() ![]() ![]() |
© Instruct |
Verschillende modellen | |||||||||||||||||||||||||||
![]() ![]() Informatie over het relationele model: www.utexas.edu |
Behalve het relationele model bestaan er voor het ontwerpen van databases nog een aantal modellen, waaronder:
|
||||||||||||||||||||||||||
Begrippen in het relationele model | |||||||||||||||||||||||||||
Het relationele model kent begrippen op twee niveaus:
De beide groepen begrippen kunnen met elkaar in verband worden gebracht:
Daarnaast kent het relationele model nog begrippen die op beide niveaus gebruikt worden. Dat zijn: primaire sleutel en vreemde sleutel. De begrippen zullen nu stuk voor stuk besproken worden. |
|||||||||||||||||||||||||||
Relatie | |||||||||||||||||||||||||||
Het begrip relatie heeft in het relationele model een andere betekenis dan bij ERM. In ERM betekent relatie: een verband tussen twee of meer entiteiten. In het relationele model komt ‘relatie’ overeen met ‘entiteittype’ bij ERM. Twee zaken zijn hierbij van belang:
Relatie in het relationele model Een relatie heeft een naam: meestal de naam van het entiteittype. Daarachter wordt tussen haakjes de opsomming gegeven van de eigenschappen van de relatie, oftewel de attributen. Dit is de schrijfwijze van de relatie Product:
Identificatie
Tot slot wordt in de relatiebeschrijving nog opgenomen op welke wijze het verband tussen entiteiten wordt gelegd. Samengevat omvat een relatiebeschrijving :
|
|||||||||||||||||||||||||||
Attribuut | |||||||||||||||||||||||||||
Wat bij ERM een ‘attribuuttype’ wordt genoemd, heet in het relationele model een attribuut. Bij ERM zijn twee soorten attribuuttypen te onderkennen:
In het relationele model zijn drie soorten attributen te onderkennen:
|
|||||||||||||||||||||||||||
Tupel | |||||||||||||||||||||||||||
Een voorbeeld van de relatie Product kan er als volgt uitzien:
De bovenste rij omvat de beschrijving van de relatie Product. De vier rijen daaronder vormen een zogeheten voorbeeldpopulatie van de relatie Product. Elk van die rijen wordt tupel genoemd. |
|||||||||||||||||||||||||||
Primaire sleutel | |||||||||||||||||||||||||||
De primaire sleutel is de identificatie van een relatie, vergelijkbaar met de identifier bij ERM. Er gelden twee regels voor de primaire sleutel:
Een voorbeeld van dit laatste. In veel bestanden van bedrijven worden klanten uniek geïdentificeerd met hun postcode en huisnummer. Samen vormen deze de primaire sleutel van die tabel. Als nu één van beide attributen een ongedefinieerde waarde heeft, is de sleutel nutteloos. Identificatie is dan niet meer mogelijk omdat bij een postcode tientallen huisnummers kunnen horen en bij een huisnummer miljoenen postcodes. |
|||||||||||||||||||||||||||
Null-waarde | |||||||||||||||||||||||||||
Als de waarde van een attribuut niet bekend is, krijgt zo’n attribuut eennull-waarde: een niet nader gedefinieerde waarde. Stel dat in een klantendatabase wordt vastgelegd onder welk telefoonnummer elke klant bereikbaar is. Er zullen ongetwijfeld personen zijn die niet telefonisch bereikbaar (willen) zijn en in dat geval kan het telefoonnummer niet ingevuld worden. Dat klinkt heel eenvoudig, maar in een database moet vastgelegd worden dat een waarde er niet is. Daarvoor dient het begrip null-waarde. Als een waarde niet bekend is, mag je daarvoor geen spatie invullen en ook geen nul. Spatie en nul zijn bekende waarden; een telefoonnummer kan niet nul zijn en kan ook geen spatie zijn. De ‘waarde’ null is een speciaal teken in de database. Hoe dat teken eruit ziet, wordt bepaald door de leverancier van de databaseprogrammatuur.
|
|||||||||||||||||||||||||||
Vreemde sleutel | |||||||||||||||||||||||||||
Het verband tussen entiteiten wordt in het relationele model gerealiseerd door middel van een vreemde sleutel. Dit kunnen we het beste met een voorbeeld illustreren. Hieronder staat het ERD dat het verband aangeeft tussen de entiteittypen Student en Klas, gevolgd door de tekstuele beschrijving van de entiteittypen.
Dit ERD levert in het relationele model twee relaties op, te weten Student en Klas:
Klas (klasnummer, aantal_studenten) Het feit dat een student deel uitmaakt van een bepaalde klas, wordt in het relationele model aangegeven door aan de relatie Student het attribuut ‘klasnummer’ toe te voegen. Het attribuut ’klasnummer’ in de relatie Student wordt vreemde sleutel genoemd. Het is de primaire sleutel van de relatie Klas en daarmee een vreemde sleutel van de relatie Student.
Schrijfwijze
< klasnummer> )Klas (klasnummer, aantal_studenten) Een vreemde sleutel moet verwijzen naar een volledige primaire sleutel. Dat betekent in de eerste plaats dat in de definitie van de vreemde sleutel dezelfde attributen moeten voorkomen als in de primaire sleutel waarnaar deze vreemde sleutel verwijst. Laten we nog even kijken naar het verband tussen Student en Klas. Daarin brengen we één wijziging aan, namelijk dat de klas wordt geïdentificeerd door de combinatie van de attributen ‘afdeling‘ en ‘klasnummer‘.
< afdeling, klasnummer> )Klas (afdeling, klasnummer, aantal_studenten)
De primaire sleutel van de relatie Klas is nu: afdeling plus klasnummer. Dat houdt in dat de vreemde sleutel in de relatie Student ook afdeling plus klasnummer moet zijn. Je ziet in de relatie Student dat deze beide attributen geplaatst zijn tussen één stel punthaken:
In de tweede plaats moet de waarde van de vreemde sleutel een bestaande waarde zijn van de primaire sleutel. De combinatie De vreemde sleutel mág een null-waarde hebben. In het geval van de student betekent dit dat een student niet in een klas hoeft te zitten. Dat is bijvoorbeeld het geval als een school nieuwe leerlingen invoert maar nog niet weet in welke klas ze geplaatst zullen worden. Dat kan dus alleen het geval zijn als in het ontwerp de optionaliteit tussen het entiteittype student en het relatietype ‘zit in’ in het ERD 0 is. Bestaat een vreemde sleutel uit meer attributen, dan geldt: álle attributen van de vreemde sleutel hebben een null-waarde, of álle attributen van de vreemde sleutel hebben een waarde. Deze regels tezamen staan bekend als referentiële integriteit. De referentiële integriteit voorkomt dat de vreemde sleutel verwijst naar een niet-bestaande tupel in een relatie.
|
2 - Tabellen in een relationeel model ![]() ![]() ![]() |
© Instruct |
Gegevens in een relationele database worden in de vorm van tabellen opgeslagen. Natuurlijk moeten deze tabellen wel aan enkele eisen voldoen:
|