Präsentation

Werbung
Seminar: XML & Datenbanken
„ Abbildung von Tabellen auf XML“
Christian Schwartze
Institut für Informatik
Friedrich­Schiller­Universität Jena
28. Mai 2004
Seminar: XML & Datenbanken
28.05.2004
Inhalt
1) Motivation
2) Einblick: Tag­Generierung & XML­Strukturierung
3) Abbildungen von Datenbanken/Tabellen
4) Abbildungen von Datenbankausschnitten
5) Individuelle Abbildungsregeln
6) XML­Publishing im Praxisbeispiel
2
Seminar: XML & Datenbanken
28.05.2004
Motivation
Internet
User Query
RDBMS
➢ Vielzahl großer Datenmengen in relationalen Datenbanken gespeichert
➢ keine Änderung in naher Zukunft zu erwarten, sondern vielmehr Konzepte zur effizienten Darstellung relationaler Daten als XML­Dokumente
➢ ...und warum XML?
➢ Elegante Modellierung komplexer und hierarchischer Daten durch selbstbeschreibende Syntax ➢ Standardisiert für Austausch und Publikation im WWW
➢ Tools
3
Seminar: XML & Datenbanken
28.05.2004
Motivation
➢ Relationale Tabellen vs. XML:
Rel. Tabelle
XML­Dokument




