Einfügen von Daten in mehrere verknüpfte Tabellen

www.altova.com Dieses Kapitel drucken Vorherige Seite Eine Ebene nach oben Nächste Seite

Startseite >  Datenquellen und -ziele > Datenbanken und MapForce > Mappen von Daten auf Datenbanken >

Einfügen von Daten in mehrere verknüpfte Tabellen

Bei einer Datenbanktabelle kann es sich um eine Parent-Tabelle, also eine übergeordnete Tabelle handeln. D.h. diese Tabelle kann über Sekundärschlüsselbeziehungen von anderen Tabellen in der Datenbank referenziert werden. Sie können das Mapping in solchen Szenarien so konfigurieren, dass nicht nur in die Parent-Tabelle Datensätze eingefügt werden, sondern auch in davon abhängige Child-Tabellen. Wenn z.B. ein neuer Firmendatensatz in eine Datenbanktabelle eingefügt wird, können auch Datensätze für Niederlassungen, die mit dieser Firma verknüpft sind, sowie deren untergeordnete Abteilungen (departments), Mitarbeiter (persons) usw. eingefügt werden.

 

In diesem Beispiel wird gezeigt, wie Sie Daten in mehrere Tabellen einfügen und dabei Datenbankbeziehungen beibehalten. Es handelt sich bei diesem Beispiel um eine etwas komplexere Version des vorherigen Beispiels Einfügen von Daten in eine Tabelle. Im Beispiel-Mapping werden die folgenden Dateien verwendet:

 

Altova_Hierarchical.mfd - die eigentliche Mapping-Datei
Altova_Hierarchical.xml - enthält die Quelldaten, die in die Datenbank eingefügt werden sollen
Altova_Hierarchical.xsd - das Schema, anhand dessen die obige Instanzdatei validiert wird
AltovaTarget.mdb - die Zieldatenbank, die aktualisiert werden soll

 

Sie finden all diese Dateien im Ordner <Dokumente>\Altova\MapForce2019\MapForceExamples\. Der vollständige Pfad wurde in der Folge aus Gründen der Einfachheit weggelassen.

 

Im Mapping in diesem Beispiel wird eine Beispieldatenbankdatei geändert. Es wird empfohlen, eine Sicherungskopie der Originaldatenbank zu erstellen und mit einer neuen Kopie zu arbeiten, bevor Sie die unten stehende Anleitung befolgen. Dadurch stellen Sie sicher, dass die Originaldaten nicht überschrieben werden und Sie dasselbe Ergebnis, wie unten beschrieben, erhalten. Nähere Informationen dazu finden Sie unter Ausführen von Mappings, die Datenbanken modifizieren.

 

Ziel des Mappings ist es, Daten in der Zieldatenbank (AltovaTarget.mdb) durch Daten aus der XML-Quelldatei zu ersetzen. Die Struktur der XML-Datei entspricht ungefähr der hierarchischen Struktur der Tabellen in der Datenbank. Es handelt sich um ein Organigramm, des folgendermaßen strukturiert ist: Das oberste Element ist eine Firma, die zwei Niederlassungen (offices) hat. Jede Niederlassung enthält Abteilungen (departments) und jede Abteilung enthält Mitarbeiter (persons). Dieselbe Hierarchie finden Sie in der Zieldatenbank AltovaTarget.mdb, in der die Tabelle "Altova" der Firma entspricht. Diese Tabelle ist über Sekundärschlüsselbeziehungen mit Datensätzen in der Tabelle "Office" verknüpft. Außerdem ist "Office" mit "Department" verknüpft und "Department" mit "Person". Um ein Beziehungsdiagramm der Datenbank AltovaTarget.mdb zu sehen, öffnen Sie sie in der Ansicht "Beziehungen" von Access (siehe auch Behandlung von Datenbankbeziehungen).

 

Gehen Sie dazu folgendermaßen vor:

 

Schritt 1: Fügen Sie die XML-Quellkomponente ein

Klicken Sie im Menü Einfügen auf XML-Schema/Datei und navigieren Sie zur Datei Altova_Hierarchical.xsd. Wenn Sie aufgefordert werden, eine Instanzdatei anzugeben, navigieren Sie zur Datei Altova_Hierarchical.xml.

 

Schritt 2: Fügen Sie die Zieldatenbank ein

Klicken Sie im Menü Einfügen auf Datenbank und befolgen Sie die Anweisungen des Assistenten, um eine Verbindung zu AltovaTarget.mdb herzustellen. die Anleitung zum Herstellen einer Verbindung zu dieser Datenbank ist dieselbe wie die Anleitung zum Verbinden mit altova.mdb (siehe Beispiel: Hinzufügen der Datenbank "altova.mdb" zum Mapping).

 

Schritt 3: Ziehen Sie die Verbindungen

Ziehen Sie die Mapping-Verbindungen wie unten gezeigt. Beachten Sie, dass die Primär- und Sekundärschlüssel nicht gemappt sind; diese werden wie unten gezeigt on-the-fly generiert.

