21
XML, QPATH, XQUERY: NEUE KONZEPTE FÜR DATENBANKEN 4. Übung SQL/XML

XML, QPATH, XQUERY: NEUE KONZEPTE FÜR DATENBANKEN€¦ · db2 –t ' { ; } ‚ Verbindung mit Datenbank herstellen CONNECT TO

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: XML, QPATH, XQUERY: NEUE KONZEPTE FÜR DATENBANKEN€¦ · db2 –t ' { ;  } ‚ Verbindung mit Datenbank herstellen CONNECT TO

XML, QPATH, XQUERY: NEUE KONZEPTE FÜR DATENBANKEN4. ÜbungSQL/XML

Page 2: XML, QPATH, XQUERY: NEUE KONZEPTE FÜR DATENBANKEN€¦ · db2 –t ' { ;  } ‚ Verbindung mit Datenbank herstellen CONNECT TO

Agenda

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

2

Page 3: XML, QPATH, XQUERY: NEUE KONZEPTE FÜR DATENBANKEN€¦ · db2 –t ' { ;  } ‚ Verbindung mit Datenbank herstellen CONNECT TO

XML zum Abbilden von DB-InhaltenMotivation

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

3

Page 4: XML, QPATH, XQUERY: NEUE KONZEPTE FÜR DATENBANKEN€¦ · db2 –t ' { ;  } ‚ Verbindung mit Datenbank herstellen CONNECT TO

XML zum Abbilden von DB-InhaltenMethoden 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 XML-Dokument wiederfinden.

Grundprinzip Darstellung von Relationen, Tupeln und Attributen durch XML-

Elemente 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

4

Page 5: XML, QPATH, XQUERY: NEUE KONZEPTE FÜR DATENBANKEN€¦ · db2 –t ' { ;  } ‚ Verbindung mit Datenbank herstellen CONNECT TO

XML zum Abbilden von DB-InhaltenBeispiel – Laender

XML, QPath, XQuery: Neue Konzepte für Datenbanken WS 07/08 Martin Kost

5

Page 6: XML, QPATH, XQUERY: NEUE KONZEPTE FÜR DATENBANKEN€¦ · db2 –t ' { ;  } ‚ Verbindung mit Datenbank herstellen CONNECT TO

XML zum Abbilden von DB-InhaltenAbbildungsvorschrift 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>

6

XML, QPath, XQuery: Neue Konzepte für Datenbanken WS 07/08 Martin Kost

<Laenderinformationen><Laender>

<Laender_Tupel><ID>GER</ID><Bevoelkerungsverweis>

0</Bevoelkerungsverweis>

<Hauptstadt>Berlin</Hauptstadt>

Page 7: XML, QPATH, XQUERY: NEUE KONZEPTE FÜR DATENBANKEN€¦ · db2 –t ' { ;  } ‚ Verbindung mit Datenbank herstellen CONNECT TO

XML zum Abbilden von DB-InhaltenAbbildungsvorschrift 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

7

Page 8: XML, QPATH, XQUERY: NEUE KONZEPTE FÜR DATENBANKEN€¦ · db2 –t ' { ;  } ‚ Verbindung mit Datenbank herstellen CONNECT TO

XML zum Abbilden von DB-InhaltenAbbildungsvorschrift 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

8

Page 9: XML, QPATH, XQUERY: NEUE KONZEPTE FÜR DATENBANKEN€¦ · db2 –t ' { ;  } ‚ Verbindung mit Datenbank herstellen CONNECT TO

XML zum Abbilden von DB-InhaltenAbbildungsvorschrift aus Aufgabe 3

XML, QPath, XQuery: Neue Konzepte für Datenbanken WS 07/08 Martin Kost

9

Page 10: XML, QPATH, XQUERY: NEUE KONZEPTE FÜR DATENBANKEN€¦ · db2 –t ' { ;  } ‚ Verbindung mit Datenbank herstellen CONNECT TO

Export mit SQL/XMLTransformation der Inhalte nach Abbildungsvorschriften

Bestandteile der Transformation Quelle

Relationen Tupel Attribute Schlüssel/Fremdschlüssel

Ziel XML-Deklaration Dokumentknoten Wurzelknoten Referenz des entsprechenden

Schemas Verschachtelung von Elementen

Hilfsmittel aus SQL/XML SQL-Anfragen

Select … XQuery-Anfragen

XMLGEN/XMLQUERY … XML-Funktionen

XMLELEMENT … XMLFOREST … …

Verschachtelung1. SELECT … FROM …, (SELECT …

FROM … UNION SELECT … FROM …) AS AA …;

