Databases Reference
In-Depth Information
Ein Validierungsfehler ergibt sich, wenn wir die DTD aus Listing 22.4 unverän-
dert lassen und uns am XML-Dokument zu schaffen machen, indem wir etwa das
Element reihe durch serie ersetzen.
22.3
XML und relationale Datenbanken
XML-Dokumente teilen wir in zwei Kategorien ein:
Datenzentrierte Dokumente sind stark strukturiert und genügen immer den
gleichen einfachen Regeln. In vielen Fällen liegt auch eine Schemadefinition in
Form einer DTD oder eines XML-Schemas vor. Das Dokument aus Listing 22.2
ist so ein Beispiel. Wir können uns vorstellen, dass es viele derartige Dokumen-
te gibt und haben selbst bereits eine passende DTD formuliert.
Dokumentenzentrierte XML-Dateien haben eine unregelmäßige Struktur und
genügen keinen einfachen Regeln. Sie entsprechen eher dem, was wir uns
landläufig unter einem Dokument vorstellen. Das XHTML-Dokument aus
Listing 22.3 ist so ein Beispiel. Textelemente können überall etwa mit <b> -
oder <i> -Elementen durchsetzt sein. Wenn es überhaupt eine Schemadefini-
tion gibt, ist sie meistens kompliziert. In der DTD für dokumentenzentrier-
tes XML trifft man häufig so genannten mixed content der Form (#PCDATA |
element1 | element2) * an: Elemente und Text können hier also in belie-
biger Reihenfolge auftreten.
Die Grenze zwischen diese beiden Arten von Dokumenten kann nicht klar ge-
zogen werden. Es gibt auch Fälle, für die wir diese Zuordnung nicht eindeutig
durchführen können. In den nun folgenden beiden Abschnitten untersuchen wir,
wie wir diese beiden Arten von XML-Dokumenten auf Tabellen abbilden können.
22.3.1 Datenzentriertes XML
In der Literatur (siehe etwa [Bru00]) werden immer wieder Verfahren angegeben,
um Tabellen zu finden, die zu einer bestimmten Klasse von XML-Dokumenten
passen. Man kann Faustregeln formulieren, wie etwa die, dass Elemente auf Ta-
bellen und Attribute auf Spalten abgebildet werden. Da geschachtelte Datenty-
pen aber im relationalen Modell nicht vorgesehen sind, kommen wir bereits bei
einer geringen Schachtelungstiefe in Schwierigkeiten. Hier können uns Schlüssel-
und Fremdschlüsselbeziehungen weiterhelfen, um die Hierarchie abzubilden. Ei-
ne Umsetzung der DTD aus Listing 22.4 könnte so aussehen:
create table reihe(
id int generated always as identity primary key,
name varchar(20) not null
);
create table alben(
 
Search WWH ::




Custom Search