Doit-on utiliser les clés de substitut (Surrogate keys)?
L’utilisation de clés de substitut (Surrogate keys) est très utile afin d’éviter de propager la clé logique dans d’autres tables en tant que clés étrangères (Foreign key). Le but est de pouvoir modifier la clé de la table sans avoir à faire des manipulations de données pour la changer aussi dans les clés étrangères reliées.
La clé de substitut est généralement une clé auto-incrémentielle, cette valeur n’a aucune valeur dans le système, elle ne sert qu’à relier deux ou plusieurs tables par la clé étrangère.
Exemple de clé de substitut (cli_id) qui est la clé primaire et de cli_courriel qui est la clé logique.
Cependant, une clé auto-incrémentielle n’est pas toujours la solution. Dans certains cas, un code servant de clé primaire est à privilégier. Par exemple, dans les tables de configuration de votre système qui contient les données aussi appelées de pilotage, il est préférable d’utiliser des codes qui ne sont pas auto-incrémentiels. La raison est que lorsque vous voudrez effacer vos données de configuration, les champs auto-incrémentiels ne correspondront plus avec les clés du reste de votre système.
Exemple de clé de substitut sans qu'elle soit auto-incrémentielle, c’est un code, il pourrait être numérique ou alphanumérique. Quand vous régénérerez les données dans n’importe quel de vos environnements, les clés auront toujours la même valeur et non pas des chiffres qui augmentent à chaque fois. Dans cet exemple, si les provinces avaient des valeurs auto-incrémentielles, les provinces auraient les valeurs de 1 à 13 à la première génération et 14 à 26 la deuxième fois et ainsi de suite, ce qui poserait problème pour vos clés étrangères.
Exemple avec code sans clé auto-incrémentielle :
En conclusion, je suggère fortement d’utiliser une clé de substitut, qu’elles soient auto-incrémentielles pour les tables en général ou attribuées manuellement par un code par les gens responsables de la configuration du système pour les tables de paramètres.
Subscribe to my newsletter
Read articles from Nicolas Perron directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
Nicolas Perron
Nicolas Perron
Je suis un conseiller en architecture logicielle d'expérience avec une forte expertise en base de données, programmation, analyse fonctionnelle et architecture logicielle. J'écris ce blog pour communiquer mes connaissances en développement logiciel.