Bonsoir,
Comme je l'ai déjà indiqué dans ce forum concernant la nature des identifiants (naturel ou artificiel), ma position est assez modérée quand à l'utilisation systématique d'identifiants non significatifs
, même si mon raisonnement conduit bien souvent au même résultat
.
En préambule, je rappelle que les dates, hautement significatives, contribuent bien souvent à la composition d'identifiants.
En fait, la problématique se situe à 2 niveaux : la performance et la maintenance.
Pour la performance, je ne reviendrai pas sur tout ce qui a été dit dans cette discussion, l'entier (sous toutes ses formes) sera toujours préférable.
Pour la maintenance, l'ennemi est le changement de structure de la clé qui peut provoquer des modifications en chaîne considérables sur les grosses bases de données.
L'utilisation systématique d'identifiants non significatifs de type compteur règle effectivement ces problèmes... ça n'en fait pas pour autant la seule approche acceptable (n'en déplaise à Tabourier).
Soyons pragmatiques : quels sont les qualités nécessaires pour un identifiant ?
- Unicité : bien évidemment, mais trop souvent considérée comme la seule.
- Formalisme : l'identifiant ne doit laissé aucun doute quant à la façon de l'écrire : numéro, code, réf, ... ce qui, pour moi, exclut de facto les textes "libres" et donc l'utilisation du VARCHAR.
- Légalité : l'exemple classique est bien sûr l'utilisation interdite du numéro de sécurité sociale.
- Irréductibilité : le sacro-saint principe de la clé minimale (attention aux surclés !).
- Pérennité : dans mes cours (et dans mon livre), je le traite en 3ème position, mais là je l'ai gardé pour la fin ! En effet, c'est bien souvent au cœur de nos discussions : pourquoi favorise-t-on un identifiant artificiel ? Parce que, dépourvu de signification, il est forcément pérenne ! On pourrait donc s'arrêter là... Mais, la pérennité peut également exister avec des rubriques naturelles : certes, il faut y regarder à 10 fois pour s'en assurer, mais partir du principe que cela ne peut exister me parait exagéré. Lorsque je définis, par exemple, le format d'un numéro de facture, qui par définition (comptable), n'a pas le droit d'évoluer dans le temps, pourquoi créer en plus un Id_Facture qui n'a rien à voir avec le système d'information alors que celui-ci nous en propose un. Et quand bien même, une fois tous les 10 ans, il faudrait mouliner la base pendant 48 heures pour réactualiser les structures, est-ce que le rapport intérêt/coût ne mérite pas d'être étudié ? Après, chacun fait ses choix, et l'usage systématique d'identifiants artificiels en est un... mais pas forcément le seul, et en tout cas, ce n'est pas, à mon avis, une règle d'or intransgressible.
En résumé, l'important, c'est la
pérennité, par forcément l'artificiel, même si bien souvent, l'un ne va pas sans l'autre.
Bonne continuation !
Partager