2. xmlquery for $l in db2-fn:sqlquery('SELECT …;

3. SELECT XMLQUERY('… $VN ' PASSING BY REF Vorname AS "VN“) FROM Personen;

10

XML, QPath, XQuery: Neue Konzepte für Datenbanken WS 07/08 Martin Kost

Page 11: XML, QPATH, XQUERY: NEUE KONZEPTE FÜR DATENBANKEN€¦ · db2 –t ' { ;  } ‚ Verbindung mit Datenbank herstellen CONNECT TO

Export mit SQL/XMLBibliothek-Datenbank

XML, QPath, XQuery: Neue Konzepte für Datenbanken WS 07/08 Martin Kost

11

Page 12: XML, QPATH, XQUERY: NEUE KONZEPTE FÜR DATENBANKEN€¦ · db2 –t ' { ;  } ‚ Verbindung mit Datenbank herstellen CONNECT TO

Export mit SQL/XMLTransformation 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

12

Page 13: XML, QPATH, XQUERY: NEUE KONZEPTE FÜR DATENBANKEN€¦ · db2 –t ' { ;  } ‚ Verbindung mit Datenbank herstellen CONNECT TO

Export mit SQL/XMLTransformation 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 = B.ISBN;

XML, QPath, XQuery: Neue Konzepte für Datenbanken WS 07/08 Martin Kost

13

Page 14: XML, QPATH, XQUERY: NEUE KONZEPTE FÜR DATENBANKEN€¦ · db2 –t ' { ;  } ‚ Verbindung mit Datenbank herstellen CONNECT TO

Export mit SQL/XMLTransformation 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

14

Page 15: XML, QPATH, XQUERY: NEUE KONZEPTE FÜR DATENBANKEN€¦ · db2 –t ' { ;  } ‚ Verbindung mit Datenbank herstellen CONNECT TO

Export mit SQL/XML DB2

Umgebung bereitstellen Bash: source~db2lehre/sqllib/db2profile C-Shell: source~db2lehre/sqllib/db2cshrc Windows :db2cmd

db2–Kommandointerpreter starten db2 db2 –t '<SQL-Statement> { ; <SQL-Statement> }‚

Verbindung mit Datenbank herstellen CONNECT TO <datenbankname> Z. B. „dbprakU8“ von Amsel oder Star (dort katalogisiert)

Verbindung mit Datenbank beenden DISCONNECT <datenbankname> CONNECT RESET

db2–Kommandointerpreter beenden quit

XML, QPath, XQuery: Neue Konzepte für Datenbanken WS 07/08 Martin Kost

15

Page 16: XML, QPATH, XQUERY: NEUE KONZEPTE FÜR DATENBANKEN€¦ · db2 –t ' { ;  } ‚ Verbindung mit Datenbank herstellen CONNECT TO

Export mit SQL/XML 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/xqrcontainer.html http://publib.boulder.ibm.com/infocenter/dzichelp/v2r2/topic/com.ibm.db29.doc/db2z_xml.htm http://www.research.ibm.com/journal/sj/452/ozcan.html

XML, QPath, XQuery: Neue Konzepte für Datenbanken WS 07/08 Martin Kost

16

Page 17: XML, QPATH, XQUERY: NEUE KONZEPTE FÜR DATENBANKEN€¦ · db2 –t ' { ;  } ‚ Verbindung mit Datenbank herstellen CONNECT TO

Export mit SQL/XML DB2

Zu beachten Datenbank muss UTF-8 als Encoding verwenden

Eingabedaten müssen als UTF-8 übergeben werden, sonst Konflikte bei der XML-Serialisierung

XMLGEN XMLQUERY Hilfreich bei Fehlern mit Bezeichnung SQL… ist der

Aufruf von „db2 ? SQL…“

XML, QPath, XQuery: Neue Konzepte für Datenbanken WS 07/08 Martin Kost

17

Page 18: XML, QPATH, XQUERY: NEUE KONZEPTE FÜR DATENBANKEN€¦ · db2 –t ' { ;  } ‚ Verbindung mit Datenbank herstellen CONNECT TO

Übungen

XML, QPath, XQuery: Neue Konzepte für Datenbanken WS 07/08 Martin Kost

18

~vier bis fünf

XML-APIs

XQuery Im-/Export von XML mit Datenbanken

XML-Indexi

erung

SQL/XML

Page 19: XML, QPATH, XQUERY: NEUE KONZEPTE FÜR DATENBANKEN€¦ · db2 –t ' { ;  } ‚ Verbindung mit Datenbank herstellen CONNECT TO

4. Übung - Aufgabenstellung

XML, QPath, XQuery: Neue Konzepte für Datenbanken WS 07/08 Martin Kost

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

Page 20: XML, QPATH, XQUERY: NEUE KONZEPTE FÜR DATENBANKEN€¦ · db2 –t ' { ;  } ‚ Verbindung mit Datenbank herstellen CONNECT TO

4. Übung – AufgabenstellungBibliothek-Datenbank

XML, QPath, XQuery: Neue Konzepte für Datenbanken WS 07/08 Martin Kost

20

Page 21: XML, QPATH, XQUERY: NEUE KONZEPTE FÜR DATENBANKEN€¦ · db2 –t ' { ;  } ‚ Verbindung mit Datenbank herstellen CONNECT TO

Literaturangaben

XML, QPath, XQuery: Neue Konzepte für Datenbanken WS 07/08 Martin Kost

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-0604saracco/ http://db2.mi.hdm-stuttgart.de/db2help/help/topic/com.ibm.db2.xquery.doc/xqrcontainer.html http://publib.boulder.ibm.com/infocenter/dzichelp/v2r2/topic/com.ibm.db29.doc/db2z_xml.htm http://www.research.ibm.com/journal/sj/452/ozcan.html