Altova MapForce 2024 Professional Edition

Wenn Sie eine Datenbank als Quellkomponente zu Ihrem Mapping hinzufügen, werden die einzelnen Tabellen als Root-Tabellen angezeigt (Abbildung unten). Wenn Sie auf das Plus-Symbol einer Root-Tabelle klicken, sehen Sie alle in Beziehung stehenden Tabellen unterhalb der Root-Tabelle. In der Datenbankkomponente unten sehen Sie zwei Arten von Pfeilen. Diese haben folgende Bedeutung:

 

Der nach links weisende Pfeil ( mf_ic_db_left_arrow ) gibt an, dass die Tabelle Books eine Child-Tabelle der Tabelle Authors ist.

Der nach rechts weisende Pfeil ( mf_ic_db_right_arrow ) gibt an, dass die Tabelle Authors der Parent der Tabelle Books ist.

MF_BookCatalogRelation02

Struktur von BookCatalog.sqlite

Je nach Anforderung können Sie verschiedene Mapping-Szenarien verwenden. In den folgenden Unterabschnitten werden einige mögliche Szenarien beschrieben. In allen unten beschriebenen Szenarien wird eine hierarchische Datenbank namens BookCatalog.sqlite verwendet. Die Datenbank hat zwei Tabellen (Authors und Books), die eine Sekundärschlüsselbeziehung aufweisen. In der Abbildung unten sehen Sie, dass die Tabelle Books einen Sekundärschlüssel namens AuthorID hat, der den Primärschlüssel in der Tabelle Authors referenziert.

MF_BookCatalogRelation01

Beispieldaten aus BookCatalog.sqlite

Unten sehen Sie Auszüge aus den Tabellen Authors und Books.

MF_BookCatalogAuthors

Tabelle "Authors"

MF_BookCatalogBooks

Tabelle "Books"

 

Szenario 1: Beibehaltung der Hierarchie

In unserem ersten Szenario mappen wir Daten aus BookCatalog.sqlite auf Authors.xsd (siehe Abbildung unten). Authors ist in diesem Mapping die Root-Tabelle. Wir möchten nun die hierarchische Beziehung beibehalten und in der Ausgabe alle Autoren mit den dazugehörigen Büchern erhalten.

MF_BookCatalogRelation03

Im Codefragment unten sehen Sie einen Auszug aus der Ausgabe:

 

<Authors>

<Author ID="23">

<Name>Fredrik Backman</Name>

<Country>Sweden</Country>

<Website>www.fredrikbackmanbooks.com</Website>

<Publications>

<Publication ID="26">

<Title>Anxious People</Title>

<ISBN>978-1-4059-3025-3</ISBN>

<Publisher>Penguin Books Ltd</Publisher>

<PrintLength>416</PrintLength>

<Year>2021</Year>

<Genre>Humor</Genre>

<Price>9.99</Price>

</Publication>

<Publication ID="27">

<Title>A Man Called Ove</Title>

<ISBN>9781444775815</ISBN>

<Publisher>Sceptre</Publisher>

<PrintLength>320</PrintLength>

<Year>2015</Year>

<Genre>Humor</Genre>

<Price>11.46</Price>

</Publication>

</Publications>

</Author>

</Authors>

 

Szenario 2: Vertauschung der Tabellen

Im zweiten Szenario möchten wir in der Ausgabedatei eine Liste von Büchern mit den Informationen dazu erhalten. Als Root-Tabelle verwenden wir hierfür Books. Die Tabellenbeziehungen bleiben erhalten. Das Mapping-Design sieht folgendermaßen aus:

MF_BookCatalogRelation04

Im Codefragment unten sehen Sie einen Auszug aus der Ausgabe:

 

<Books>

<Book ID="3">

<Title>Blackout</Title>

<Author>Ragnar Jonasson</Author>

<AuthorID>2</AuthorID>

<ISBN>1910633461</ISBN>

<Publisher>Orenda Books</Publisher>

<PrintLength>276</PrintLength>

<Year>2016</Year>

<Genre>Crime &amp; Mystery</Genre>

<Price>8.49</Price>

</Book>

<Book ID="4">

<Title>Outsider</Title>

<Author>Stephen King</Author>

<AuthorID>1</AuthorID>

<ISBN>1501180983</ISBN>

<Publisher>Scribner</Publisher>

<PrintLength>576</PrintLength>

