Usages

Pratique de nommage des tables et colonnes

Publié le : Auteur: Hugues VAN EYLEN Laisser un commentaire
usages

L’objet de ce billet est de se pencher sur une pratique courante en gestion de base de données consistant à dénommer les tables et colonnes avec des termes bâtis sur des acronymes souvent imprononçables issus des noms des concepts sous-jacents aux tables. L’éclairage de la psychologie cognitive sur les caractéristiques des processus mis en œuvre lors d’un travail intellectuel permet de percevoir les travers d’une telle pratique.

Quelques constats

Il n’est pas rare, quand on inspecte un système d’informations, d’obtenir en entrée la définition d’un schéma de base. Trouver les concepts à partir des tables est alors un exercice formateur et plein de surprises, les noms des tables ne permettant pas toujours de retrouver les concepts cachés dans la base de données ! Et pour cause, une des raisons de cette difficulté est la pratique consistant à créer des noms de tables et de colonnes codifiés. Par exemple, on décide d’une organisation en domaines ad-hoc du système d’informations et chaque domaine est désigné par un acronyme : CT pour le domaine Contrat ou encore BPP pour le domaine des personnes physiques. Puis chaque table utilise un ou plusieurs acronymes comme par exemple CTR_PJ pour contrat de protection juridique. On obtient ainsi un nom de table composé : CT_CTR_PJ qui, ne possédant aucune voyelle, est difficile à prononcer et peut juste être épelé. Bien sûr, ici, le nom a été construit avec une règle qui a été documentée et une certaine logique peut émerger. Dans d’autres cas, plus fréquent qu’on ne voudrait, aucune règle ne semble avoir été suivie et on peut arriver à d’autres noms comme PRCPPPFR_CPTPPF ou encore AERNOEXC_NOEX.

Les raisons de l’usage d’acronymes proviennent de limitations techniques anciennes sur la taille des noms mais aussi de la volonté des développeurs de ne pas avoir de noms trop longs à saisir. Cette dernière raison ayant de moins en moins de valeur car de nombreux éditeurs permettent maintenant la complétion.

Pour les noms des colonnes, un souhait est souvent d’avoir un nom unique pour l’ensemble du système d’informations ce qui aboutit à le suffixer par un acronyme qui fait office d’espace de nommage. On reprend souvent l’acronyme de la table contenante ce qui donne des noms de colonnes à rallonge comme CTR_PJ_DT_CREA (date de création du contrat) ou CPTPPF_MNT (montant d’un compte de franchise).

Les raisons de cette unicité se trouvent dans la rédaction de clause SQL où il peut être nécessaire de lever l’ambiguïté sur des noms de colonnes similaires présents dans deux tables. Il semble alors plus facile d’avoir des noms de colonnes uniques que de rédiger les clauses d’alias dans la requête SQL.

Les noms créés pour les bases de données servent souvent de base au nommage des structures produites dans les langages de programmation qui manipulent lesdites données. De proche en proche, les noms imprononçables gagnent du terrain vers les couches les plus hautes du logiciel. Un tel nom gagne ses lettres de noblesse s’il réussit à atteindre le nirvana : l’interface homme-machine et s’il réussit à devenir partie intégrante du vocable métier.

Quelques faits cognitifs

Sans entrer dans un exposé long sur l’acte de réflexion, on peut facilement se rendre compte que la capacité à percevoir, mémoriser, et appréhender intellectuellement des concepts fait partie courante du travail de développement de systèmes logiciels que nous sommes amenés à effectuer.

Le schéma suivant propose un modèle très synthétique du processus de perception et de mémorisation suffisant au propos de cet article.

memoire_et_cerveau

La perception s’effectue principalement par la vue et l’ouïe. Par exemple, la vue nous permet de partager des documents comportant textes et schémas réalisant ainsi la communication d’un certain savoir. Comme on le voit sur le schéma, l’information passe du système de perception vers celui de la mémoire de travail et peut ensuite migrer vers le système de mémorisation de connaissance à long terme si un apprentissage survient.

La mémoire de travail comporte principalement deux sous-systèmes dédiés aux modalités auditive et visuelle. La boucle phonologique permet le rafraichissement par répétition de l’information stockée sous la modalité vocale. Il est alors intéressant de savoir que la mémoire de travail utilise la boucle phonologique pour retranscrire ce qui est lu [Baddeley 82]. Lire est une activité visuelle mais elle met en œuvre une retranscription et une mémorisation basée sur le son. Ainsi s’explique la confusion entre les lettres P, B, T, D, etc. qui bien que dissimilaire visuellement sont parfois confondues à la lecture. Enfin, si vous prenez un peu de recul sur votre activité de lecture actuelle, vous entendrez sans doute les sons des mots lus dans votre tête … cette petite voix qui est celle de votre conscience … Si on allait plus loin et que l’on utilisait un électro-myographe, on s’apercevrait que votre larynx effectue des micro-mouvements correspondant à l’articulation de votre lecture.

