#1 Wed 18 October 2017 10:30
- Laurent75019
- Participant actif
- Lieu: La Réunion_974
- Date d'inscription: 15 Jul 2011
- Messages: 96
Codification des entités
Bonjour,
A la manière de nos numéros de sécurité sociale, quelle est l'importance d'avoir toutes les entités ayant une codification uniforme (même longueur, même type de caractères) dans une base ?
Je cherche des arguments pour convaincre les techniques d'harmoniser à la même longueur le code des entités d'un équipement.
Merci de vos réponses pour discussions
Laurent
Hors ligne
#2 Wed 18 October 2017 10:58
- Pascal Boulerie
- Participant assidu
- Lieu: France
- Date d'inscription: 12 Sep 2005
- Messages: 2947
- Site web
Re: Codification des entités
Pas d'idée...
à l'origine, il doit y avoir des contraintes de taille mémoire en informatique, largement dépassées dans les systèmes actuels. Surtout dans des bases de données "objets", avec des héritages divers de diverses propriétés en cascade dont certains informaticiens sont friands.
ça se faisait même sur cartes perforées, donc la contrainte de largeur du nombre était très forte alors...
https://fr.wikipedia.org/wiki/Num%C3%A9 … Historique
Je ne sais pas si les codes des bibliothécaires peuvent vous inspirer quelque idée, ou non... Là, il s'agit plutôt de subdivisions en cascade, sans longueur uniforme...
Code Dewey
https://fr.wikipedia.org/wiki/Classific … uccessives
Dans votre cas présent à vous, certains codes seront-ils saisis sur des cahiers papiers ?
Ou tout le temps via une interface logicielle ?
à la main, il y a le risque d'oublier un ou plusieurs caractères en notant ou en reportant un identifiant...
à noter que dans le numéro INSEE, ou dans un code de RIB ou IBAN, il y a une clé de contrôle pour vérifier le bon report d'un identifiant lors d'une nouvelle saisie par un opérateur humain.
Dans une IHM, ça sera transparent pour l'utilisateur si la saisie se fait par des menus déroulants, le code étant "caché" à l'utilisateur final.
Et, enfin, ça risque de se compliquer quand vous avez à échanger / mutualiser / partager vos données avec plusieurs organismes différents...
« L'État est désormais quasi déliquescent. » (José Cohen-Aknine, ingénieur X-Ponts, IGPEF, dans Déliquescence et renaissance de l'État.)
Hors ligne
#3 Wed 18 October 2017 11:06
- cquest
- Participant assidu
- Date d'inscription: 6 Jan 2013
- Messages: 875
Re: Codification des entités
Une codification uniforme permet un contrôle basique de cohérence sur le format.
Par exemple, une colonne "code postal français" aura 5 chiffres... si c'est pas le cas, il y a un problème.
Ça ne garantit pas la cohérence de la valeur, mais ça limite déjà les dégâts et on peut y associer une expression régulière qui permet de valider au moins ce premier niveau.
Après, il y a l'ajout de clés de contrôle (cas des N° RIB, des numéros de sécu, etc), utilisé pour les identifiants longs où du coup l'erreur a plus de chance de se produire.
Et au final, l'idéal, c'est de vérifier l'existence dans un référentiel (à jour)... c'est en partie le but du service public de la donnée, fournir ces référentiels sur lesquels on s'appuie très souvent.
Dernière modification par cquest (Wed 18 October 2017 11:10)
Christian Quest - https://amicale.net/@cquest sur Mastodon (terminé twitter/X)
Membre fondateur et porte parole d'OpenStreetMap France
Initiateur de opendatArchives, OpenEventDatabase, Panoramax
Hors ligne
#4 Wed 18 October 2017 11:49
- Laurent75019
- Participant actif
- Lieu: La Réunion_974
- Date d'inscription: 15 Jul 2011
- Messages: 96
Re: Codification des entités
Merci Pascal.
l'équipement représente la table mère d'un point de vue MCD. Cet équipement relie plusieurs services entre eux (exploitation, clientèle, compta,..).
Le code est le résultat d'une concaténation de codes de zones non administratives.
Le code est encore noté sur des cahiers papiers mais aussi dans des interfaces logiciels.
L'harmonisation de la codification de ces entités affectent donc plusieurs services mais aussi le lien avec les plans de récolement. Raison pour laquelle je cherche à uniformiser en réorganisant les caractères de l'ancien code.
Mis à part le coté mnémotechnique du code, il me semblait que les cours de base de données insistaient sur la nécessité d'avoir une longueur similaire d'un point de vue occupation en espace sur disque ou réseau. Dans mon cas le nombre est faible certes mais il y a 1000 entités à 6 digits puis 800 à 7 digits puis 200 à 8 digits, ce qui fait que l'on stocke des places vides de 1 à 2 digits pour au moins la moitié des entités. Je pensais également à la facilité de tri de ces entités et aux requêtes.
Hors ligne
#5 Wed 18 October 2017 20:40
- tumasgiu
- Membre
- Lieu: Ajaccio
- Date d'inscription: 5 Jul 2010
- Messages: 1159
Re: Codification des entités
Salut,
Dans mon cas le nombre est faible certes mais il y a 1000 entités à 6 digits puis 800 à 7 digits puis 200 à 8 digits, ce qui fait que l'on stocke des places vides de 1 à 2 digits pour au moins la moitié des entités
S le champ est de type chaine de caractère de longueur fixe, effectivement de l'espace disque est consommé inutilement.
Le code est le résultat d'une concaténation de codes de zones non administratives.
Si le code est une concaténation d'autre codes, pourquoi sa longueur varie t-elle ?
Chaque enregistrement a un code qui concatène un nombre variable de code de zone ?
les codes de zone sont à longueur variable ?
Comme le suggère M. Quest, l'idéal serait de se conformer à un référentiel.
Si il n'existe pas, il faudrait le constituer.
Hors ligne
#6 Fri 20 October 2017 14:42
- ChristopheV
- Membre
- Lieu: Ajaccio
- Date d'inscription: 7 Sep 2005
- Messages: 3197
- Site web
Re: Codification des entités
Bonjour,
Le code est le résultat d'une concaténation de codes de zones non administratives.
C'est un choix possible mais risqué. Lorsque ces codes varient ou sont susceptibles de varier au cours du temps l'idée est d'utiliser une clef artificielle.
Un exemple, j'ai un objet "COMMUNE" qui a différents attributs (code département,Code insee, nom, taille, population, surface, géométrie ...) je peux parfaitement créer une clef basée sur la concaténation du code département et du code insee, mais si demain la commune fusionne avec une autre Aïe !!
L'autre solution consiste à ajouter un attribut artificiel nommé idcommune qui est une valeur numérique entière unique. Cette clef garantit l'unicité de l'objet indépendamment de la valeur de ses attributs. La commune de TRUC (idcommune=3724,codedep=28,insee=320,'TRUC' etc..) est la même commune que MACHIN (idcommune=3724,codedep=28,insee=460, 'MACHIN').
Christophe
L'avantage d'être une île c'est d'être une terre topologiquement close
Hors ligne
#7 Mon 23 October 2017 09:08
- cquest
- Participant assidu
- Date d'inscription: 6 Jan 2013
- Messages: 875
Re: Codification des entités
Merci Pascal.
l'équipement représente la table mère d'un point de vue MCD. Cet équipement relie plusieurs services entre eux (exploitation, clientèle, compta,..).
Le code est le résultat d'une concaténation de codes de zones non administratives.
Le code est encore noté sur des cahiers papiers mais aussi dans des interfaces logiciels.
L'harmonisation de la codification de ces entités affectent donc plusieurs services mais aussi le lien avec les plans de récolement. Raison pour laquelle je cherche à uniformiser en réorganisant les caractères de l'ancien code.
Mis à part le coté mnémotechnique du code, il me semblait que les cours de base de données insistaient sur la nécessité d'avoir une longueur similaire d'un point de vue occupation en espace sur disque ou réseau. Dans mon cas le nombre est faible certes mais il y a 1000 entités à 6 digits puis 800 à 7 digits puis 200 à 8 digits, ce qui fait que l'on stocke des places vides de 1 à 2 digits pour au moins la moitié des entités. Je pensais également à la facilité de tri de ces entités et aux requêtes.
En gros ça fait même pas 3Ko de "trous" ?
Il y a 30/40 ans, une optimisation aurait été utile, mais aujourd'hui, franchement... hop, on complète avec des 0 et voilà
Christian Quest - https://amicale.net/@cquest sur Mastodon (terminé twitter/X)
Membre fondateur et porte parole d'OpenStreetMap France
Initiateur de opendatArchives, OpenEventDatabase, Panoramax
Hors ligne
#8 Tue 24 October 2017 09:47
- ChristopheV
- Membre
- Lieu: Ajaccio
- Date d'inscription: 7 Sep 2005
- Messages: 3197
- Site web
Re: Codification des entités
Bonjour
on complète avec des 0 et voilà wink
Bon " " c'est mieux que "0" si les codeurs initiaux n'avaient pas laissez place à l'espace dans leur code (vieille habitude héritée des lignes de commandes);
ou on utilise la fonction TRIM(machaine), qui supprime les espaces, comme cela, en combinaison avec LENGTH(machaine) on fait à peu près ce que l'on veut et on optimise le stockage.
C'est pas à Mr Quest que je vais apprendre que gérer des data à l'échelle d'un pays ça fait quand même son poids.
Christophe
L'avantage d'être une île c'est d'être une terre topologiquement close
Hors ligne
#9 Thu 26 October 2017 12:44
- Laurent75019
- Participant actif
- Lieu: La Réunion_974
- Date d'inscription: 15 Jul 2011
- Messages: 96
Re: Codification des entités
Merci pour vos informations, c'est toujours un plaisir de lire vos expériences.
Finalement, le numéro final de chaque entité sera alphanumérique et de même longueur pour toutes les entités. Les différences de longueur ont été comblées par une lettre. Un numéro de même longueur permet de détecter rapidement les manques de caractères.
Merci
Laurent
Hors ligne