Inhoud

Tabellen en de primaire sleutel

Een relationele database bestaat uit tabellen. In deze tabellen zijn gegevens van dezelfde soort inrijenof in vaktaalrecordsopgeslagen. Je zag eerder in deze database-cursus al een voorbeeld van een tabel waarin wat informatie over cursussen is opgeslagen. Die tabel bestaat uit 6 records die elk informatie over één cursus bevatten. Alle 6 de cursussen zijn verschillend, maar van elke cursus is dezelfde informatie opgeslagen.

Voor het klantcontactsysteem dat we willen maken ligt het voor de hand dat we een klanttabel maken. Hieronder staat een voorbeeld van een tabel met klantinformatie.

Cursus

Hoe kun je in deze tabel een klant selecteren? Je zou kunnen zoeken op de voornaam. Dat is geen goed idee, want naarmate het aantal klanten in de tabel groeit wordt de kans groter dat er nog een klant komt die Jan heet en dan kun je niet meer met zekerheid de juiste Jan selecteren. Je zou kunnen zoeken op een combinatie, bijvoorbeeld de voornaam en achternaam. Maar hoe lang zou het duren voordat zich een tweede Jan Jansen aanmeldt als klant?

Om klanten uniek te kunnen identificeren moet elke klant gekoppeld zijn aan een uniek stukje informatie, bijvoorbeeld een klantnummer. Deze unieke informatie wordt de primaire sleutel (primary key) genoemd. Een van de belangrijkste regels van het relationeel model is dat alle rijen in een tabel uniek te identificeren zijn door middel van deprimaire sleutel. Het cursus_id uit het eerste tabelvoorbeeld op deze pagina is zo'n primaire sleutel.

Er zijn tal van voorbeelden te bedenken van nummers en codes uit het dagelijks leven die waarschijnlijk dienen als primaire sleutel in een database.

  • Een bestelnummer
  • Een rekeningnummer
  • Een sofinummer
  • Een factuurnummer
  • Een klantnummer
  • Een productnummer

Wat hebben al deze codes gemeen?

  • Ze zijn allemaaluniek. Jouw rekeningnummer bestaat altijd maar één keer, net als een factuurnummer, je sofinummer, etc.
  • Ze werken allemaal als toegangsweg naar meer informatie. Aan een factuurnummer is een datum, een bedrag, etc gekoppeld. Aan een productnummer kan een productbeschrijving, een plaatje, etc gekoppeld zijn.

De primaire sleutel wordt dus gebruikt om rijen in tabellen uniek te identificeren en om gegevens in verschillende tabellen aan elkaar te koppelen. Primaire sleutels zijn zoals gezegd altijdunieken mogen daarom maar 1 keer voorkomen in de kolom. Het is in onderstaande tabel dus niet mogelijk om een nieuwe rij met klantnummer 1 toe te voegen. Geef je aan dat het klantnummer de primaire sleutel is, dan zal het databasesysteem er (voor zover ik weet altijd) automatisch voor zorgen dat klantnummers in die kolom uniek zijn.

Cursus

Je kunt aan deze afbeelding overigens niet zien dat het klantnummer de primaire sleutel is. In de ontwerpweergave van de tabel is dat wel te zien.