sql >> Database teknologi >  >> RDS >> Sqlserver

Hvad er forskellen mellem en primærnøgle og en surrogatnøgle?

Den primære nøgle er en unik nøgle i din tabel, som du vælger, der bedst entydigt identificerer en post i tabellen. Alle tabeller bør have en primær nøgle, for hvis du nogensinde har brug for at opdatere eller slette en post, skal du vide, hvordan du entydigt identificerer den.

En surrogatnøgle er en kunstigt genereret nøgle. De er nyttige, når dine poster stort set ikke har nogen naturlig nøgle (såsom en Person tabel, da det er muligt for to personer født på samme dato at have det samme navn eller optegnelser i en log, da det er muligt for to begivenheder at ske, så de bærer det samme tidsstempel). Oftest vil du se disse implementeret som heltal i et automatisk stigende felt, eller som GUID'er, der genereres automatisk for hver post. ID-numre er næsten altid surrogatnøgler.

I modsætning til primærnøgler behøver ikke alle tabeller imidlertid surrogatnøgler. Hvis du har en tabel, der viser staterne i Amerika, behøver du ikke rigtigt et ID-nummer for dem. Du kan bruge tilstandsforkortelsen som en primær nøglekode.

Den største fordel ved surrogatnøglen er, at de er nemme at garantere som unikke. Den største ulempe er, at de ikke har nogen betydning. Der er ingen mening med, at "28" er Wisconsin, for eksempel, men når du ser 'WI' i kolonnen State i din adressetabel, ved du hvilken stat du taler om uden at skulle slå op, hvilken stat der er hvilken i din stat tabel.



  1. SQL Server Query - gruppevis multiplikation

  2. Liste alle udenlandske nøgler på en tabel i SQL Server

  3. Hvorfor fungerer min hvis-erklæring ikke som jeg forventer?

  4. OPDATERE alle kolonneværdier svarende til en anden tabelkolonneværdi baseret på deres id