Databases Reference
In-Depth Information
id int generated always as identity primary key,
reihe int not null references reihe
);
create table band(
id int generated always as identity primary key,
nr int not null,
titel varchar(20) not null,
album int not null references alben
);
Die Elemente werden hier in Form von Tabellen dargestellt. Weil das name -
Element im Element reihen verbindlich vorgesehen ist, haben wir es als not
null markiert. Da es im name -Element nur den Text und keine weiteren Elemen-
te gibt, sind wir von der Faustregel abgewichen und haben name einfach auf eine
Spalte der Tabelle reihe abgebildet. Die Elemente alben und band setzen wir
mit Tabellen, die Attribute nr und titel mit Spalten um. Weil wir die Tabelle
band nicht in die Tabelle alben einbetten können, verknüpfen wir beide Tabel-
len mit einer Schlüssel-Fremdschlüssel-Beziehung.
Uns fällt auf, dass die Tabelle alben , bis auf etwas Verwaltungsinformation, keine
weiteren Daten enthält. Sie ist daher verzichtbar und kann mit der Tabelle band
fusioniert werden:
Listing 22.5: Tabellen für spezielle XML-Dokumente
create table reihe(
id int generated always as identity primary key,
name varchar(20) not null
);
create table alben(
id int generated always as identity primary key,
nr int not null,
titel varchar(20) not null,
reihe int not null references reihe
)
Die Erfahrung zeigt indes, dass jedes noch so komplexe Regelwerk, mit dem wir
ähnlich wie in diesem Beispiel XML-Dokumente auf Tabellen abbilden,
nur eine Annäherung an die XML-Dokumente liefert;
früh an seine Grenzen stößt.
Für einfache, datenzentrierte Dokumente können wir weitgehend äquivalente Ta-
bellen finden. Sobald die Komplexität zunimmt, sind immer wieder Dokumente
möglich, deren Daten nicht ohne Weiteres in Tabellen eingefügt werden können.
In den meisten Fällen können wir für datenzentrierte Dokumente auch auf ein
 
Search WWH ::




Custom Search