Primærnøkler
Alle tabeller må ha en primærnøkkel, og det er ved hjelp av primærnøkkelen at man skiller mellom de ulike objektene i en tabell. Med objekt mener vi all informasjon som tilhører en linje i tabellen, for eksempel en person i en persontabell eller en bil i en biltabell. Hvis to objekter i en tabell har samme primærnøkkel, vil den nyeste av de to objektene erstatte det andre objektet. Det er derfor viktig å velge et felt som alltid vil være unikt.
I noen tilfeller vil det være ett eller flere av feltene som skiller seg ut som en god primærnøkkel. Alle felter som kan passe som primærnøkkel kalles kandidatnøkler, og det er du som lager databasen som avgjør hvilket felt som passer best. I mange tilfeller er det vanlig å lage et nytt felt, en ID, som skal fungere som primærnøkkel, selv om man har flere aktuelle kandidatnøkler. En slik konstruert ID kalles en surrogatnøkkel. For eksempel vil personnummer virke som et godt alternativ hvis du skal lage en persontabell, men på grunn av personvern vil man unngå lagring av personnummer i stor skala. Derfor velger man i stedet å lage en egen personID, for eksempel et kundenummer, som er et tall som kun har betydning inne i databasen, men som likevel unikt identifiserer en person.
Det går også an å bruke en kombinasjon av flere felter som primærnøkkel. Det vil du se at kommer til nytte når du skal lage mange-til-mange-relasjoner.
For å angi primærnøkkel i MySQL Workbench klikker du på sjekkboksen PK som hører til det feltet du vil sette som primærnøkkel. Sjekkboksen NN vil også hakes av automatisk. Det betyr at det er ikke tillatt å la dette feltet stå tomt når man skal legge inn data i databasen. Det første feltet du legger inn i en ny tabell, vil automatisk settes til å være primærnøkkel.
Se på denne tabellen:
Mine venner
- Fornavn
- Etternavn
- Adresse
- Postnummer
- Instagram-brukernavn
- Snapchat-brukernavn
Hvilke felter skiller seg ut som kandidatnøkler blant disse attributtene?
Kan du lage en kombinert primærnøkkel av flere av disse feltene?
Ville du brukt en av de eksisterende kandidatnøklene som primærnøkkel?