Hvad er en primær nøgle?
En primær nøgle er en post i en database, der er unik for en enkelt post. Denne nøgle er generelt afledt på en af to måder: en unik identifikationskode uden for databasen eller et genereret nummer fra databasen. Når databasen vil indeholde oplysninger, der altid er unikke for posten, såsom et socialsikkerhedsnummer eller delidentifikationsnummer, bruges disse typisk som en primær nøgle. Når dataene ikke har en sådan identifikator, opretter databasen ofte numre baseret på dens interne systemer for at give hver post en unik kode.
Der er tre hovedbegrænsninger for en primær nøgle: eksistens, unikhed og uforanderlighed. Der skal findes en nøgle på det tidspunkt, hvor posten laves - den kan ikke tilføjes senere. Hver nøgle skal være helt forskellig fra enhver anden nøgle. Dette betyder, at fælles identifikatorer, såsom navn eller fødselsdato, ikke kan bruges, fordi det er muligt, at to mennesker er født på samme dag med samme navn. Endelig kan en primær nøgle aldrig ændres, når den først er oprettet.
Da en database potentielt kan have et uendeligt antal poster, skal en primær nøgle også være uendelig. For at sikre, at en database aldrig løber tør for nøgler, bruger de fleste poster en numerisk kode til nøglen. Da numre altid kan blive større, og computere simpelthen kan tilføje nulpunkter, der holder plads til ældre poster, vil et system aldrig løbe tør for nøgler. Nogle gange er disse numre baseret på ikke-unik information, men en unik identifikator tilføjes for at sikre, at nøglen er levedygtig.
Databaser bruger en primær nøgle som en måde at organisere data på. Da nøglen aldrig gentages, giver det stykke information databasen mulighed for at holde hver post adskilt fra hinanden. Hvert informationsstykke i en post er forbundet igen til nøglen; på den måde, uanset hvad der sker med systemet, kan databasen genopbygge posterne fra løs information.
Tildeling af en meningsfuld primær nøgle ses ofte som en bedre praksis end automatisk at generere en værdi. Dette giver posten en identifikator, der både fungerer som en nøgle og leverer data. I små databaser er denne sondring sjældent nødvendigt, men i store systemer kan den ekstra plads, der bruges af en genereret nøgle, resultere i alvorlig databaseopblæsning. Dette vil både bremse systemet og gøre, at databasen kræver markant mere lagerplads.