Primærnøkler
Alle tabellar må ha ein primærnøkkel, og det er ved hjelp av primærnøkkelen at ein skil mellom dei ulike objekta i ein tabell. Med objekt meiner vi all informasjon som tilhøyrer ei linje i tabellen, til dømes ein person i ein persontabell eller ein bil i ein biltabell. Viss to objekt i ein tabell har same primærnøkkel, vil den nyaste av dei to objekta erstatte det andre objektet. Det er derfor viktig å velje eit felt som alltid vil vere unikt.
I nokre tilfelle vil det vere eitt eller fleire av felta som skil seg ut som ein god primærnøkkel. Alle felt som kan passe som primærnøkkel blir kalla kandidatnøklar, og det er du som lagar databasen som avgjer kva felt som passar best. I mange tilfelle er det vanleg å lage eit nytt felt, ein ID, som skal fungere som primærnøkkel, sjølv om ein har fleire aktuelle kandidatnøklar. Ein slik konstruert ID blir kalla ein surrogatnøkkel. Til dømes vil personnummer verke som eit godt alternativ viss du skal lage ein persontabell, men på grunn av personvern vil ein unngå lagring av personnummer i stor skala. Derfor vel ein i staden å lage ein eigen personID, til dømes eit kundenummer, som er eit tal som berre har betydning inne i databasen, men som likevel unikt identifiserer ein person.
Det går òg an å bruke ein kombinasjon av fleire felt som primærnøkkel. Det vil du sjå at kjem til nytte når du skal lage mange-til-mange-relasjonar.
For å angi primærnøkkel i MySQL Workbench klikkar du på sjekkboksen PK som høyrer til det feltet du vil setje som primærnøkkel. Sjekkboksen NN vil òg hakast av automatisk. Det betyr at det er ikkje tillate å la dette feltet stå tomt når ein skal leggje inn data i databasen. Det første feltet du legg inn i ein ny tabell, vil automatisk setjast til å vere primærnøkkel.
Sjå på denne tabellen:
Mine vener
- Førenamn
- Etternamn
- Adresse
- Postnummer
- Instagram-brukarnamn
- Snapchat-brukarnamn
Kva felt skil seg ut som kandidatnøklar blant desse attributta?
Kan du lage ein kombinert primærnøkkel av fleire av desse felta?
Ville du brukt ein av dei eksisterande kandidatnøklane som primærnøkkel?