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

Vil SQL Server 2005 straffe mig for at bruge en nvarchar(50) som en primær nøgle i stedet for et heltal?

Du har ramt en af ​​de store "hellige krige" inden for databasedesign. Debatten, du henviser til, er "surrogat vs. naturlig nøgle"-argumentet, der har raset lige så længe, ​​som der har været RDBMS'er (så næsten jeg kan se).

Debatten går i bund og grund ned til, om en repræsentativ nøgle (surrogat, f.eks. en IDENTITET-kolonne) skal bruges i forhold til at bruge de faktiske data, der entydigt beskriver en post (naturlig nøgle).

Jeg vil sige, at der ikke er noget "rigtigt" svar. Ydeevnemål er en artefakt af platformen og bør vurderes ved eksperimenter, men ydeevne er sandsynligvis ikke den største bekymring.

Det, jeg anser for at være det primære argument for surrogatnøgler, er primærnøglernes uforanderlighed. Hvis du vælger at bruge en naturlig nøgle, opgiver du muligheden for at ændre denne nøgle, efter den er etableret. Du opgiver også muligheden for, at det kan blive uunik på et tidspunkt i fremtiden. Af disse grunde bruger jeg typisk (ikke altid) surrogatnøgler til de fleste af mine borde.

Men som jeg nævnte, er der en meget langvarig debat fyldt med diskussioner om indekseringsstrategier og overholdelse af normalform, der skal læses, hvis du er tilbøjelig til det.

Jeg ville Google "surrogat vs. naturlige nøgler". Her er et par links til at komme i gang:

Systemteknik og RDBMS

Techrepublic a>

Tony Rogersons blog

Håber dette hjælper.



  1. Brug af MySQL med Entity Framework

  2. SQL Server kommunikationsprotokol problem

  3. docker commit mysql gemmer ikke

  4. Hvordan kan jeg opdatere et felt af min spinner med brugerinput i EditText