Wat betekent primary key?
Een primary key is een speciale kolom (of combinatie van kolommen) in een relationele databasetabel die is aangewezen om elke tabelrecord op een unieke manier te identificeren.
Een primary key wordt gebruikt als een unieke identificatie om gegevens in de tabel snel te kunnen ontleden. Een tabel kan niet meer dan één primary key hebben.
De belangrijkste kenmerken van een primary key zijn:
- Het moet een unieke waarde bevatten voor elke rij gegevens.
- Ze mag geen nulwaarden bevatten.
- Elke rij moet een primary keywaarde hebben.
Een primary key kan een of meer velden gebruiken die al aanwezig zijn in het onderliggende gegevensmodel, of er kan een specifiek extra veld worden aangemaakt als primary key.
Techopedia legt primary key uit
Het concept van de primary key is cruciaal voor een efficiënte relationele database. Zonder de primary key en de nauw verwante vreemde sleutel zouden relationele databases niet werken.
Aangezien een tabel gemakkelijk duizenden records kan bevatten (inclusief duplicaten), is een primary key noodzakelijk om ervoor te zorgen dat een tabelrecord altijd uniek kan worden geïdentificeerd.
Alle sleutels die afkomstig zijn van waarnemingen en attributen uit de echte wereld worden natuurlijke primary keys genoemd, in tegenstelling tot surrogaat primary keys die willekeurig aan elk record worden toegewezen.
Bijna alle mensen hebben in het dagelijks leven vaak te maken met natuurlijke primary keys, maar zonder dat ze het weten.
Studenten krijgen bijvoorbeeld routinematig unieke identificatienummers toegewezen en alle Nederlandse burgers hebben door de overheid toegewezen en uniek identificeerbaar burgerservicenummer. Straatadressen of rijbewijsnummers zijn voorbeelden van primary keys die gebruikt worden om respectievelijk locaties of auto’s uniek te identificeren.
Een ander voorbeeld: een database moet alle gegevens bevatten die zijn opgeslagen door een commerciële bank. Twee van de databasetabellen zijn de CUSTOMER_MASTER, waarin elementaire en statische klantgegevens worden opgeslagen (naam, geboortedatum, adres, burgerservicenummer, enzovoort) en de ACCOUNTS_MASTER, waarin verschillende bankrekeninggegevens worden opgeslagen (aanmaakdatum van de rekening, rekeningtype, opnamelimieten of overeenkomstige rekeninginformatie, enzovoort).
Om klanten uniek te identificeren, wordt een kolom of combinatie van kolommen geselecteerd om te garanderen dat twee klanten nooit dezelfde unieke waarde hebben. Bepaalde kolommen worden dus onmiddellijk geëlimineerd, bijv. achternaam en geboortedatum.
Een goede kandidaat voor een primary key is de kolom die is aangewezen voor burgerservicenummer. Sommige rekeninghouders hebben echter geen burgerservicenummer, dus deze kolom komt niet in aanmerking.
De volgende logische optie is om een combinatie van kolommen te gebruiken, zoals het toevoegen van de achternaam aan de geboortedatum aan het e-mailadres, wat resulteert in een lange en omslachtige primary key.
De beste optie is om een aparte primary key te maken in een nieuwe kolom met de naam CUSTOMER_ID. Dan genereert de database automatisch een uniek nummer telkens wanneer een klant wordt toegevoegd, waardoor een unieke identificatie wordt gegarandeerd.
Als deze sleutel is aangemaakt, wordt de kolom aangewezen als de primary key in het SQL-script dat de tabel aanmaakt en worden alle nulwaarden automatisch geweigerd.
Het rekeningnummer dat aan elke CUSTOMER_ID is gekoppeld, zorgt voor een veilige afhandeling van klantvragen en snelle zoektijden (zoals bij elke geïndexeerde tabel).
Een klant kan bijvoorbeeld worden gevraagd om zijn achternaam op te geven bij een zoekopdracht bij de bank. Een veelvoorkomende achternaam (zoals Smith) zal waarschijnlijk meerdere resultaten opleveren.
Bij het bevragen van gegevens garandeert het gebruik van de unieke primary key één resultaat.