<Year>2018</Year>

<Genre>Horror</Genre>

<Price>12.79</Price>

</Book>

</Books>

 

Szenario 3: Mappen von Datenbankdaten aus verschiedenen Root-Tabellen

Im dritten Szenario mappen wir Daten aus den einzelnen Root-Tabellen der Datenbankkomponente auf Authors.xsd (siehe Abbildung unten). Die verknüpften Tabellen werden ignoriert.

MF_BookCatalogRelation05

Als Ergebnis wird unter jedem Autor jedes einzelne Buch unabhängig von seinem Autor aufgelistet (Codefragment unten).

 

<Author ID="19">

<Name>Sebastian Fitzek</Name>

<Country>Germany</Country>

<Website>www.sebastianfitzek.com</Website>

<Publications>

<Publication ID="1">

<Title>Misery</Title>

<ISBN>1501143107</ISBN>

<Publisher>Scribner</Publisher>

<PrintLength>368</PrintLength>

<Year>2016</Year>

<Genre>Horror</Genre>

<Price>11.99</Price>

</Publication>

<Publication ID="2">

<Title>Nightblind</Title>

<ISBN>9781910633113</ISBN>

<Publisher>Orenda Books</Publisher>

<PrintLength>231</PrintLength>

<Year>2016</Year>

<Genre>Crime &amp; Mystery</Genre>

<Price>9.99</Price>

</Publication>

<Publication ID="3">...</Publication>                        

<Publication ID="4">...</Publication>

<Publication ID="5">...</Publication>

<Publication ID="6">...</Publication>

<Publication ID="7">...</Publication>

<Publication ID="8">...</Publication>

</Publications>

</Author>

 

Szenario 4: Mappen von Datenbankdaten auf eine SQL/XML-Struktur

Im vierten Szenario möchten wir Datenbankdaten auf eine flache Schemastruktur (SQL/XML Standard) mappen. Das flache Schema-Modell basiert auf der ISO-ANSI SQL/XML Spezifikation INCITS/ISO/IEC 9075-14-2008. Darin wird definiert, wie Datenbanken auf XML gemappt werden. Beziehungen werden im Schema mittels Identity Constraints definiert und es gibt keine Referenzen auf Elemente. Daher hat das Schema eine flache Struktur, die einer Baumstrukturansicht der Datenbank ähnelt. Die Spezifikation kann im ANSI Store erworben werden. Nähere Informationen dazu finden Sie unter www.iso.org.

 

Im Mapping unten sehen Sie, dass Datenbankdaten aus verschiedenen Root-Tabellen auf eine flache SQL/XML-Struktur gemappt wurden. Die verknüpften Tabellen werden ignoriert. Es können auch Datenbankdaten aus den verknüpften Tabellen gemappt werden. Falls jedoch Book-Datensätze vorhanden sind, die zu keinem Author-Element gehören, so werden diese Book-Datensätze nicht auf die Zielkomponente gemappt.

MF_BookCatalogRelation08

Als Ergebnis erhalten wir eine Liste von Author-Zeilen und eine separate Liste von Book-Zeilen (Abbildung unten).

 

<Author>

<row>

<ID>1</ID>

<Name>Stephen King</Name>

<Country>US</Country>

</row>

<row>

<ID>2</ID>

<Name>Ragnar Jonasson</Name>

<Country>Iceland</Country>

</row>

<row>...</row>

<row>...</row>

</Author>

<Book>

<row>

<Title>Misery</Title>

<BookID>1</BookID>

<AuthorID>1</AuthorID>

<ISBN>1501143107</ISBN>

<Publisher>Scribner</Publisher>

<PrintLength>368</PrintLength>

<Year>2016</Year>

<Genre>Horror</Genre>

<Price>11.99</Price>

</row>

<row>

<Title>Nightblind</Title>

<BookID>2</BookID>

<AuthorID>2</AuthorID>

<ISBN>9781910633113</ISBN>

<Publisher>Orenda Books</Publisher>

<PrintLength>231</PrintLength>

<Year>2016</Year>

<Genre>Crime &amp; Mystery</Genre>

<Price>9.99</Price>

</row>

<row>...</row>

<row>...</row>

</Book>

 

Ein Beispiel zu diesem Szenario finden Sie im folgenden Mapping: MapForceExamples\DB_Altova_SQLXML.mfd.

 

© 2017-2023 Altova GmbH