Présentation
La modification d'une nomenclature (la suppression d'une clé) est une opération délicate car les entrées peuvent être référencées par ailleurs, soit dans une autre nomenclature, soit dans une table spatiale ou liée à celle-ci (tables de détail, tables enfant, ...). Une mise à jour manuelle de toutes les références peut aboutir à des incohérences détectées en partie par ViSit Anywhere, mais surtout par la base auto-synchronisée, car les violations de contraintes sont immédiatement signalées.
De telles modifications sont pourtant nécessaires lors de la fusion de plusieurs communes (des codes insee sont remplacés par d'autres), ou lors du nettoyage d'une nomenclature de diamètres matériaux afin de supprimer des doublons, par exemple.
L'assistant "Migrer les clés..." permet d'automatiser la tâche et d'assurer la cohérence des données finales.
Objectifs
Pour la nomenclature à traiter, l'assistant recherche les références aux clés devant être modifiées dans l'ensemble des tables en relation.
Pour chaque ligne trouvée, l'ancienne clé est remplacée par la nouvelle clé.
Dans la nomenclature, les anciennes clés sont marquées comme obsolète afin de ne plus être présentées sur la création d'un nouvel élément.
Si vous le souhaitez, vous pouvez par la suite supprimer les entrées obsolètes, dans la mesure où elles ne sont plus référencées.
Pas à pas
Dans cet exemple, nous simulons la fusion de deux communes ayant les identifiants 80014 et 80015. La deuxième commune va disparaître au profit de la première. Dans le cas où la fusion aboutirait à l'utilisation d'un nouvel identifiant, il faudrait au préalable ajouter cette nouvelle clé (nouvelle commune) dans la nomenclature.
Tout d'abord, modifiez la structure de la table nomenclature :
- ajouter une colonne pour le nouvel id. Cet id doit par ailleurs être présent dans la nomenclature.
- si elle n'existe pas déjà, ajouter une colonne booléenne destinée à marquer la clé comme obsolète. Une fois ajoutée à la table, cette colonne doit être déclarée dans les propriétés du stockage de la nomenclature
Ensuite, modifiez le contenu de la nomenclature (une réouverture du projet est nécessaire après modification de la structure de la table) afin de renseigner la nouvelle valeur de clé pour chaque clé destinée à disparaître.
Notez que la nouvelle clé doit être présente dans la nomenclature (ici 80014).
Vous pouvez alors démarrer l'assistant en sélectionnant "Migrer les clés..." dans le menu contextuel du stockage de la nomenclature.
L'assistant démarre avec une première page de présentation, puis vous demande de sélectionner la colonne contenant les nouveaux identifiants.
L'assistant vous indique le nombre de valeurs trouvées dans la colonne sélectionnée, en ignorant les lignes marquées obsolètes.
L'étape suivante présente les tables en relation pouvant potentiellement être mises à jour. Lancez le traitement en appuyant sur Analyse, avant de passer à l'étape suivante.
Après analyse, le table présente le nombre de lignes à mettre à jour dans chaque table :
En poursuivant, les changements sont effectués et une dernière page résume ce qui a été fait :
Dans la nomenclature, les lignes ayant été migrées sont marquées "obsolète", ce qui permet de ne plus les proposer lors de la création d'un élément.
Mises en garde
Cet outil peut amener à modifier une grande quantité de données et donc, potentiellement, à provoquer des conflits si on ne prend pas quelques précautions.
- Tout d'abord, demandez aux utilisateurs de consolider leurs éventuels changements et de stopper toute mise à jour. Il peut être préférable d'effectuer le traitement en dehors des heures de service afin de ne pas en perturber le fonctionnement.
- Avant de démarrer le traitement, synchronisez votre projet, sinon vous risquez des conflits lors de la consolidation.
- Après le traitement, consolidez les changements liés au traitement le plus rapidement possible. Il n'est jamais bon de conserver une grande quantité de changements en local.
- Assurez-vous que la révision est bien synchronisée par VA Auto-Synchronisation, si vous disposez de ce service.
- Ensuite seulement, informez les utilisateurs qu'ils doivent synchroniser leur projet avant de démarrer leur saisie.
Dans le cas où vous souhaiteriez supprimer définitivement les valeurs obsolètes de la nomenclature, par exemple avec l'objectif que ces valeurs n'apparaissent pas lors d'une modification d'attributs, les mêmes précautions doivent être prises. Dans notre exemple, il faudrait supprimer la ligne d'identifiant 80015. Il est indispensable que cette valeur ne soit pas reprise dans un changement en cours dans un autre projet. Comme précédemment, demandez la consolidation des changements et l'arrêt de la saisie le temps de la suppression des lignes obsolètes. Avant la reprise de la saisie, les utilisateurs doivent synchroniser leur projet afin de tenir compte des changements dans la nomenclature.