XML, QPATH, XQUERY: NEUE KONZEPTE FÜR DATENBANKEN 4. Übung SQL/XML Agenda 2 XML zum Abbilden von DB-Inhalten Motivation Abbildungsvorschriften Vollständige Abbildung mithilfe von XML-Schema Beispiel Laender SQL/XML Transformation der Inhalte nach Abbildungsvorschriften Übungen Beispiel Bibliothek (s. Aufgabe 3) Aufgabe 4 XML, QPath, XQuery: Neue Konzepte für Datenbanken WS 07/08 Martin Kost XML zum Abbilden von DB-Inhalten 3 Motivation RDBMS sehr ausgereift (stabil, zuverlässig, schnell, ACID, …) Große Datenmengen bereits verfügbar Datenaustausch über DB-Produkt hinweg umständlich Verschiedene Formate Dumpfiles nicht vom Menschen lesbar Nutzerdefinierte Formate nur schwer erzeugbar XML Standardisiertes Austauschformat Menschenlesbar „einfache“ Transformation in andere Formate XML, QPath, XQuery: Neue Konzepte für Datenbanken WS 07/08 Martin Kost XML zum Abbilden von DB-Inhalten 4 Methoden zum Erstellen einer Abbildung verschiedene (standardisierte) Methoden siehe auch SQL/XML aus Aufgabe 3: Vollständige (schematische) Abbildung von Datenbanken Informationserhaltend: (Alle) Gewünschte Informationseinheiten der Datenbank müssen sich vollständig und konsistent im XMLDokument wiederfinden. Grundprinzip Darstellung von Relationen, Tupeln und Attributen durch XMLElemente oder -Attribute Abbildung von Schlüsseln und Fremdschlüsseln Abbilden von Typinformationen Ableitung von Elementhierarchien XML, QPath, XQuery: Neue Konzepte für Datenbanken WS 07/08 Martin Kost XML zum Abbilden von DB-Inhalten 5 Beispiel – Laender XML, QPath, XQuery: Neue Konzepte für Datenbanken WS 07/08 Martin Kost XML zum Abbilden von DB-Inhalten 6 Abbildungsvorschrift aus Aufgabe 3 vierstufige Verschachtelung: Bezeichnung der Datenbank Relationennamen Tupel Attributnamen Beispiel Laenderinformationen: CREATE TABLE Laender( ID VARCHAR(13) NOT NULL, BevoelkerungsVerweis INTEGER, Hauptstadt VARCHAR(50), PRIMARY KEY(ID), FOREIGN KEY(BevoelkerungsVerweis) REFERENCES Bevoelkerungen); <Datenbankname> <Relationnenname> <Tupel> <Attributname> </Attributname> <Attributname> … <Laenderinformationen> <Laender> <Laender_Tupel> <ID>GER</ID> <Bevoelkerungsverweis> 0</Bevoelkerungsverw eis> <Hauptstadt>Berlin</Ha uptstadt> XML, QPath, XQuery: Neue Konzepte für Datenbanken … WS 07/08 Martin Kost XML zum Abbilden von DB-Inhalten 7 Abbildungsvorschrift aus Aufgabe 3 Abbilden des DB-Schema auf XML-Schema vierstufige Verschachtelung Relationen- und Attributnamen auf Elementnamen SQL-Datentypen auf Datentypen von XML-Schema Tupel auf Elemente mit der Bezeichnung: Relationenname + „_Tupel“ Ableiten von Elementhierarchien Auswertung von Schlüssel-Fremdschlüssel-Beziehungen Kardinalitäten beachten 1:1 – Kardinalität = 1; 1:n – Kardinalität = unbounded & Fremdschlüssel ist unique; m:n – Kardinalität = unbounded meist sinnvoll per Hand festzulegen, da Verweise oft das bessere Mittel sind XML, QPath, XQuery: Neue Konzepte für Datenbanken WS 07/08 Martin Kost XML zum Abbilden von DB-Inhalten 8 Abbildungsvorschrift aus Aufgabe 3 Ableiten von Elementhierarchien bisher: direkte Darstellung von Relationen in XML-Dokumenten keine hierarchischen Beziehungen zwischen Relationen durch Auswertung von Schlüsseln und Fremdschlüsseln Ableitung von hierarchischen Strukturen möglich Vorgehen: Root-Tabelle der Datenbank wählen Element erstellen, das der Relation entspricht (enthält Elemente, die den Attributen entsprechen) falls ein Attribut als Fremdschlüssel definiert ist zugehörige Relation (mit Schlüssel) hierarchisch einsortieren Abbildungsprozess nur eindeutig, falls Fremdschlüssel-Beziehungen der Datenbank einen Baum darstellen falls Datenbank durch Normalisierung zum Erreichen der ersten Normalform entstanden ist, macht dieses Verfahren den Normalisierungsprozess rückgängig XML, QPath, XQuery: Neue Konzepte für Datenbanken WS 07/08 Martin Kost XML zum Abbilden von DB-Inhalten 9 Abbildungsvorschrift aus Aufgabe 3 XML, QPath, XQuery: Neue Konzepte für Datenbanken WS 07/08 Martin Kost Export mit SQL/XML 10 Transformation der Inhalte nach Abbildungsvorschriften Bestandteile der Transformation Quelle Relationen Tupel Attribute Schlüssel/Fremdschlüssel Hilfsmittel aus SQL/XML XML-Deklaration Dokumentknoten Wurzelknoten Referenz des entsprechenden Schemas Verschachtelung von Elementen XMLGEN/XMLQUERY … XML-Funktionen Select … XQuery-Anfragen Ziel SQL-Anfragen XMLELEMENT … XMLFOREST … … Verschachtelung 1. 2. 3. SELECT … FROM …, (SELECT … FROM … UNION SELECT … FROM …) AS AA …; xmlquery for $l in db2fn:sqlquery('SELECT …; SELECT XMLQUERY('… $VN ' PASSING BY REF Vorname AS "VN“) FROM Personen; XML, QPath, XQuery: Neue Konzepte für Datenbanken WS 07/08 Martin Kost Export mit SQL/XML 11 Bibliothek-Datenbank XML, QPath, XQuery: Neue Konzepte für Datenbanken WS 07/08 Martin Kost Export mit SQL/XML 12 Transformation der Inhalte nach Abbildungsvorschriften SELECT XMLELEMENT(NAME "Person", XMLATTRIBUTES(ID), Name) AS PersonenInXML FROM Personen; XQUERY for $m in db2-fn:sqlquery( 'SELECT XMLELEMENT(name "Name", P.Name) FROM Personen P') where $m/text()='Lam' return <Nachname>{$m/text()}</Nachname>; SELECT XMLQUERY( '<Autor Vorname="{$VN}" Name="{$N}"/>' PASSING BY REF Vorname AS "VN", Name AS "N") AS Autoren FROM Personen AS P; XML, QPath, XQuery: Neue Konzepte für Datenbanken WS 07/08 Martin Kost Export mit SQL/XML 13 Transformation der Inhalte nach Abbildungsvorschriften SELECT XMLQUERY( '<Autor Vorname="{$VN}" Name="{$N}"> <Buch>{$T}</Buch> </Autor>' PASSING BY REF P.Vorname AS "VN", P.Name AS "N", B.Titel AS "T") AS AutorenMitBuchtitel FROM Personen AS P, Autoren AS A, Buecher AS B, ZuweisungBuchAutor AS Z WHERE A.PersonenVerweis = P.ID AND Z.AutorenID = A.ID AND Z.BuchISBN = XML, QPath, XQuery: Neue Konzepte für Datenbanken WS 07/08 Martin Kost B.ISBN; Export mit SQL/XML 14 Transformation aus Beispiel „Laenderinformationen“ XQUERY document {<Laenderinformationen> {attribute xsi:noNamespaceSchemaLocation {'Laenderinformationen.xsd'}} <Laender> {for $l in db2-fn:sqlquery( 'SELECT XMLELEMENT(name "Laender", XMLELEMENT(name "ID", L.ID), XMLELEMENT(name "BevoelkerungsVerweis", L.BevoelkerungsVerweis), XMLELEMENT(name "Hauptstadt", L.Hauptstadt)) FROM Laender AS L') return <Laender_Tupel>{$l/node()}</Laender_Tupel>} </Laender> </Laenderinformationen>}; XML, QPath, XQuery: Neue Konzepte für Datenbanken WS 07/08 Martin Kost Export mit SQL/XML 15 DB2 Umgebung bereitstellen db2–Kommandointerpreter starten CONNECT TO <datenbankname> Z. B. „dbprakU8“ von Amsel oder Star (dort katalogisiert) Verbindung mit Datenbank beenden db2 db2 –t '<SQL-Statement> { ; <SQL-Statement> }‚ Verbindung mit Datenbank herstellen Bash: source~db2lehre/sqllib/db2profile C-Shell: source~db2lehre/sqllib/db2cshrc Windows :db2cmd DISCONNECT <datenbankname> CONNECT RESET db2–Kommandointerpreter beenden quit XML, QPath, XQuery: Neue Konzepte für Datenbanken WS 07/08 Martin Kost Export mit SQL/XML 16 DB2 Ausführen von Skripten db2 -tvf script -d -i > filename t = "terminate each statement with a semi-colon" v = "verbose" f = "the file that follows contains the commands to run" d = "add XML-Declaration, …" i = "pretty print for XML" Dokumentationen http://www.ibm.com/developerworks/db2/library/techarticle/dm-0604saracco/ http://db2.mi.hdm-stuttgart.de/db2help/help/topic/com.ibm.db2.xquery.doc/xqrcon http://publib.boulder.ibm.com/infocenter/dzichelp/v2r2/topic/com.ibm.db29.doc/db http://www.research.ibm.com/journal/sj/452/ozcan.html XML, QPath, XQuery: Neue Konzepte für Datenbanken WS 07/08 Martin Kost Export mit SQL/XML 17 DB2 Zu beachten Datenbank muss UTF-8 als Encoding verwenden Eingabedaten müssen als UTF-8 übergeben werden, sonst Konflikte bei der XML-Serialisierung XMLQUERY Hilfreich bei Fehlern mit Bezeichnung SQL… ist der Aufruf von „db2 ? SQL…“ XMLGEN XML, QPath, XQuery: Neue Konzepte für Datenbanken WS 07/08 Martin Kost Übungen 18 ~vier bis fünf XML-APIs XQuery L XM xie e d -In SQL/XML Im-/Export von XML mit Datenbanken g ru n XML, QPath, XQuery: Neue Konzepte für Datenbanken WS 07/08 Martin Kost 4. Übung - Aufgabenstellung 19 Abbildung von Datenbankinhalten auf XML Transformation des Inhalts der Datenbank Bibliothek mithilfe von SQL/XML in ein XML-Dokument, welches dem in Aufgabe 3 erstelltem XML-Schema entspricht Beantworten der gestellten Fragen mittels SQL/XML XML, QPath, XQuery: Neue Konzepte für Datenbanken WS 07/08 Martin Kost 4. Übung – Aufgabenstellung 20 Bibliothek-Datenbank XML, QPath, XQuery: Neue Konzepte für Datenbanken WS 07/08 Martin Kost Literaturangaben 21 http://www.w3.org http://www.w3.org/TR/2004/REC-xml-20040204/ http://www.w3.org/XML/Schema#dev http://www.w3.org/TR/xmlschema-0/ http://www.edition-w3c.de/TR/2001/REC-xmlschema-0-20010502/ Klettke/Meyer: XML & Datenbanken, dpunkt, 2003 http://www.ibm.com/developerworks/db2/library/techarticle/dm-0604 http://db2.mi.hdm-stuttgart.de/db2help/help/topic/com.ibm.db2.xquery http://publib.boulder.ibm.com/infocenter/dzichelp/v2r2/topic/com.ibm.d http://www.research.ibm.com/journal/sj/452/ozcan.html XML, QPath, XQuery: Neue Konzepte für Datenbanken WS 07/08 Martin Kost