Tagging
Nesting R1
R2
A
2
1
B
4
2
C
1
D
3
DB
R1
C
1
2
T
A
2
B
4
Student
R2
T
C
1
A
1
Prüfung
T
B
2
C
C
D
2
1
3
schriftlich
Fach
Note
mündlich
Fach
Note
Dauer
➢ Relationale Tabellen sind flach organisiert, XML ist graphen­ und tagged­
strukturiert
➢ Benötigen: (Anfrage­)Sprache (Spezifizierung d. Translation) + effiziente Mechanismen zur Durchführung
4
Seminar: XML & Datenbanken
28.05.2004
Inhalt
1) Motivation
2) Einblick: Tag­Generierung & XML­Strukturierung
3) Abbildungen von Datenbanken/Tabellen
4) Abbildungen von Datenbankausschnitten
5) Individuelle Abbildungsregeln
6) XML­Publishing im Praxisbeispiel
5
Seminar: XML & Datenbanken
28.05.2004
Einblick: Tag­Generierung & XML­Strukturierung
➢ Beispiel­Szenario: „J enaer Veranstaltungskalender“
➢ ER­Modell:
bietet an
ID
Name
KONTAKT
(1,1)
hat
VERANSTALTUNG
Zeit
Name
Datum
VEREIN/VERANST.
(1,1)
ID
Name
Adresse
VERANSTALTUNG
ID
1
2
3
Ort
ID
(0,*)
Telefon
(1,1)
Name
Jupiters Kusinen
Führung durch die „Historische Zeiss-Werkstatt 1866“
Gaia – der dritte Planet
6
VEREIN / VERANSTALTER
ID Name
1 Planetarium
2 Optisches Museum
Datum
13.05.04
19.05.04
15.05.04
Zeit
11.00 Uhr
14.30 Uhr
15.00 Uhr
Adresse
Am Planetarium 3
Carl-Zeiss-Platz 12
Ort
Planetarium
Opt. Museum
Planetarium
Veranstalter
1
2
1
Seminar: XML & Datenbanken
28.05.2004
Einblick: Tag­Generierung & XML­Strukturierung
➢ Zeitpunkt des Setzens von Tags und des Aufbaus einer XML­Struktur ist entscheidendes Kriterium für verschiedene Implementierungsvarianten:
Early Structuring
Late Structuring
Early Tagging
Late Tagging
Inside Engine
or
Outside Engine
Inside Engine
or
Outside Engine
Inside Engine
or
Outside Engine
...eine Frage der Effizienz!
(soll in diesem Seminarvortrag
unberücksichtigt bleiben)
➢ Early Tagging – Early Structuring:
➢ Stored Procedure Approach (Outside Engine), Correlated CLOB Approach (Inside Engine)
➢ Late Tagging – Late Structuring
➢ Redundant Relation Approach, Unsorted Outer Union Approach, Hash­
based Tagger
➢ Late Tagging – Early Structuring
➢ Sorted Outer Union Approach, Constant Space Tagger
7
Seminar: XML & Datenbanken
28.05.2004
Einblick: Tag­Generierung & XML­Strukturierung
➢ Early Tagging – Early Structuring: Stored Procedure Approach (Outside Engine)
➢ Stored Procedure führt Anfragen für jede Sub­Struktur aus, beginnend bei der Wurzel, und arbeitet sich nach unten iterativ durch
VEREIN (ID, Name, Adresse)
VERANSTALTUNG (ID, Name, Datum, Zeit, Ort, Verein_ID)
<Verein ID = 001>
<Name>Planetarium</Name>
<Adresse>Am Planetarium 3</Adresse>
<Veranstaltung>
{Veranstaltungen}
</Veranstaltung>
<Kontakt>
{Kontakte}
</Kontakt>
</Verein>
<Verein ID = 002>
...
KONTAKT (Name, Telefon, Verein_ID)
➢ Problematisch: viele SQL­Queries!
8
Seminar: XML & Datenbanken
28.05.2004
Einblick: Tag­Generierung & XML­Strukturierung
➢ Late Tagging – Late Structuring: Redundant Relation Approach (Inside Engine)
➢ 1.) Sammeln der relationalen Daten (Content Creation) + 2.) Structuring / Tagging
➢ Idee: Outer Join auf alle beteiligten Tabellen
Select
V.ID, V.Name, V.Adresse, Vst.ID, Vst.Name, Vst.Datum
Vst.Zeit, Vst.Ort, K.ID, K.Name, K.Telefon
From
Verein V
Left join Veranstaltung Vst on V.ID = Vst.Verein_ID
Left join Kontakt K on V.ID = K.Verein_ID
V.ID V.Name
V.Adresse
Vst.ID Vst.Name
Vst.Datum
Vst.Zeit
1
Planetarium
Am Planetarium 3
1
Jupiters Kusinen
13.05.04
11.00 Uhr Planetarium
...
1
Planetarium
Am Planetarium 3
3
Gaia – der dritte...
15.05.04
15.00 Uhr Planetarium
...
2
Opt. Museum
Carl­Zeiss­Platz 12
2
Führung durch die... 19.05.04
➢ Nachteilig: redundante Infomationen
9
Vst.Ort
14.30 Uhr Opt.Museum ...
Seminar: XML & Datenbanken
28.05.2004
Inhalt
1) Motivation
2) Einblick: Tag­Generierung & XML­Strukturierung
3) Abbildungen von Datenbanken/Tabellen
4) Abbildungen von Datenbankausschnitten
5) Individuelle Abbildungsregeln
6) XML­Publishing im Praxisbeispiel
10
Seminar: XML & Datenbanken
28.05.2004
Abbildungen von Datenbanken/Tabellen
➢ Ziel: informationserhaltende Abbildung, d. h. Datenbankinhalt + Datenbankstruktur
➢ Ansatz: Fest definierte Vorschriften bilden Inhalt und Struktur durch A) XML­Elemente oder
B) XML­Elemente + XML­Attribute ab. ➢ Dreistufige Datenbankhierarchie wird gleichermaßen dreistufig auf XML abgebildet: Datenbankname
Tabellennamen
Spaltennamen
XML­Wurzelelement

