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