Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

SQL Server 2005 me pénalisera-t-il pour avoir utilisé un nvarchar(50) comme clé primaire, au lieu d'un entier ?

Vous avez rencontré l'une des principales "guerres saintes" de la conception de bases de données. Le débat auquel vous faites référence est l'argument "substitut contre clé naturelle" qui fait rage depuis qu'il existe des SGBDR (pour autant que je sache).

Le débat se résume essentiellement à savoir si une clé représentative (substitut, par exemple une colonne IDENTITY) doit être utilisée par rapport à l'utilisation des données réelles qui décrivent de manière unique un enregistrement (clé naturelle).

Je dirai qu'il n'y a pas de "bonne" réponse. Les mesures de performances sont un artefact de la plate-forme et doivent être évaluées par expérimentation, mais les performances ne sont probablement pas la principale préoccupation.

Ce que je considère comme le principal argument en faveur des clés de substitution est l'immuabilité des clés primaires. Si vous choisissez d'utiliser une clé naturelle, vous renoncez à la possibilité de modifier cette clé une fois qu'elle a été établie. Vous renoncez également à la possibilité qu'il devienne non unique à un moment donné dans le futur. Pour ces raisons, j'utilise généralement (pas toujours) des clés de substitution pour la plupart de mes tables.

Cependant, comme je l'ai mentionné, il y a un débat de très longue date rempli de discussions sur les stratégies d'indexation et le respect de la forme normale à lire si vous le souhaitez.

Je voudrais Google "clés de substitution vs clés naturelles". Voici quelques liens pour vous aider à démarrer :

Ingénierie des systèmes et SGBDR

Techrepublic

Blog de Tony Rogerson

J'espère que cela vous aidera.