Il n'y a pas de quoi s'emballer. Je suis d'abord un développeur, et je me préoccupe donc principalement de donner aux utilisateurs une application qui fonctionne.
J'ai travaillé sur des systèmes avec des clés naturelles et j'ai dû passer beaucoup de temps à m'assurer que les changements de valeur se répercutaient.
J'ai travaillé sur des systèmes n'utilisant que des clés de substitution, et le seul inconvénient a été le manque de données dénormalisées pour le partitionnement.
La plupart des développeurs PL/SQL traditionnels avec lesquels j'ai travaillé n'aimaient pas les clés de substitution en raison du nombre de tables par jointure, mais nos bases de données de test et de production n'ont jamais fait de vagues ; les jointures supplémentaires n'ont pas affecté les performances de l'application. Avec les dialectes de base de données qui ne supportent pas les clauses telles que "X inner join Y on X.a = Y.b", ou les développeurs qui n'utilisent pas cette syntaxe, les jointures supplémentaires pour les clés de substitution rendent les requêtes plus difficiles à lire, et plus longues à taper et à vérifier : voir l'article de @Tony Andrews. Mais si vous utilisez un ORM ou tout autre framework de génération SQL, vous ne le remarquerez pas. La saisie tactile permet également d'atténuer ce problème.
25 votes
@Joachim Sauer : Un argument sur la question de savoir si une chose est subjective peut lui-même être subjectif, sans que cela soit lié d'une quelconque manière à l'objectivité ou à la subjectivité de la chose en question. A moins que vous ne soyez prêt à énoncer les critères objectifs exacts qui font qu'une chose est objective. Il y a des choses appelées "concepts ouverts", comme le nombre de poils nécessaires pour faire une barbe. On peut objectivement dire qu'une personne qui n'a pas de poils au menton n'a pas de barbe, et qu'une personne qui a 5 000 poils d'un pouce de long a une barbe, mais quelque part au milieu, un jugement subjectif est nécessaire pour faire une détermination objective.
1 votes
@Manrico : il suffit de se poser la question suivante : si je n'utilise pas de clé de substitution, ma clé primaire sera-t-elle toujours immuable ? Si la réponse est non, alors vous devriez sérieusement envisager l'utilisation d'une clé de substitution. De même, si la clé primaire est composée, même partiellement, d'entrées utilisateur, vous devez envisager d'utiliser une clé de substitution. Pourquoi ? En raison du risque d'anomalies dans les données.
1 votes
@TylerRick Mais ce n'est pas une bonne question. Elle demande une solution applicable à toutes les situations, alors qu'il n'y en a manifestement pas, comme le prouve la "guerre de religion" dont l'auteur de la question est parfaitement conscient (citation : "Here we go again, the old argument still arises..."). Au lieu de se demander si le monde a changé et si l'on a enfin trouvé une raison convaincante de choisir un camp à tout moment, il vaut mieux poser cette question encore et encore pour chaque situation concrète, et poster sur SO quand on n'est pas sûr. Cela ne fait que susciter le dogmatisme.