Toujours concernant la mémoire de travail, sa limite bien connue est de 7 éléments et sa volatilité s’estime à une vingtaine de secondes [Miller 56]. Il est ainsi difficile de maîtriser en une seule pensée plus de 7 entités avec leurs relations si on considère une tache de modélisation de données. Bien sûr, diverses pratiques permettent d’augmenter cette quantité telle l’abstraction ou la structuration des données. Par exemple lire et se souvenir immédiatement d’une liste de 10 chiffres telle que 8549766542 sera plus ardue que pour une succession de nombres 854-976-6542. Quant à s’en souvenir le lendemain, il faudra envisager un effort d’apprentissage.

C’est ici qu’intervient la mémoire des connaissances à long terme qui, elle, peut stocker de grandes quantités de concepts de façon durable à condition qu’un apprentissage puisse avoir lieu. Ainsi se souvenir des 12 mois de l’année n’est guère un problème… On peut voir notre mémoire de travail comme une fenêtre qui se déplace sur l’espace de notre mémoire à long terme amenant à la conscience les informations qui y sont sauvegardées [Lieury 2008].

Quels impacts

Considérons maintenant l’impact de l’usage de noms de colonnes ou de tables imprononçables sur les performances des processus cognitifs évoqués ci-dessus. Prenons l’exemple de la bien connue table CT_CTR_PJ et prononçons-la à haute voix… Nous l’épelons ce qui constitue 7 lettres car, sans voyelles, il est difficile de regrouper en son plusieurs consonnes. Ce n’est pas forcément agréable suivant la succession de consonnes : testez la non moins connue table PRCPPPFR_CPTPPF ! Je suis sûr que vous l’avez zappé dans votre première lecture du chapitre précédent ! Et quand je dis « zappé » j’entends par là que vous ne l’avez probablement même pas prononcée dans votre tête et comme cette succession de lettres ne vous évoque sans doute rien… vous ne l’aurez même pas vraiment perçue dans ses détails … Quant à la mémoriser à long terme, n’en parlons pas ! Bel exemple de communication d’information 🙂

Notre nom de table CT_CTR_PJ a atteint d’un seul coup la limite des 7 éléments de notre mémoire de travail… du coup, dur de combiner ce concept avec d’autres … à moins de le traduire au moment de la lecture dans les termes « contrat protection juridique » plus facilement prononçable … C’est ce que nous ferons inconsciemment avec le temps et l’apprentissage du système en question. Mais il en va de notre cerveau comme de nos programmes, s’il faut effectuer des traductions cela a un coût. Dans le monde cognitif, cela s’appelle de la charge cognitive [Chanquoy 2007]. Et comme mentionné précédemment, nous avons tous des limites et cette traduction n’apporte généralement rien à la réflexion que nous menons sur le concept, voire crée du bruit … Dommage !

Reproduit à l’envie sur toutes les colonnes et les tables de notre base de données, propagée dans le code vers les IHM, la surcharge engendrée se traduit par :

    • Une difficulté à énoncer les noms des concepts sur lesquels on souhaite raisonner
    • Une difficulté à retenir et mémoriser certains concepts
    • Une difficulté à raisonner sur plusieurs concepts
    • Une impression de complexité qui peut entraîner un certain découragement voire un rejet du sujet traité.

Ce dernier point est très important car l’émotion est un facteur important de l’apprentissage et de la mémorisation. Ne pas aimer un sujet vous rendra moins performant dans les activités intellectuelles sur ledit sujet. Rappelez-vous de vos années d’études et des matières préférées ou abhorrées …

Pour compléter ce billet, rappelons la bonne pratique essentielle prônée par l’approche Domain Driven Design (DDD) [Evans 2003] qui met l’accent sur le partage d’un vocabulaire métier entre les experts métiers et les développeurs. Ce vocabulaire est essentiel et il est clair qu’il doit être pro-non-ça-ble. Il faudrait donc penser à revoir les règles de constitution des noms des colonnes et tables en base de données afin d’améliorer nos performances de réflexion sur le développement des logiciels. Il est bien sûr difficile d’estimer le coût d’une telle mauvaise pratique mais entre le temps perdu à s’exprimer, les erreurs de raisonnement engendrées, la complexité perçue, il est sûr que ce coût est non négligeable mais comme il reste caché… n’y touchons surtout pas, nous pourrions devenir efficace 😉

[Miller 56] The magical number seven, plus or minus two: Some limits on our capacity for processing information, Psychological Review, vol. 63, no 2,‎ 1956,

[Baddeley 82] Your Memory, A User’s guide, Carlton’s books, Alan Baddeley

[Evans 2003] Domain-Driven Design: Tackling Complexity in the Heart of Software, Addison Wesley, Eric Evans

[Chanquoy 2007] La charge cognitive, Théorie et applications, Armand Collin, Lucile Chanquoy, André Tricot, John Sweller

[Lieury 2008] Psychologie cognitive, Dunod, Alain Lieury