Souvent, l'utilisation de clés de substitution, dont les colonnes IDENTITY sont les plus courantes, est souvent effectuée pour des raisons de performances. Vous devez toujours identifier les clés naturelles (les colonnes qui rendent la ligne unique en fonction des données).
Généralement, les clés de substitution sont des valeurs entières. Cela les rend faciles à relier en utilisant des jointures avec d'autres tables (et restreindre en conséquence en utilisant des clés étrangères). En outre, lorsque vous parlez de SQL Server, tous les index non clusterisés dépendent de l'index clusterisé. Ainsi, si l'index clusterisé est basé sur la clé naturelle et que sa taille est conséquente, tous les index non clusterisés seront également importants, car ils renverront à l'index clusterisé. Par conséquent, beaucoup de gens construisent la clé primaire autour de cette clé de substitution à base d'entiers. Je sais que je simplifie un peu, mais c'est une raison clé pour l'utilisation de clés de substitution.
L'inconvénient est que la clé de substitution est effectivement sans signification. Si quelqu'un devait modifier la valeur de la clé, vous pourriez rompre une relation si les contraintes de clé étrangère ne sont pas présentes ou sont désactivées. Dans le cas d'une modification qui modifie la clé de remplacement, vous modifiez réellement les données elles-mêmes. Donc, vous vous attendez à une telle rupture si les entités sont construites correctement et que vous modifieriez également les données des tables connexes.
Faites-vous référence aux colonnes (colonnes d'identité) plutôt qu'aux lignes? –
Oui!c'est de ma faute je l'ai mélangé. – Ice
J'ai changé cela maintenant il devrait être clair, thx Jonathan. – Ice