Übung-Foliensatz-04

Werbung
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
Herunterladen