sql >> Databasteknik >  >> RDS >> Sqlserver

Kommer SQL Server 2005 att straffa mig för att jag använder en nvarchar(50) som primärnyckel istället för ett heltal?

Du har drabbats av ett av de stora "heliga krigen" inom databasdesign. Debatten du hänvisar till är argumentet "surrogat vs. naturlig nyckel" som har rasat så länge det har funnits RDBMS (så nära jag kan säga).

Debatten handlar i huvudsak om huruvida en representativ nyckel (surrogat, till exempel en IDENTITET-kolumn) ska användas jämfört med att använda faktiska data som unikt beskriver en post (naturlig nyckel).

Jag kommer att säga att det inte finns något "rätt" svar. Prestandamått är en artefakt av plattformen och bör bedömas genom experiment, men prestanda är sannolikt inte det största problemet.

Det jag anser vara det primära argumentet för surrogatnycklar är primärnycklarnas oföränderlighet. Om du väljer att använda en naturlig nyckel, avstår du från möjligheten att ändra den nyckeln efter att den har etablerats. Du ger också upp möjligheten att det kan bli ounikt någon gång i framtiden. Av dessa skäl använder jag vanligtvis (inte alltid) surrogatnycklar för de flesta av mina bord.

Men, som jag nämnde, finns det en mycket långvarig debatt fylld av diskussioner om indexeringsstrategier och normalform att läsa om du är så benägen.

Jag skulle Googla "surrogat vs. naturliga nycklar". Här är några länkar för att komma igång:

Systemteknik och RDBMS

Techrepublic a>

Tony Rogersons blogg

Hoppas detta hjälper.



  1. Postgres skiftlägeskänslighet

  2. Korrekt mappning mellan Java LocalDateTime och db

  3. Skapa anpassade primärnycklar i Rails-applikationen

  4. Hur man frågar efter en specifik dag i månaden i Oracle