Altova MapForce 2023 Enterprise Edition

Une table de base de données peut être une table "parent" ; c'est-à-dire, elle peut être référée par d'autres tables dans la base de données par le biais des relations de clé étrangères. Dans ce type de scénarios, vous pouvez configurer le mappage pour insérer des enregistrements non seulement dans la table parent, mais aussi dans des tables enfant dépendantes. Par exemple, lors de l'insertion d'un nouvel enregistrement "company" dans la table de base de données, vous pouvez aussi insérer des enregistrements pour des bureaux liés à cette entreprise, ainsi que pour leurs départements, personnes, etc. enfants.

 

Cet exemple vous montre comment insérer des données dans des tables tout en préservant les relations de la base de données. Il s’agit d’un version un plus élaborée de l’exemple précédent, Insérer des données dans une table. L'exemple est accompagné par un échantillon de mappage, et utilise les fichiers suivants :

 

Altova_Hierarchical.mfd — le fichier de mappage actuel.

Altova_Hierarchical.xml — contient les données de source à insérer dans la base de données.

Altova_Hierarchical.xsd — le schéma utilisé pour valider le fichier d'instance ci-dessus.

AltovaTarget.sqlite — la base de données à mettre à jour.

 

Tous de fichiers sont disponibles dans le dossier <Documents>\Altova\MapForce2023\MapForceExamples\. Ci-dessous, le chemin complet vers les fichiers sera omis, par mesure de simplicité.

 

Le mappage dans cet exemple modifie un fichier de base de données d'échantillon. Il est fortement recommande de sauvegarder la base de données originale et de commencer avec une nouvelle copie avant de suivre les étapes ci-dessous. Cela garantit que les exemples originaux ne sont pas contournés et que vous obtenez les mêmes résultats ci-dessous. Pour plus d'informations, voir Exécuter des mappages qui modifient les bases de données.

 

L'objectif du mappage est de remplacer des données dans la base de données cible (AltovaTarget.sqlite) avec des données provenant d'un fichier XML de source. La structure du fichier XML correspond environ à la strucutre hérarchique des tables dans la base de données. Il s'agit d'un graphique organisationnel et structuré comme suit : l'élément supérieur est une entreprise qui contient deux bureaux. Chaque bureau contient des départements et chaque département contient des personnes. La même hiérarchie existe dans AltovaTarget.sqlite, où la table "Altova" correspond à l'entreprise. Cette table est liée, par le biais de relations de clé étrangères, aux enregistrements dans la table "Office". De même, les liens "Office" vers "Department", et les liens "Department" vers "Person". Pour voir un diagramme de relation de la base de données AltovaTarget.sqlite, ouvrez-le dans l’aperçu "Relationships" d’Access (see also Gérer des relations de base de données).

 

Pour atteindre l'objectif de mappage, nous allons suivre les étapes suivantes.

 

Étape 1 : Insérer le composant XML source

Dans le menu Insérer, cliquer sur Schéma/Fichier XML, et chercher Altova_Hierarchical.xsd. Lorsque vous êtes invité à fournir un fichier d'instance, chercher Altova_Hierarchical.xml.

 

Étape 2 : Insérer la base de données cible

Dans le menu Insérer, cliquer sur Base de données, et suivre les étapes de l'assistant pour vous connecter à AltovaTarget.sqlite. Voir Ajouter une Base de données.

 

Étape 3 : Tirer les connexions

Tracer les connexions de mappage comme indiqué ci-dessous. Veuillez noter que les clés primaires et étrangères ne sont pas mappées ; elles seront générées immédiatement, comme affiché ci-dessous.

mf_db_insert_multiple_01
Note :Si des connexions non désirées sont tracées automatiquement pour des items descendants, l'option "Connecter automatiquement des enfants" est active. Dans ce cas, pour défaire la dernière action, choisir l'option de menu Édition | Annuler. Pour désactiver l'option de connexion automatique, choisir l'option de menu Connexion | Auto connexion des enfants correspondants.

 

Étape 4 : Configurer les actions Insérer

1.Dans le composant de cible, cliquer sur la touche Action: Insérer ( tbl-act-icon ) à côté de la table "Altova" et configurer le paramètre max() + 1 de la clé primaire comme affiché ci-dessous. Ce paramètre a été expliqué de manière plus détaillée dans l'exemple précédent, voir Insérer des données dans une table.

mf_db_insert_multiple_02

De plus, veuillez noter que l'option SUPPRIMER tous les enregistrements est activée. Cela permet de supprimer tous les enregistrements existants depuis la table, avant que de nouveaux enregistrements soient saisis, ce qui constitue le comportement désiré dans cet exemple. Si vous désactivez cette option, de nouveaux enregistrements (avec une clé primaire) seront ajoutés à la base de données en plus de celles qui existent, à chaque fois que vous exécutez le mappage, ce qui n'est pas le comportement désiré.

 

Pour le besoin de cet exemple, l'option supprime aussi tous les enregistrements des tables enfants est aussi activée. Cela garantit que non seulement les enregistrements depuis la table "Altova" sont supprimés, mais aussi tous les enregistrements, dans les tables qui sont liés à la table "Altova" par le biais de la relation de la clé étrangère. Si les tables enfant possèdent leur propres tables enfants, ceux-ci seront aussi supprimés, etc., jusque la dernière table dans l'arborescence de dépendance. Si vous tentez de supprimer uniquement des enregistrements depuis la table racine "Altova", cela violerait l'intégrité de la base de données, et l'exécution du mappage échouerait.

 

Pour des références vers d’autres options disponibles dans la boîte de dialogue Actions de Table de base de données, voir Paramètres Actions de table de base de données..

 

2.Cliquer sur OK pour fermer le dialogue. Veuillez noter que, dans la surface de mappage, l'apparence de la touche a changé en mf_db_ic_delete_action_insert. Cela indique qu'une instruction "Supprimer" est configurée pour avoir lieu avant l'action "Insérer".

3.Cliquez sur la touche tbl-act-icon à côté de la table "Office" et configurezle paramètre max() + 1 de la clé primaire.

mf_db_insert_multiple_03

4.Effectuer l'étape 3 pour chaque table descendant depuis "Office", concrètement : "Address", "Department", et "Person". Veuillez vous assurer que toutes ces tables sont immédiatement descendantes de la table de racine "Altova". Pour une explication de ce qui est une table "root" et pourquoi elle est nécessaire, voir Gérer des relations de base de données.

 

Étape 5 : Consulter le mappage et mettre à jour la base de données

Cliquer sur l'onglet Sortie pour consulter le mappage. Un script SQL est généré, contenant les actions à exécuter par rapport à la base de données. Le script n'a pas encore modifié la base de données ; elle est uniquement destinée à la prévisualisation.

 

Pour exécuter le script par rapport à la base de données :

 

Dans le menu Sortie, cliquer sur Exécuter Script SQL.

 

Note :L'exécution du script SQL directement depuis MapForce est juste un des moyens mis à disposition pour mettre à jour la base de données, voir aussi Exécuter des mappages qui modifient des bases de données.

 

Pour voir le résultat, ouvrir la table "Altova" dans la base de données SQLite, et observer comment les relations depuis le fichier XML ont maintenant été propagées dans la base de données, depuis la table "Altova" jusqu'à la table "Person".

mf_db_insert_multiple_04

Vous avez maintenant terminé la création d'un mappage qui insère des données dans plusieurs tables de base de données, tout en préservant les relations d'intégrité de la table.

© 2017-2023 Altova GmbH