9.2 Het relationele model
Wij gaan werken met een RDBMS, een Relationeel DataBase Management Systeem.
Daarin worden de gegevens vastgelegd met behulp van tabellen en die tabellen hebben ook
nog onderlinge relaties.
We bekijken als voorbeeld een database van een Tennisvereniging.
De database van die tennisvereniging bestaat uit een aantal tabellen. Ten eerste de tabel met de gegevens van alle leden,
die zie je hieronder.
Deze tabel noemen we leden.
lidnr | naam | woonplaats | geboren | leeftijd | lidsoort | score |
1 | Annie | Buitenpost | 1944-06-02 | 62 | senior | 2075 |
2 | Willem | Veenklooster | 1992-09-13 | 14 | jeugdlid | 987 |
3 | Hillegien | Kollum | 1968-01-11 | 38 | senior | 1598 |
4 | Margreet | Kollum | 1980-09-18 | 26 | aktielid | 234 |
5 | Eline | Buitenpost | 1996-11-04 | 10 | jeugdlid | 435 |
6 | Gerrit | Twijzel | 1958-05-04 | 48 | senior | 5989 |
7 | Femke | Augustinusga | 1993-09-19 | 13 | jeugdlid | 798 |
8 | Dona | Burum | 2000-05-15 | 6 | mkmt | 155 |
9 | Chris | Burum | 1998-12-12 | 7 | mkmt | 236 |
10 | Dieuwke | Buitenpost | 1959-09-06 | 47 | senior | 7345 |
11 | Kees | Veenklooster | 1965-07-27 | 41 | senior | 6345 |
12 | Leon | Augustinusga | 1980-06-06 | 26 | aktielid | 380 |
13 | Sabine | Drogeham | 1970-11-10 | 36 | senior | 4999 |
14 | Femke | Drogeham | 1979-07-06 | 27 | senior | 3768 |
Verder hebben we ook nog een tabel waarin de competities staan, waaraan sommige leden meedoen.
Deze tabel geven we aan met de naam competitiesoort en je ziet hem hieronder.
soort | speeldag | aanvoerder |
HD | donderdag | 11 |
HE | zaterdag | 6 |
DD | dinsdag | 3 |
JD | woensdag | 2 |
GD | zaterdag | |
Iedere tabel heeft een naam. Zo zijn de namen van bovenstaande tabellen leden en competitiesoort.
Een tabel bestaat uit rijen en kolommen.
Een rij gegevens noemen we ook wel een tupel of record, het is te vergelijken met een kaart uit een kaartenbak.
De gegevens uit een rij horen bijelkaar.
De kolommen noemen we ook wel attributen of velden.
Bovenstaande tabellen staan niet los van elkaar,
er bestaat een bepaald verband tussen, ze hebben een relatie.
Want als je naar de tweede tabel kijkt, die van de competitiesoort, dan zie je dat er bij de eerste rij in de kolom soort HD staat.
HD staat voor "heren dubbel". Verder zie je in de laatste kolom dat de aanvoerder nummer 11 is.
Als je wilt weten wie daarmee bedoeld wordt moet je naar de eerste tabel kijken; daar zie je dat lidnummer 11 Kees uit
Veenklooster is.
Als je de gegevens van de tabel met de competitiesoort wilt analyseren dan heb je de tabel met de leden erbij nodig, omdat er
een relatie tussen die twee bestaat.
Het relationele model en het resultaat daarvan, een relationele database, werd voor het eerst door
dr. Edgar F. Codd (zie hierboven)
in 1970 geïntroduceerd.
De belangrijkste taken van een databasesysteem zijn de volgende:
- Het opslaan van gegevens, en het mogelijk maken van
wijzigen van de gegevens.
- Het kunnen opvragen van gegevens, en het verwerken van informatie
(je moet bijvoorbeeld lijstjes kunnen maken van dingen die je
nodig hebt of weten wilt)
- Het voorkomen van fouten in de database. Natuurlijk kan een database niet controleren of je een typfout in een naam
hebt gemaakt, maar er kunnen wel bepaalde dingen worden gecontroleerd.
Het zou bij bovenstaande database bijvoorbeeld kunnen gebeuren dat je twee leden hetzelfde nummer geeft; maar dan kan de computer
wel een foutmelding geven.
Het zou bij diezelfde database ook kunnen gebeuren dat je bij de tabel van de competitiesoort in de aanvoerder-kolom een nummer
gebruikt dat geen van de leden heeft. Dat kan de computer controleren en een foutmelding geven.
We noemen dit het bewaken van de integriteit van de database. Hiermee bedoelen we dat het systeem kan controleren of
de ingevoerde gegevens aan bepaalde regels voldoen.
Je zag in bovenstaande database dat elk lid in de tabel leden met een nummer werd aangegeven, het lidnummer.
Zoiets gebeurt heel vaak in tabellen, dat de rijen met een nummer worden aangegeven. Daar zijn
twee redenen voor.
- Ten eerste kan er dan geen verwarring optreden als er leden zijn met dezelfde naam. Het nummer is bij iedereen
verschillend (dat is tenminste wel de bedoeling), het is uniek voor elk lid.
Een goed database-programma kan ook controleren of die nummers bij iedereen verschillend zijn.
Het kan zelfs zo gemaakt worden dat je dat nummer zelf niet hoeft in te voeren, maar dat de computer dat nummer automatisch
geeft aan een nieuw lid.
- Het is heel gemakkelijk om met een nummer te verwijzen naar een rij uit een andere tabel.
Zoals in bovenstaand voorbeeld: de aanvoerder in de tabel competitiesoort wordt met een nummer aangegeven, en dat nummer is
het lidnummer uit de andere tabel.