Meerdere tabellen

Bekijk de onderstaande tabel, met de aanmeldingen van de leden voor een event.

../_images/redundante-tabel.png

Een (redundante) tabel met event-aanmeldingen van leden

Redundantie. Je ziet dat in deze tabel de elementaire gegevens van de leden, zoals hun naam en geslacht, voor elke aanmelding herhaald worden. Deze vorm is daardoor redundant (“overtollig”): je kunt deze overtollige gegevens wegwerken zonder verlies aan informatie. Bovenstaande redundante vorm heeft twee nadelen:

  1. je hebt meer opslagruimte nodig dan strikt noodzakelijk;

  2. en, belangrijker: het is lastiger om de consistentie van de de gegevens te garanderen,

Met de huidige opslagmedia is (1) niet het grootste probleem meer, maar (2) blijft belangrijk. Daarom proberen we dergelijke redundante vormen in databases te vermijden.

In de onderstaande vorm hebben we deze redundantie verwijderd, door een extra tabel inschrijvingen in te voeren. We identificeren een inschijving met behulp van het inschrijfnr: dat is de key van deze tabel.

../_images/genormaliseerde-tabellen.png

Genormaliseerde tabellen voor leden en inschrijvingen

Foreign key We gebruiken hier een verwijzing van de ene tabel naar de andere: een aanmeldingen verwijst naar de overeenkomstige rij in leden met behulp van de key lidnr. Een verwijzing via een key van een andere tabel heet een foreign key in de verwijzende tabel. lidnr is in de tabel inschrijvingen dus een foreign key.

Normalisatie. Een vorm zonder de redundantie zoals hierboven noemen we een genormaliseerde vorm. Het wegwerken van deze redundantie heet dan normaliseren. Dit is een onderdeel van het ontwerpen van een relationele database.

Join: combineren van tabellen. Het gebruik van een verwijzing naar een andere tabel heeft niet alleen voordelen: als je een overzicht wilt maken van alle leden, met hun naam, die zich aangemeld hebben voor een bepaalde event, dan moeten we de informatie uit beide tabellen combineren. In een relationele database kan dit met behulp van een join. Dit werken we in het volgende onderdeel verder uit. Zo’n join kost extra tijd: we hebben het voordeel van de genormaliseerde vorm uitgewisseld tegen extra kosten voor het raadplegen van de database.

Opdrachten

Toetsvragen