Databases bewaren grote hoeveelheden gegevens gestructureerd en betrouwbaar. Dit keuzethema behandelt het relationele model (tabellen met rijen en kolommen, primaire en refererende sleutels), het ontwerpen met ER-modellen, het bevragen en muteren met SQL, en het normaliseren van een schema om redundantie en anomalieën te voorkomen. Het is verdieping binnen het schoolexamen. Databases verbinden domein C (representatie) met domein F (client-server): vrijwel elke webtoepassing steunt op een database achter de server.
4 Onderdelen~13 min leestijd4 VaardighedenNiveau Basis 1 · Standaard 2 · Verdieping 1
basisniveau
Het relationele model, sleutels en eenvoudige SELECT-query’s vormen de kern.
verhoogd niveau
JOIN over meerdere tabellen, aggregaties met GROUP BY en normalisatie tot 3NF horen bij de verdieping.
Leesdiepte: Verdieping
Tekstgrootte: Standaard
Een tabel met primaire en refererende sleutel
In de tabel Leerling(leerlingID, naam, klasID) wil iemand ‘naam’ als primaire sleutel gebruiken. Leg uit waarom dat fout is en wijs de juiste sleutels aan.
Twee leerlingen kunnen dezelfde naam hebben; ‘naam’ is dus niet gegarandeerd uniek en ongeschikt als primaire sleutel.
leerlingID is per definitie uniek en niet leeg → de juiste primaire sleutel.
klasID verwijst naar de primaire sleutel van de klassentabel → refererende sleutel.
Resultaat: leerlingID is de primaire sleutel, klasID de refererende sleutel; ‘naam’ voldoet niet aan de uniciteitseis.
Veelgemaakte fouten
Actieve herhaling
Gegeven een tabel `Boek(ISBN, titel, auteur, uitgeverID)` en een tabel `Uitgever(uitgeverID, naam, plaats)`. Benoem de primaire sleutel van elke tabel en de refererende sleutel, en leg uit welke relatie ze samen leggen.
Actief ophalen
Haal de kernpunten op — onthul ze daarna.
Bronnen: Examenprogramma informatica vwo — keuze H (relationeel model) (CvTE / Examenblad)
ER-model van een school
Een leerling volgt meerdere vakken en een vak wordt door meerdere leerlingen gevolgd. Zet deze relatie om naar tabellen.
Meerdere aan beide kanten → veel-op-veel (N:M).
Leerling(leerlingID, …) en Vak(vakID, …), elk met eigen primaire sleutel.
Volgt(leerlingID, vakID): elke rij is één leerling-vak-combinatie; samen vormen de twee kolommen de primaire sleutel en verwijzen ze als refererende sleutels naar beide tabellen.
Resultaat: De N:M-relatie is opgelost met een koppeltabel Volgt; elke inschrijving is precies één rij daarin.
Veelgemaakte fouten
Actieve herhaling
Ontwerp een ER-model voor een bibliotheek met de entiteiten Lid, Boek en Uitlening. Geef de attributen, bepaal de cardinaliteit van de relaties en vertaal het model naar tabellen met de juiste sleutels.
Actief ophalen
Haal de kernpunten op — onthul ze daarna.
Bronnen: Examenprogramma informatica vwo — keuze H (ER-modellen) (CvTE / Examenblad)
Resultaat van een JOIN
Schrijf een SQL-query die van elke leerling de naam en de mentor van zijn klas oplevert (het resultaat van Afb. 1).
SELECT naam, mentor uit de tabellen Leerling en Klas.
Koppel op de gemeenschappelijke sleutel: Leerling.klasID = Klas.klasID.
SELECT Leerling.naam, Klas.mentor FROM Leerling JOIN Klas ON Leerling.klasID = Klas.klasID;
Resultaat: De JOIN op klasID levert per leerling zijn naam met de mentor van de bijbehorende klas — precies de tabel van Afb. 1.
Veelgemaakte fouten
Actieve herhaling
Gegeven Leerling(leerlingID, naam, klasID) en Klas(klasID, mentor). Schrijf een SQL-query die van elke leerling de naam en de mentor van zijn klas toont. Schrijf daarnaast een query die het aantal leerlingen per klas telt.
Actief ophalen
Haal de kernpunten op — onthul ze daarna.
Bronnen: Examenprogramma informatica vwo — keuze H (SQL) (CvTE / Examenblad)
Een ongenormaliseerde besteltabel
Normaliseer de besteltabel uit Afb. 1 zodat klant en product elk nog maar één keer worden opgeslagen.
‘Sanne’ herhaalt bij elke bestelregel; de prijs van ‘Muis’ (een producteigenschap) staat bij elke bestelling opnieuw.
Klant(klantID, naam) en Product(productID, naam, prijs): elke klant en elk product één keer.
Bestelregel(bestelID, klantID, productID): verwijst via refererende sleutels naar beide tabellen; de prijs staat nu alleen nog bij het product.
Resultaat: Na normalisatie staat elk feit één keer; een prijswijziging hoeft nog maar op één plek en de anomalieën verdwijnen.
Veelgemaakte fouten
Actieve herhaling
Gegeven een ongenormaliseerde tabel Cursus(cursusID, cursusnaam, docent, docentEmail) waarin de docent bij meerdere cursussen voorkomt en zijn e-mail steeds herhaald wordt. Wijs de redundantie en een anomalie aan en normaliseer de tabel tot 3NF.
Actief ophalen
Haal de kernpunten op — onthul ze daarna.
Bronnen: Examenprogramma informatica vwo — keuze H (normalisatie) (CvTE / Examenblad)
Referenties en bronnen
CvTE / Examenblad