XML­Elemente
XML­Elemente/­Attribute
11
Seminar: XML & Datenbanken
28.05.2004
Abbildungen von Datenbanken/Tabellen
➢ Struktur der XML­Dokumente:
Abbildung durch Elemente
Abbildung durch Elemente + Attribute
<Jena-Veranstaltungskalender>
<Veranstaltung VeranstID = „1“
Name = „Jupiters Kusinen“
Datum = „13.05.04“
Zeit = „11.00“
Ort = „Planetarium“
Verein_ID = „1“
/>
...
<Verein VereinID = „1“
Name = „Planetarium“
Adresse = „Am Planetarium 3“
/>
...
</Jena-Veranstaltungskalender>
<Jena-Veranstaltungskalender>
<Veranstaltung>
<VeranstID>1</VeranstID>
<Name>Jupiters Kusinen
</Name>
<Datum>13.05.04</Datum>
<Zeit>11.00</Zeit>
<Ort>Planetarium</Ort>
<Verein_ID>1</Verein_ID>
</Veransatltung>
...
<Verein>
<VereinID>1</VereinID>
<Name>Planetarium</Name>
<Adresse>Am Planetarium 3
</Adresse>
</Verein>
...
</Jena-Veranstaltungskalender>
12
Seminar: XML & Datenbanken
28.05.2004
Abbildungen von Datenbanken/Tabellen
➢ Ableiten der DTD'
s:
Abbildung durch Elemente
Abbildung durch Elemente + Attribute
<!ELEMENT Jena-Veranstaltungskalender <!ELEMENT
(Veranstaltung*, Verein*)>
<!ELEMENT Veranstaltung (VeranstID,
Name, Datum, Zeit, Ort,
<!ELEMENT
Verein_ID)>
<!ATTLIST
<!ELEMENT Verein (VereinID, VereinName,
Adresse)>
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
VeranstID (#PCDATA)>
Name (#PCDATA)>
Datum (#PCDATA)>
Zeit (#PCDATA)>
Ort (#PCDATA)>
Verein_ID (#PCDATA)>
VereinID (#PCDATA)>
VereinName (#PCDATA)>
Adresse (#PCDATA)>
Jena-Veranstaltungskalender
(Veranstaltung*, Verein*)>
Veranstaltung EMPTY>
Veranstaltung
VeranstID CDATA #REQUIRED
Name CDATA #REQUIRED
Datum CDATA #REQUIRED
Zeit CDATA #REQUIRED
Ort CDATA #REQUIRED
Verein_ID CDATA #REQUIRED>
<!ELEMENT Verein EMPTY>
<!ATTLIST Verein
VereinID CDATA #REQUIRED
VereinName CDATA #REQUIRED
Adresse CDATA #REQUIRED>
13
Seminar: XML & Datenbanken
28.05.2004
Abbildungen von Datenbanken/Tabellen
➢ Einige Regeln zum Ableiten der DTD'
s:
(a) Datenbankname ist Wurzelelement und ist deklariert als Sequenz aller Relationen mit „ *“­ bzw „ +“­Qu antifizierer
(b) Element­Darstellung: Relationen werden als Elemente deklariert und enthalten Sequenz ihrer Attribute
i. Attribute, die Nullwerte zulassen, werden mit „? “ ­Quantifizierer spezifiziert, z.B.: <!ELEMENT Veranstaltung(VeranstID,Name,Datum,Zeit?,Ort,..)>
ii. Attribute werden als Elemente deklariert und bekommen #PCDATA zugewiesen
(c) Attribut­Darstellung: Relationen werden als leere Elemente (EMPTY) deklariert, wobei es eine gleichnamige Attributdeklaration gibt
i. Pflichtattribute werden in der Attributdeklaration durch #REQUIRED gekennzeichnet ii. optionale Attribute sind durch #IMPLIED definiert
➢ Problem: Bisher noch keine Schlüssel­ und Typinformationen abgebildet!
➢ Schlüssel (und Fremdschlüssel) sind nur Werte von Elementen/Attributen
14
Seminar: XML & Datenbanken
28.05.2004
Abbildungen von Datenbanken/Tabellen
➢ Ziel: Möglichst adäquate Wiedergabe von (Fremd­)Schlüsseln im XML­
Dokument
➢ Möglichkeit 1: DTD
➢ Vorschlag: Schlüssel vom Typ ID, Fremdschlüssel vom Typ IDREF
➢ Problem: globale Eindeutigkeit von ID'
s im XML­Dokument nicht gewährleistet, z.B.:
<Jena-Veranstaltungskalender>
<Veranstaltung VeranstID = „1“
Name = „Jupiters Kusinen“
Datum = „13.05.04“
Zeit = „11.00“
Ort = „Planetarium“
Verein_ID = „1“
/>
...
<Verein VereinID = „1“
Name = „Planetarium“
Adresse = „Am Planetarium 3“
/>
...
</Jena-Veranstaltungskalender>
15
Müssen Schlüssel
eindeutig generieren!

z.B. durch Kombination
aus Relationenname,
Attributname und
Schlüsselwert
Seminar: XML & Datenbanken
28.05.2004
Abbildungen von Datenbanken/Tabellen
➢ Im laufenden Beispiel:
<Jena-Veranstaltungskalender>
<Veranstaltung VeranstID = „Veranstaltung_VeranstID_1“
Name = „Jupiters Kusinen“
Datum = „13.05.04“
<!ELEMENT Jena-Veranstaltungskalender
Zeit = „11.00“
(Veranstaltung*, Verein*)>
Ort = „Planetarium“
Verein_ID = „Verein_VereinID_1“
<!ELEMENT Veranstaltung EMPTY>
/>
<!ATTLIST Veranstaltung
...
VeranstID ID #REQUIRED
<Verein VereinID = „Verein_VereinID_1“
Name CDATA #REQUIRED
Name = „Planetarium“
Datum CDATA #REQUIRED
Adresse = „Am Planetarium 3“
Zeit CDATA #REQUIRED
/>
Ort CDATA #REQUIRED
...
Verein_ID IDREF #REQUIRED>
</Jena-Veranstaltungskalender>
<!ELEMENT Verein EMPTY>
<!ATTLIST Verein
VereinID ID #REQUIRED
VereinName CDATA #REQUIRED
➢ Abbildung von Schlüsselinformationen so Adresse CDATA #REQUIRED>
nur bei Attributdarstellung realisierbar
➢ Alternativer Weg: XML Schema
16
Seminar: XML & Datenbanken
28.05.2004
Abbildungen von Datenbanken/Tabellen
➢ Möglichkeit 2: XML Schema
➢ Vorschlag: Schlüssel mit key, Fremdschlüssel mit keyref definieren
<xsd:element name=“Jena-Veranstaltungskalender“>
<xsd:complexType>
<xsd:sequence>
<xsd:element ref=“Veranstaltung“ minOccurs=“0“ maxOccurs=“Unbounded“/>
<xsd:element ref=“Verein“ minOccurs=“0“ maxOccurs=“Unbounded“/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name=“Veranstaltung“>
...
<xsd:key name=“Veranst_Key“>
<xsd:selector xpath=“/Jena-Veranstaltungskalender/Veranstaltung“/>
<xsd:field xpath=“VeranstID/“/>
</xsd:key>
<xsd:keyref name=“Verein_ForeignKey“ refer=“Verein_Key“>
<xsd:selector xpath=“/Jena-Veranstaltungskalender/Veranstaltung“/>
<xsd:field xpath=“Verein_ID/“/>
</xsd:keyref>
</xsd:element>
<xsd:element name=“Verein“>
...
<xsd:key name=“Verein_Key“>
<xsd:selector xpath=“/Jena-Veranstaltungskalender/Verein“/>
<xsd:field xpath=“VereinID/“/>
</xsd:key>
</xsd:element>
17
Seminar: XML & Datenbanken
28.05.2004
Abbildungen von Datenbanken/Tabellen
➢ Bisher abgebildet: relationale Datenstruktur + Schlüssel
➢ Typinformationen bleiben noch nicht erhalten, ist aber wünschenswert
➢ DTD: #PCDATA (Elementdarstellung) bzw. nur wenig Typen, z.B. CDATA, ID, IDREF, NMTOKEN, ENTITY (Attributdarstellung)
➢ XML Schema: zahlreiche, einfache Datentypen (simple types):
SQL­Typ
BOOLEAN
CHAR
CHARACTER LARGE OBJECT
DATE
FLOAT
INTEGER, SMALLINT, BIGINT
NUMERIC, DECIMAL
TIME
VARCHAR
XML­Typ
xsd:boolean
xsd:string
xsd:string
XML­Erweiterung
xsd:date
xsd:float
xsd:integer
xsd:pattern
xsd:decimal
xsd:time
xsd:string
xsd:length
xsd:maxLength
xsd:maxInclusive,
xsd:minInclusive
xsd:precision,
xsd:scale
xsd:pattern
xsd:maxLength
18
Seminar: XML & Datenbanken
28.05.2004
Abbildungen von Datenbanken/Tabellen
➢ Im Beispiel:
...
<xsd:element name=“Veranstaltung“>
<xsd:complexType>
<xsd:sequence>
<xsd:element name=“VeranstID“ type=“xsd:integer“/>
<xsd:element name=“Name“ type=“xsd:string“ maxLength=“50“/>
<xsd:element name=“Datum“ type=“xsd:date“/>
<xsd:element name=“Zeit“ type=“xsd:time“ minOccurs=“0“/>
<xsd:element name=“Ort“ type=“xsd:string“ maxLength=“30“/>
<xsd:element name=“Verein_ID“ type=“xsd:integer“/>
</xsd:sequence>
</xsd:complexType>
<xsd:key name=“Veranst_Key“>
<xsd:selector xpath=“/Jena-Veranstaltungskalender/Veranstaltung“/>
<xsd:field xpath=“VeranstID/“/>
</xsd:key>
<xsd:keyref name=“Verein_ForeignKey“ refer=“Verein_Key“>
<xsd:selector xpath=“/Jena-Veranstaltungskalender/Veranstaltung“/>
<xsd:field xpath=“Verein_ID/“/>
</xsd:keyref>
</xsd:element>
...
Erlaubt auch
NULL­Value
➢ Modellierung der Datentypen über DTD'
s nicht trivial, da keine Unterstützung von Typspezifikationen
➢ Lösung: zusätzliche Attributdeklaration für jedes Element mit reservierten Attributen
19
Seminar: XML & Datenbanken
28.05.2004
Abbildungen von Datenbanken/Tabellen
➢ Typinformationen in DTD'
s mittels reservierten Attributen an Blattelementen:
...
<!ELEMENT VereinID (#PCDATA)>
<!ATTLIST VereinID xml-sqltype integer #IMPLIED>
...
<Verein>
<VereinID xml-sqltype=“integer“>1</VereinID>
<Name>Planetarium</Name>
<Adresse>Am Planetarium 3</Adresse>
</Verein>
➢ Weitere Informationen auf analoge Weise definierbar, z.B.:
➢ xml-sqlsize: Längenangabe; bei xml-sqltype = (char|varchar) stets mit anzugeben
<!ELEMENT Adresse (#PCDATA)>
<!ATTLIST Adresse xml-sqltype integer #IMPLIED
xml-sqlsize 30>
➢ xml-sqlmin/xml-sqlmax: Einschränkungen im Wertebereich bezüglich aller erlaubten Werte von xml-sqltype
➢ xml-sqlscale: Skalierung für Dezimalzahlen (decimal)
➢ xml-sqltz: optionales Definieren von Zeitzonen für xml-sqltype = time
20
Seminar: XML & Datenbanken
28.05.2004
Inhalt
1) Motivation
2) Einblick: Tag­Generierung & XML­Strukturierung
3) Abbildungen von Datenbanken/Tabellen
4) Abbildungen von Datenbankausschnitten
5) Individuelle Abbildungsregeln
6) XML­Publishing im Praxisbeispiel
21
Seminar: XML & Datenbanken
28.05.2004
Abbildungen von Datenbankausschnitten
➢ Kapitel zuvor: Austausch vollständiger Informationen aus Datenbanken – dies nicht immer wünschenswert, stattdessen:
➢ nur Teile aus Datenbanken abbilden(einzelne Tabellen, Selektionen von Tabellen...)
➢ Spezielle Ausschnitte wiedergeben (bestimmte Spalten „v erstecken“, relevante Spalten darstellen...)
➢ auf Typ­ und Schlüsselinformationen verzichten, falls keine Weiterverarbeitung angesetzt ist
➢ Realisierung
➢ Möglichkeit 1: SQL­Anfragen
select Name, Datum, Zeit, Ort
from
Veranstaltung
where Veranstaltung.Veranstalter = Verein.ID and
Datum between '2004-05-13' and '2004-05-15'
22
?
XML
Seminar: XML & Datenbanken
28.05.2004
Abbildungen von Datenbankausschnitten
➢ Abbildung auf eine vom Datenbanksystem abhängige XML­Dokumenten­
Struktur
➢ In Oracle: ROWSET­Syntax (Oracle XML­Developer'
s Kit und XML SQL Utility)
<ROWSET>
<ROW num=“1“>
<Name>Gaia – der dritte Planet</Name>
<Datum>2004-05-15</Datum>
<Zeit>15.00</Zeit>
<Ort>Planetarium</Ort>
</ROW>
<ROW num=“2“>
<Name>Jupiters Kusinen</Name>
<Datum>2004-05-13</Datum>
<Zeit>11.00</Zeit>
<Ort>Planetarium</Ort>
</ROW>
</ROWSET>
➢ In DB2: XML Extender mittels Data Access Definition (DAD) und darin enthaltenen SQL­Anfragen + Abbildungsvorschrift
23
Seminar: XML & Datenbanken
28.05.2004
Abbildungen von Datenbankausschnitten
➢ Möglichkeit 2: Views
➢ bieten gleichartige Funktionalität: Abbildung von Teilen einer DB
➢ Generierung ebenfalls in vielen Datenbanksystemen integriert, aber nicht syntax­standardisiert
➢ Ziel: ANSI­Standard SQL/XML
➢ Für die Weiterverarbeitung jeweils XML Schema zusätzlich nötig, um Typ­ und Schlüsseleigenschaften erhalten zu können 24
Seminar: XML & Datenbanken
28.05.2004
Inhalt
1) Motivation
2) Einblick: Tag­Generierung & XML­Strukturierung
3) Abbildungen von Datenbanken/Tabellen
4) Abbildungen von Datenbankausschnitten
5) Individuelle Abbildungsregeln
6) XML­Publishing im Praxisbeispiel
25
Seminar: XML & Datenbanken
28.05.2004
Individuelle Abbildungsregeln
➢ bisherige XML­Generierung war syntax­gebunden und ließ keine Modifizierung zu ‣ Abhilfe: Individuelle Abbildungsregeln
A
Relevante DB­Ausschnitte auswählen B
XML­Dokumentenstruktur
festlegen (Syntax)
➢ drei Verfahren zur Realisierung benutzerspezifischer Transformationen: Erweiterte DB­Anfrage + Transformationsregeln
Datenbank
Feststehende
Transformationsregeln
XML­Sicht
XML­
Anfrage
Standardisiertes
XML­Dokument
26
XSLT
1
2
3
XML­
Dokument
Seminar: XML & Datenbanken
28.05.2004
Individuelle Abbildungsregeln
1 Erweiterte DB­Anfrage + Transformationsregeln
➢ verwendete Anfragesprache kombiniert Konstrukte aus Datenbank­ und XML­ Anfragesprachen SELECT
WHERE
Verein.Name as Vereinname,
Veranstaltung.Name as Veranstaltungsname,
Veranstaltung.Datum
Veranstaltung.Veranstalter = Verein.ID AND
Verein.Name = 'Optisches Museum'
DB­Ausschnitt auswählen
SQL­Anfrage
CREATE FUNCTION structureVeranstaltung(Veranstaltungsname : varchar(30)
Datum : date)
RETURNS XML LANGUAGE XML RETURN
<Veranstaltung>
<Name>{Veranstaltungsname}</Name>
<Tag>{Datum}</Tag>
</Veranstaltung>
CREATE FUNCTION structureVerein(Vereinname : varchar(30),
Veranstaltung : xml)
RETURNS XML LANGUAGE XML RETURN
<Verein>
<Veranstalter>{Vereinname}</Veranstalter>
{Veranstaltung}
</Verein>
27
XML­Struktur
festlegen
XML­Konstruktor
Seminar: XML & Datenbanken
28.05.2004
Individuelle Abbildungsregeln
1 Erweiterte DB­Anfrage + Transformationsregeln
➢ weitere Variante: Erweiterung von SQL durch CONSTRUCT SELECT
WHERE
Verein.Name as Vereinname,
Veranstaltung.Name as Veranstaltungsname,
Veranstaltung.Datum
Veranstaltung.Veranstalter = Verein.ID AND
Verein.Name = 'Optisches Museum'
CONSTRUCT
<Verein>
<Veranstalter>$Vereinname</Veranstalter>
<Veranstaltung>
<Name>$Veranstaltungsname</Name>
<Tag>$Datum</Tag>
</Veranstaltung>
</Verein>
➢ bei beiden Varianten generiertes XML­Dokument: <Verein>
<Veranstalter>Optisches Museum</Veranstalter>
<Veranstaltung>
<Name>Führung durch die „Historische Zeiss-Werkstatt 1866“</Name>
<Tag>2004-05-19</Tag>
</Veranstaltung>
</Verein>
28
Seminar: XML & Datenbanken
28.05.2004
Individuelle Abbildungsregeln
2 Feste Transformationsregeln + XML­Anfragen
➢ Idee: Generierung von virtuellen XML­Sichten aus Datenbanken und Anfragen mittels XML­QL oder XQuery an diese Sichten – anschließende Ausgabe in Form von XML­Dokumenten
➢ XML­Anfragen realisieren somit variable Ergebnisstruktur
➢ SilkRoute­Architektur: User Query
(XML­QL)
RXL Query XML­
(View Query) View
Datenbank
Anwendung
XML­
Dokument
Query
Composer
Executable Query (RXL)
SQL
Translator
XML Template
Ergebnistupel
29
XML Generator
Seminar: XML & Datenbanken
28.05.2004
Individuelle Abbildungsregeln
2 Feste Transformationsregeln + XML­Anfragen
➢ Generierung einer virtuellen XML­Sicht in SilkRoute (mit RXL): CONSTRUCT
<view>
{
FROM
CONSTRUCT
Veranstaltung V, Verein VE
<Verein>
<Veranstalter>$VE.Name</Veranstalter>
<Veranstaltung>
<Name>$V.Name</Name>
<Tag>$V.Datum</Tag>
<Zeit>$V.Zeit</Zeit>
<Ort>$V.Ort</Ort>
</Veranstaltung>
</Verein>
}
</view>
➢ ähnliches System für objektrelationale Datenbanken: XTABLES (früher XPERANTO)
➢ nur eine XML­Anfragesprache: XML­QL 30
Seminar: XML & Datenbanken
28.05.2004
Individuelle Abbildungsregeln
2 Feste Transformationsregeln + XML­Anfragen
➢ XTABLES­Architektur User Query
(XML­QL)
Anwendung
XML­
Dokument
Query Translation
XML View Services
XML­QL­Parser
XQGM
XQGM...
XML Query
Graph Model
(in Anlehnung
an QGM aus
DB2 UDB)
Query Rewriter
XML Schema
Generator
XQGM
SQL Translation
SQL
XML Tagger
OR­Datenbank
31
Ergebnistupel
Seminar: XML & Datenbanken
28.05.2004
Individuelle Abbildungsregeln
3 Feste Transformationsregeln + XSLT­Stylesheets
➢ Abbildung des gesamten Datenbankinhalts auf ein Standard­XML­Dokument (beschrieben in Abschnitt 3), anschließend Modifizierung mittels XSLT­
Stylesheets
➢ nur mit XML Schema möglich; DTD'
s haben keine XML­Syntax und sind daher nicht XSLT­transformierbar
➢ Beispiel: XSLT
<Kalender>
<Veranstaltung VeranstID=“1“
Name=“Jupiters Kusinen“
Datum=“2004-05-13“
Zeit=“11.00“
Ort=“Planetarium“
Verein_ID=“1“/>
...
</Kalender>
Individuelles
XML­
Dokument
➢ Ziel: Transformation zu einem XML­Dokument in ausschließlich Elementdarstellung ‣ benötigen XSLT­Stylesheet 32
Seminar: XML & Datenbanken
28.05.2004
Individuelle Abbildungsregeln
3 Feste Transformationsregeln + XSLT­Stylesheets
➢ Beispiel eines Stylesheets mit gewünschter Funktionalität: XSLT­Stylesheet <xsl:stylesheet version=“1.0“>
<xsl:template match=“/“>
<Veranstaltungskalender>
<xsl:apply-templates/>
</Veranstaltungskalender>
</xsl:template>
<xsl:template match=“Veranstaltung“>
<Veranstaltung>
<xsl:for-each select=“@*“>
<xsl:element name=“{name()}“>
<xsl:value-of select=“.“/>
</xsl:element>
</xsl:for-each>
</Veranstaltung>
</xsl:template>
</xsl:stylesheet>
33
Resultierendes XML­Dokument
<Veranstaltungskalender>
<Veranstaltung>
<VeranstID>1
</VeranstID>
<Name>Jupiters...
</Name>
<Datum>2004-05-13
</Datum>
...
</Veranstaltung>
...
</Veranstaltungskalender>
Seminar: XML & Datenbanken
28.05.2004
Individuelle Abbildungsregeln
➢ Mapping­Vorschriften:
➢ kommen ohne Anfragesprache aus, stattdessen werden Verbindungen zwischen Datenbank und XML in einer Mapping­Vorschrift codiert; DTD vorausgesetzt <ClassMap>
<ElementType Name=“Veranstaltungen“/>
<ToClassTable Name=“Veranstaltung“/>
<PropertyMap>
<ElementType Name=“Veranstaltungsname“/>
<ToColumn Name=“Name“/>
<FixedOrder Value=“1“/>
</PropertyMap>
<PropertyMap>
<ElementType Name=“Tag“/>
<ToColumn Name=“Datum“/>
<FixedOrder Value=“2“/>
</PropertyMap>
<ClassMap>
Veranstaltung
ID Name
Datum
Zeit
1 Jupiters Kusinen
13.05.04
11.00 Uhr
2 Führung durch die „Historische Zeiss-Werkstatt
19.05.04 1866“
14.30 Uhr
34
Seminar: XML & Datenbanken
28.05.2004
Inhalt
1) Motivation
2) Einblick: Tag­Generierung & XML­Strukturierung
3) Abbildungen von Datenbanken/Tabellen
4) Abbildungen von Datenbankausschnitten
5) Individuelle Abbildungsregeln
6) XML­Publishing im Praxisbeispiel
35
Seminar: XML & Datenbanken
28.05.2004
XML­Publishing im Praxisbeispiel
➢ am Beispiel DB2 UDB
➢ XML Extender mit zwei Konzepten: XML Column und XML Collection
➢ XML Collection: Abbildung von Relationen auf XML­Strukturen und umgekehrt ‣ zwei Stored Procedures:
➢ dxxShredXML ➢ DxxGenXML ‣ DAD­Datei als Eingabeparameter
➢ DAD­Datei beinhaltet Abbildungsschema mit <sql_stmt>­ oder <RDB_node>­Element
➢ <RDB_node>­Variante einer DAD: XML­Syntax­orientiert und erlaubt Abbildung in beide Richtungen
➢ <RDB_node>­Element spezifiziert Abbildung zwischen Entitäten
36
Seminar: XML & Datenbanken
28.05.2004
XML­Publishing im Praxisbeispiel
<DAD>
<validation>no</validation>
<Xcollection>
<prolog>?xml version=“1.0“?</prolog>
<root_node>
<element_node name=“Jena-Kalender“>
<RDB_node>
<table name=“Veranstaltung“/>
<table name=“Verein“/>
<condition>
Veranstaltung.Verein_ID=Verein.ID
</condition>
</RDB_node>
<element_node name=“Veranstaltung“>
<attribute_node name=“Vereinname“>
<RDB_node>
<table name=“Verein“/>
<column name=“Name“/>
<RDB_node>
</attribute_node>
<text_node>
<RDB_node>
<table name=“Veranstaltung“/>
<column name=“Name“/>
</RDB_node>
</text_node>
... ...
37
Beispiel einer DAD­
Datei mit
<RDB_node>­Elementen
Seminar: XML & Datenbanken
28.05.2004
XML­Publishing im Praxisbeispiel
➢ Resultierendes XML­Dokument:
<Jena-Kalender>
<Veranstaltung Vereinname=“Planetarium“>Jupiters Kusinen
</Veranstaltung>
<Veranstaltung Vereinname=“Optisches Museum“>Führung durch
die Historische Zeiss-Werkstatt 1866
</Veranstaltung>
<Veranstaltung Vereinname=“Planetarium“>Gaia – der dritte
Planet
</Veranstaltung>
</Jena-Kalender>
38
Herunterladen