Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Printemps des cartes 2024

#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: 2877
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: 848

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
A l'origine de opendatArchives, OpenEventDatabase

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: 1132

Re: Codification des entités

Salut,

Laurent75019 a écrit:

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.

Laurent75019 a écrit:

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.

En ligne

 

#6 Fri 20 October 2017 14:42

ChristopheV
Membre
Lieu: Ajaccio
Date d'inscription: 7 Sep 2005
Messages: 3168
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: 848

Re: Codification des entités

Laurent75019 a écrit:

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à wink


Christian Quest - https://amicale.net/@cquest sur Mastodon (terminé twitter/X)
Membre fondateur et porte parole d'OpenStreetMap France
A l'origine de opendatArchives, OpenEventDatabase

Hors ligne

 

#8 Tue 24 October 2017 09:47

ChristopheV
Membre
Lieu: Ajaccio
Date d'inscription: 7 Sep 2005
Messages: 3168
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

 

Pied de page des forums

Powered by FluxBB