Primærnøkkel

Hvorfor oss?

Hva betyr primærnøkkel?

En primærnøkkel, eller primary key, er en spesiell kolonne (eller kombinasjon av kolonner) i en relasjonsdatabase som er designet for å entydig identifisere hver post i tabellen.

En primærnøkkel brukes som en unik identifikator for raskt å analysere data i tabellen. En tabell kan ikke ha mer enn én primærnøkkel.

De viktigste egenskapene til en primærnøkkel er:

  • Den må inneholde en unik verdi for hver rad med data.
  • Den kan ikke inneholde nullverdier.
  • Hver rad må ha en verdi for primærnøkkelen.

En primærnøkkel kan bruke ett eller flere felt som allerede finnes i den underliggende datamodellen, eller et spesifikt ekstra felt kan opprettes for å være primærnøkkele

Primærnøkkel forklart av Techopedia

Konseptet med primærnøkkel er kritisk for en effektiv relasjonsdatabase. Uten primærnøkkel og det nært beslektede konseptet med fremmednøkler, ville ikke relasjonsdatabaser fungere.

Faktisk, siden en tabell enkelt kan inneholde tusenvis av poster (inkludert duplikater), er en primærnøkkel nødvendig for å sikre at en tabellpost alltid kan identifiseres entydig.

Alle nøkler som kommer fra observasjoner og attributter i den virkelige verden kalles naturlige primærnøkler, i motsetning til surrogatprimærnøkler som i stedet tildeles vilkårlig til hver post.

Nesten alle individer har daglig, men ubevisst, omgang med naturlige primærnøkler.

For eksempel blir studenter rutinemessig tildelt unike identifikasjonsnumre (ID-numre), og alle amerikanske borgere har regjeringsbestemte og entydig identifiserbare personnummer. Gateadresser eller førerkortnummer er eksempler på primærnøkler som brukes til å identifisere (henholdsvis) steder eller biler entydig.

Som et annet eksempel, en database må holde all data lagret av en kommersiell bank. To av databasetabellene inkluderer KUNDE_MESTER, som lagrer grunnleggende og statiske kundedata (navn, fødselsdato, adresse, personnummer, osv.) og KONTO_MESTER, som lagrer ulike bankkontodata (kontoopprettelsesdato, kontotype, uttaksgrenser eller tilsvarende kontoinformasjon, osv.).

For å entydig identifisere kunder, velges en kolonne eller kombinasjon av kolonner for å garantere at to kunder aldri har samme unike verdi. Dermed elimineres visse kolonner umiddelbart, f.eks. etternavn og fødselsdato.

En god kandidat for primærnøkkel er kolonnen som er designet for å holde personnumre. Imidlertid kan noen kontoinnehavere ikke ha personnummer, så denne kolonnens kandidatur elimineres.

Det neste logiske alternativet er å bruke en kombinasjon av kolonner, som å legge til etternavn med fødselsdato til e-postadresse, noe som resulterer i en lang og tungvint primærnøkkel.

Det beste alternativet er å opprette en separat primærnøkkel i en ny kolonne kalt KUNDE_ID. Deretter genererer databasen automatisk et unikt nummer hver gang en kunde legges til, og garanterer entydig identifikasjon.

Når denne nøkkelen opprettes, blir kolonnen designert som primærnøkkel i SQL-scriptet som oppretter tabellen, og alle nullverdier avvises automatisk.

Kontonummeret som er tilknyttet hver KUNDE_ID, muliggjør sikker håndtering av kundehenvendelser og raske søketider (som med enhver indeksert tabell).

For eksempel kan en kunde bli bedt om å oppgi sitt etternavn når han utfører en bankforespørsel. En forespørsel med et vanlig etternavn (som Smith) vil sannsynligvis returnere flere resultater.

Når man spør etter data, garanterer å bruke primærnøkkelens unikhetsfunksjon ett resultat.

Relaterte begreper

Margaret Rouse
Teknologiekspert

Margaret Rouse er en prisbelønt teknisk skribent og lærer som er kjent for sin evne til å forklare kompliserte tekniske emner for et ikke-teknisk, forretningsmessig publikum. I løpet av de siste tjue årene har forklaringene hennes blitt publisert på TechTarget-nettsteder, og hun har blitt sitert som en autoritet i artikler i New York Times, Time Magazine, USA Today, ZDNet, PC Magazine og Discovery Magazine. Margarets idé om en morsom dag er å hjelpe IT- og forretningsfolk med å lære å snakke hverandres høyt spesialiserte språk. Hvis du har forslag til en ny definisjon eller ønsker å forbedre en teknisk forklaring,…