mf_db_insert_multiple_01

Anmerkung:Wenn für untergeordnete Datenelemente automatisch unerwünschte Verbindungen gezogen werden, so ist die Option "Idente Sub-Einträge automatisch verbinden" aktiv. Falls dies der Fall ist, können Sie die letzte Aktion mit der Menüoption Bearbeiten | Rückgängig rückgängig machen. Um die Option zum automatischen Verbinden von Sub-Einträgen zu deaktivieren, klicken Sie auf die Menüoption Verbindung | Idente Sub-Einträge automatisch verbinden.

 

Schritt 4: Konfigurieren Sie die Einfügeaktionen

1.Klicken Sie auf die Schaltfläche Aktion: Einfügen ( tbl-act-icon ) neben der Tabelle "Altova" und konfigurieren Sie die Einstellung max() + 1 des Primärschlüssels wie unten gezeigt. Die Einstellung wurde im vorherigen Beispiel Einfügen von Daten in eine Tabelle näher erläutert.

mf_db_insert_multiple_02

Beachten Sie außerdem, dass die Option Alle Datensätze löschen aktiviert ist. Dadurch werden plangemäß alle vorhandenen Datensätze aus der Tabelle gelöscht, bevor neue eingegeben werden. Wenn Sie diese Option deaktivieren, werden bei jeder Ausführung des Mappings neue Datensätze (mit einem neuen Primärschlüssel) zusätzlich zu den bereits vorhandenen zur Datenbank hinzugefügt, was in diesem Fall nicht erwünscht ist.

 

In diesem Beispiel ist auch die Option auch alle Datensätze in Child-Tabellen löschen aktiviert. Damit wird sichergestellt, dass nicht nur die Datensätze aus der Tabelle "Altova" gelöscht werden, sondern auch alle Datensätze in Tabellen, die über eine Sekundärschlüsselbeziehung mit der Tabelle "Altova" verknüpft sind. Wenn die Child-Tabellen selbst Child-Tabellen enthalten, so werden auch diese gelöscht. Dies wird über die gesamte Hierarchie der abhängigen Tabellen bis zur untersten Tabelle fortgesetzt. Würden Sie versuchen, nur Datensätze aus der Root-Tabelle "Altova" zu löschen, würde die Datenbankintegrität dadurch verletzt und die Mapping-Ausführung würde fehlschlagen.

 

Erläuterungen zu den anderen Optionen im Dialogfeld "Datenbankaktionen" finden Sie unter Einstellungen für Datenbankaktionen.

 

2.Klicken Sie auf OK, um das Dialogfeld zu schließen. Beachten Sie, dass im Mapping-Bereich die Schaltfläche nun als mf_db_ic_delete_action_insert angezeigt wird. Damit wird angezeigt, dass eine "Delete"-Anweisung vor der Einfügeaktion konfiguriert wurde.
3.Klicken Sie auf die Schaltfläche tbl-act-icon neben der Tabelle "Office" und konfigurieren Sie die Einstellung max() + 1 des Primärschlüssels.

mf_db_insert_multiple_03

4.Führen Sie für jede untergeordnete Tabelle von "Office", nämlich "Address", "Department" und "Person" Schritt 3 durch. Vergewissern Sie sich, dass all diese Tabellen unmittelbar untergeordnete Tabellen der Root-Tabelle "Altova" sind. Eine Erklärung, was eine Root-Tabelle ist und wofür diese benötigt wird, finden Sie unter Behandlung von Datenbankbeziehungen.

 

Schritt 5: Vorschau auf das Mapping und Aktualisieren der Datenbank

Klicken Sie auf das Register Ausgabe, um eine Vorschau auf das Mapping zu sehen. Es wird ein SQL-Skript generiert, das Aktionen enthält, die an der Datenbank ausgeführt werden sollen. Das Skript hat die Datenbank noch nicht geändert; dies dient nur zur Vorschau.

 

So führen Sie das Skript an der Datenbank aus:

 

Klicken Sie im Menü Ausgabe auf SQL-Script ausführen.

 

Anmerkung:Das Ausführen des SQL-Skripts direkt von MapForce aus ist nur eine der Methoden, um eine Datenbank zu aktualisieren. Siehe auch Ausführen von Mappings, die Datenbanken modifizieren.

 

Um das Ergebnis zu sehen, öffnen Sie die Tabelle "Altova" in Microsoft Access. Sie sehen darin, wie die Beziehungen aus der XML-Datei, von der Tabelle "Altova" bis hinunter zur Tabelle "Person" nun in der Datenbank übernommen wurden.

mf_db_insert_multiple_04

Sie haben nun ein Mapping erstellt, das Daten in mehrere Datenbanken einfügt, wobei intakte Tabellenbeziehungen erhalten geblieben sind.


© 2019 Altova GmbH