Übung Datenbanksysteme I Transaktionen, Selektivität und XML. Thorsten Papenbrock



Ähnliche Dokumente
Übung Datenbanksysteme I Transaktionen, Selektivität, XML

Universität Augsburg, Institut für Informatik WS 2006/2007 Dr. W.-T. Balke 27. Nov M. Endres, A. Huhn, T. Preisinger Lösungsblatt 5

mit Musterlösungen Prof. Dr. Gerd Stumme, Dipl.-Inform. Christoph Schmitz 11. Juni 2007

Transaktionsverwaltung

DBS ::: SERIE 5. Join Right Semi- Join Left Semi-Join Projektion Selektion Fremdschlüssel. Kreuzprodukt

Software-Engineering und Datenbanken

1 Transaktionen in SQL. 2 Was ist eine Transaktion. 3 Eigenschaften einer Transaktion. PostgreSQL

7. Übung - Datenbanken

Übungen zur Vorlesung. Datenbanken I

Synchronisierung von Transaktionen ohne Sperren. Annahme: Es gibt eine Methode, zu erkennen, wann eine Transaktion die serielle Ordnung verletzt.

Mengenvergleiche: Alle Konten außer das, mit dem größten Saldo.

Das SQL-Schlüsselwort ALL entspricht dem Allquantor der Prädikatenlogik

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.

Suche schlecht beschriftete Bilder mit Eigenen Abfragen

Transaktionsverwaltung

Informatik 12 Datenbanken SQL-Einführung

SQL für Trolle. mag.e. Dienstag, Qt-Seminar

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

1. Adressen für den Serienversand (Briefe Katalogdruck Werbung/Anfrage ) auswählen. Die Auswahl kann gespeichert werden.

WinWerk. Prozess 4 Akonto. KMU Ratgeber AG. Inhaltsverzeichnis. Im Ifang Effretikon

HTML5. Wie funktioniert HTML5? Tags: Attribute:

Zeichen bei Zahlen entschlüsseln

Mit dem Tool Stundenverwaltung von Hanno Kniebel erhalten Sie die Möglichkeit zur effizienten Verwaltung von Montagezeiten Ihrer Mitarbeiter.

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D.

Professionelle Seminare im Bereich MS-Office

Softwaretechnologie -Wintersemester 2013/ Dr. Günter Kniesel

Urs Meier Art der Info Technical Info (Februar 2002) Aus unserer Projekterfahrung und Forschung

Dynamisches SQL. Folien zum Datenbankpraktikum Wintersemester 2009/10 LMU München

e-books aus der EBL-Datenbank

SQL SQL. SQL = Structured Query Language (SEQUEL) IBM San Jose Research Laboratory SYSTEM R. Grundlagen der Datenbanksysteme I

SQL: statische Integrität

Mai Hauptseminar: Nichtrelationale Datenbanken Historisch-Kulturwissenschaftliche Informationsverarbeitung Universität zu Köln

5.3 Datenänderung/-zugriff mit SQL (DML)

Bei der Anlage von Pauschalen ist folgendes zu beachten!!!!!!!!

5.2 Neue Projekte erstellen

Inventur. Bemerkung. / Inventur

Kapitel 4 Die Datenbank Kuchenbestellung Seite 1

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Fachhochschule Deggendorf Platzziffer:...

WS 2009/10. Diskrete Strukturen

Wichtig ist die Originalsatzung. Nur was in der Originalsatzung steht, gilt. Denn nur die Originalsatzung wurde vom Gericht geprüft.

Synchronisation in Datenbanksystemen in a nutshell

Oracle: Abstrakte Datentypen:

3 Richtlinienbasierte Verwaltung und Multi-Server- Administration

Beschreibung Regeln z.b. Abwesenheitsmeldung und Weiterleitung

AZK 1- Freistil. Der Dialog "Arbeitszeitkonten" Grundsätzliches zum Dialog "Arbeitszeitkonten"

Bitte geben Sie hier den Benutzer cubusadmin und das gleichnamige Passwort ein.

Durchführung der Datenübernahme nach Reisekosten 2011

Datenbanksysteme 2 Frühjahr-/Sommersemester Mai 2014

Datenexport aus JS - Software

Abamsoft Finos im Zusammenspiel mit shop to date von DATA BECKER

Suchmaschinen. Universität Augsburg, Institut für Informatik SS 2014 Prof. Dr. W. Kießling 23. Mai 2014 Dr. M. Endres, F. Wenzel Lösungsblatt 6

Datenbanken: Transaktionskonzept und Concurrency Control

Fachdidaktik der Informatik Jörg Depner, Kathrin Gaißer

Anleitung Postfachsystem Inhalt

Datenbanken. Sommersemester 2010 Probeklausur

Deinstallationsanleitung

Nach der Installation der Multi-User-Version von CUBUS können Sie mit dem Administrator- Tool Benutzergruppen und Benutzer einrichten.

Webalizer HOWTO. Stand:

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

Anleitung: Einrichtung der Fritz!Box 7272 mit VoIP Telefonanschluss

7. Bewässerung: Mehrmals pro Woche

Übersicht... 2 Dateiupload... 3 Administratorfunktionen... 4

Was meinen die Leute eigentlich mit: Grexit?

Lehrer: Einschreibemethoden

Kapitel 3 Bilder farblich verändern - Arbeiten mit Objekten

Beispiel 1: Filmdatenbank

Nachtrag: Farben. Farbblindheit. (Light und Bartlein 2004)

Softwaretechnologie -Wintersemester 2011/ Dr. Günter Kniesel

schooltas offline Modus mit der Google Chrome App

Tag 4 Inhaltsverzeichnis

Anleitung. Schritt für Schritt: iphone und ipad. Richten Sie Ihr -Konto mit Ihrem iphone oder ipad Schritt für Schritt ein.

ALF-BanCo - Chipkarte einrichten in 3 Schritten

Handbuch ECDL 2003 Basic Modul 5: Datenbank Grundlagen von relationalen Datenbanken

Anwendungsbeispiele Buchhaltung

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

Klausur Interoperabilität

Microsoft PowerPoint 2013 Folien gemeinsam nutzen

SQL - Übungen Bearbeitung der Datenbank Personal (1)

erster Hauptsatz der Thermodynamik,

Anleitung zur Erstellung von Serienbriefen (Word 2003) unter Berücksichtigung von Titeln (wie Dr., Dr. med. usw.)

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER

Stellvertretenden Genehmiger verwalten. Tipps & Tricks

Aufruf der Buchungssystems über die Homepage des TC-Bamberg

Kurzanleitung fu r Clubbeauftragte zur Pflege der Mitgliederdaten im Mitgliederbereich

Softwaretechnologie Wintersemester 2009/2010 Dr. Günter Kniesel, Pascal Bihler

Umzug der abfallwirtschaftlichen Nummern /Kündigung

IV. Datenbankmanagement

I Serverkalender in Thunderbird einrichten

4. Jeder Knoten hat höchstens zwei Kinder, ein linkes und ein rechtes.

Handbuch. timecard Connector Version: REINER SCT Kartengeräte GmbH & Co. KG Goethestr Furtwangen

Anlegen eines Facebook-Profils (Privat-Profil) für BuchhändlerInnen und andere -- Stand Mai 2011

Stand: Adressnummern ändern Modulbeschreibung

Labor 3 - Datenbank mit MySQL

Unterabfragen (Subqueries)

Eva Douma: Die Vorteile und Nachteile der Ökonomisierung in der Sozialen Arbeit

Tipps und Tricks zu Netop Vision und Vision Pro

OP-LOG

Anforderungen an die HIS

Lokales Netzwerk Wie kann ich lokal installierte Drucker im Netzwerk für andere Nutzer freigeben? Frage:

Transkript:

Übung Datenbanksysteme I Transaktionen, Selektivität und XML Thorsten Papenbrock

Übersicht: Übungsthemen 2 Transaktionen Selektivität XML Thorsten Papenbrock Übung Datenbanksysteme I JDBC

Transaktionen: Wiederholung 3 Eine Transaktion ist eine Folge von Operationen (Aktionen), die die Datenbank von einem konsistenten Zustand in einen konsistenten (eventuell veränderten) Zustand überführt, wobei das ACID-Prinzip eingehalten werden muss. Atomicity (Atomarität) Transaktion wird entweder ganz oder gar nicht ausgeführt. Consistency (Konsistenz) Datenbank ist vor Beginn und nach Beendigung einer Transaktion jeweils in einem konsistenten Zustand. Isolation (Isolation) Transaktion, die auf einer Datenbank arbeitet, sollte den Eindruck haben, dass sie allein auf dieser Datenbank arbeitet. Durability (Dauerhaftigkeit) Nach erfolgreichem Abschluss einer Transaktion muss das Ergebnis dieser Transaktion dauerhaft in der Datenbank gespeichert werden.

Transaktionen: Wiederholung 4 Schedule: Ablaufplan für Transaktionen, bestehend aus einer Abfolge von Transaktionsoperationen Serieller Schedule: Schedule, in dem Transaktionen vollständig hintereinander ausgeführt werden Serialisierbarer Schedule: Schedule, dessen Effekt identisch zum Effekt eines (beliebig gewählten!) seriellen Schedules ist Konfliktäquivalente Schedules: Zwei Schedules, bei denen die Reihenfolge aller konfligierender Aktionen gleich ist Konfliktserialisierbarer Schedule: Schedule, der konfliktäquivalent zu einem seriellen Schedule ist konfliktserialisierbar serialisierbar

Transaktionen: Wiederholung 5 Legaler Schedule: Schedule, der kein gesperrtes Objekt erneut sperrt Konsistente Transaktion: Transaktion, die Aktionen nur auf korrekt gesperrten Objekten ausführt und gesperrte Objekte nach der Verwendung wieder frei gibt 2-Phase-Locking: Alle Sperren einer Transaktion erfolgen vor der ersten Freigabe einer Sperre; ermöglicht Konfliktserialisierbarkeit

Aufgabe: Serialisierbarkeit 6 1. Zeige, dass die beiden seriellen Schedules T 1,T 2 und T 2,T 1 dasselbe Ergebnis liefern (also äquivalent sind). 2. Gib einen nicht-seriellen, aber serialisierbaren Schedule an. 3. Gib einen nicht-seriellen und nicht-serialisierbaren Schedule an T 1 T 2 read(a,a 1 ) read(b,b 2 ) a 1 := a 1 + 2 b 2 := b 2 * 2 write(a,a 1 ) write(b,b 2 ) read(b,b 1 ) read(a,a 2 ) b 1 := b 1 * 3 a 2 := a 2 + 3 write(b,b 1 ) write(a,a 2 )

Lösung: Serialisierbarkeit 7 1. Zeige, dass die beiden seriellen Schedules T 1,T 2 und T 2,T 1 dasselbe Ergebnis liefern (also äquivalent sind). Ergebnis(T 1,T 2 ): A = (A+2)+3 B = (B*3)*2 2. Gib einen nicht-seriellen, aber seriali-sierbaren Schedule an. Ergebnis(T 2,T 1 ): A = (A+3)+2 B = (B*2)*3 3. Gib einen nicht-seriellen und nicht-serialisierbaren Schedule an Ergebnisse sind gleich, da + und * kommutativ und assoziativ sind!

Lösung: Serialisierbarkeit 8 1. Zeige, dass die beiden seriellen Schedules T 1,T 2 und T 2,T 1 dasselbe Ergebnis liefern (also äquivalent sind). T 1 T 2 read(a,a 1 ) read(b,b 2 ) b 2 := b 2 * 2 2. Gib einen nicht-seriellen, aber seriali-sierbaren Schedule an. 3. Gib einen nicht-seriellen und nicht-serialisierbaren Schedule an a 1 := a 1 + 2 write(a,a 1 ) read(b,b 1 ) b 1 := b 1 * 3 write(b,b 1 ) write(b,b 2 ) read(a,a 2 ) a 2 := a 2 + 3 write(a,a 2 )

Lösung: Serialisierbarkeit 9 1. Zeige, dass die beiden seriellen Schedules T 1,T 2 und T 2,T 1 dasselbe Ergebnis liefern (also äquivalent sind). T 1 T 2 read(a,a 1 ) read(b,b 2 ) b 2 := b 2 * 2 2. Gib einen nicht-seriellen, aber seriali-sierbaren Schedule an. 3. Gib einen nicht-seriellen und nicht-serialisierbaren Schedule an a 1 := a 1 + 2 write(a,a 1 ) read(b,b 1 ) b 1 := b 1 * 3 write(b,b 1 ) write(b,b 2 ) read(a,a 2 ) a 2 := a 2 + 3 write(a,a 2 )

Aufgabe: Konfliktserialisierbarkeit 10 Gegeben sind die folgenden drei Schedules: 1. r 1 (A) r 2 (A) r 3 (B) w 1 (A) r 2 (C) r 2 (B) w 2 (B) w 1 (C) 2. r 1 (A) w 1 (B) r 2 (B) w 2 (C) r 3 (C) w 3 (A) 3. w 3 (A) r 1 (A) w 1 (B) r 2 (B) w 2 (C) r 3 (C) Erstelle für jeden Schedule den zugehörigen Konfliktgraph Bestimme für jeden Schedule, ob dieser konfliktserialisierbar ist falls ja, nenne einen konfliktäquivalenten seriellen Schedule falls nein, nenne alle nicht-serialisierbaren, konfligierenden Aktionskombinationen

Lösung: Konfliktserialisierbarkeit 11 Gegeben sind die folgenden drei Schedules: 1. r 1 (A) r 2 (A) r 3 (B) w 1 (A) r 2 (C) r 2 (B) w 2 (B) w 1 (C) T 1 T 2 T 3 äquivalenter, serieller Schedule: T 3,T 2,T 1 2. r 1 (A) w 1 (B) r 2 (B) w 2 (C) r 3 (C) w 3 (A) T 1 T 2 T 3 äquivalenter, serieller Schedule: T 1,T 2,T 3 3. w 3 (A) r 1 (A) w 1 (B) r 2 (B) w 2 (C) r 3 (C) T 1 T 2 T 3 wegen w 3 (A) r 1 (A) muss T 3,T 1 gelten wegen w 1 (B) r 2 (B) muss T 1,T 2 gelten wegen w 2 (C) r 3 (C) muss T 2,T 3 gelten

Aufgabe: Scheduler 1 12 Gegeben die folgenden beiden Transaktionen: T 1 : l 1 (A) r 1 (A) w 1 (A) l 1 (B) u 1 (A) r 1 (B) w 1 (B) u 1 (B) T 2 : l 2 (B) r 2 (B) w 2 (B) l 2 (A) u 2 (B) r 2 (A) w 2 (A) u 2 (A) Sind T 1 und T 2 konsistent? Sind T 1 und T 2 2PL-konform? Gegeben der folgende Schedule der beiden Transaktionen: S: l 1 (A) r 1 (A) l 2 (B) r 2 (B) w 1 (A) w 2 (B) l 1 (B) l 2 (A) u 1 (A) u 2 (B) r 2 (A) r 1 (B) w 1 (B) w 2 (A) u 2 (A) u 1 (B) Ist S legal? Ist S (ohne Locks) konfliktserialisierbar? Beschreibe den Ablauf im Scheduler! Ja: Vor jedem Zugriff Lock, danach Unlock Ja: Kein weiterer Lock nach erstem Unlock Nein: T 1 und T 2 sperren gleichzeitig A und B Nein: T 1 T 2 bilden einen Zyklus

Lösung: Scheduler 1 13 S: l 1 (A) r 1 (A) l 2 (B) r 2 (B) w 1 (A) w 2 (B) l 1 (B) l 2 (A) u 1 (A) u 2 (B) r 2 (A) r 1 (B) w 1 (B) w 2 (A) u 2 (A) u 1 (B) T 1 T 2 l 1 (A) r 1 (A) l 2 (B) r 2 (B) w 1 (A) w 2 (B) l 1 (B) l 2 (A) Deadlock! Muss vom Scheduler erkannt und aufgelöst werden durch z.b. Rollback von T 2.

Aufgabe: Scheduler 2 14 Gegeben der folgende Schedule: S: r 1 (A) r 2 (B) r 3 (C) r 2 (C) r 1 (B) w 3 (D) Aufgaben: 1. Prüfe, ob S konfliktserialisierbar ist. Führe die Prüfung mittels graphbasiertem Test durch. Gib einen seriellen, konfliktequivalenten Schedule bzw. die nicht-serialisierbare, konfligierende Aktionskombination an. 2. Ergänze den Schedule um Lock- und Unlock-Operationen so dass alle enthaltenen Transaktionen konsistent und 2PL-konform sind. 3. Erstelle den tabellarischen Ablaufplan der Transaktionsausführung eines DBMS-Schedulers mit den Locks aus 2).

Lösung: Scheduler 2 15 Gegeben der folgende Schedule: S: r 1 (A) r 2 (B) r 3 (C) r 2 (C) r 1 (B) w 3 (D) 1. Prüfe, ob S konfliktserialisierbar ist. Führe die Prüfung mittels graphbasiertem Test durch. T 1 T 2 T 3 keine Zyklen, daher konfliktserialisierbar Gib einen seriellen, konfliktequivalenten Schedule bzw. die nichtserialisierbare, konfligierende Aktionskombination an. T 1, T 2, T 3 ist serieller, konfliktequivalenter Schedule

Lösung: Scheduler 2 16 Gegeben der folgende Schedule: S: r 1 (A) r 2 (B) r 3 (C) r 2 (C) r 1 (B) w 3 (D) 2. Ergänze den Schedule um Lock- und Unlock-Operationen so dass alle enthaltenen Transaktionen konsistent und 2PL-konform sind. S : l 1 (A) r 1 (A) l 2 (B) r 2 (B) l 3 (C) r 3 (C) l 2 (C) r 2 (C) u 2 (B) u 2 (C) l 1 (B) r 1 (B) u 1 (A) u 1 (B) l 3 (D) w 3 (D) u 3 (C) u 3 (D) 2PL verletzt? Nein, weil die 2PL-Bedingung nur für Transaktionen gilt!

Lösung: Scheduler 2 17 Gegeben der folgende Schedule: S: r 1 (A) r 2 (B) r 3 (C) r 2 (C) r 1 (B) w 3 (D) 2. Ergänze den Schedule um Lock- und Unlock-Operationen so dass alle enthaltenen Transaktionen konsistent und 2PL-konform sind. S : l 1 (A) r 1 (A) u 1 (A) l 2 (B) r 2 (B) u 2 (B) l 3 (C) r 3 (C) u 3 (C) l 2 (C) r 2 (C) u 2 (C) l 1 (B) r 1 (B) u 1 (B) l 3 (D) w 3 (D) u 3 (D) Was ist das Problem dieses Schedules? Schedule ist nicht 2PL-konform und daher nicht unbedingt konfliktserialisierbar!

Lösung: Scheduler 2 18 Gegeben der folgende Schedule: S : l 1 (A) r 1 (A) l 2 (B) r 2 (B) l 3 (C) r 3 (C) l 2 (C) r 2 (C) u 2 (B) u 2 (C) l 1 (B) r 1 (B) u 1 (A) u 1 (B) l 3 (D) w 3 (D) u 3 (C) u 3 (D) 3. Erstelle den tabellarischen Ablaufplan der Transaktionsausführung eines DBMS-Schedulers. T 1 T 2 T 3 l 1 (A) r 1 (A) l 1 (B) l 1 (B) r 1 (B) u 1 (A) u 1 (B) l 2 (B) r 2 (B) l 2 (C) l 2 (C) r 2 (C) u 2 (B) u 2 (C) l 3 (C) r 3 (C) l 3 (D) w 3 (D) u 3 (C) u 3 (D)

Übersicht: Übungsthemen 19 Transaktionen Selektivität XML

Selektivität: Wiederholung 20 Selektivität schätzt Anzahl der qualifizierenden Tupel relativ zur Gesamtanzahl der Tupel in einer Relation. Projektion: sf = R / R = 1 Selektion: sf = σ C (R) / R Selektion mit m verschiedenen Werten: sf = ( R / m) / R = 1/m Equi-Join zwischen R und S über Fremdschlüssel in S: sf = R S / ( R x S ) = S / ( R S ) = 1/ R

Aufgabe: Ergebniskardinalität schätzen 21 Gegeben die folgenden Relationen, Tupel-Verteilungen und Anfrage: Zulieferer (zid, name, adresse) 10 Tupel Teile (tid, bezeichnung, farbe) 1000 Tupel Katalog (zid, tid, kosten) 4000 Tupel farbe in {schwarz, rot, blau, weiß} gleichverteilt kosten in [1,100] gleichverteilt farbe= schwarz farbe= blau ((Zulieferer kosten 25 (Katalog)) Teile) Konstruiere den zugehörigen Parsbaum und annotiere an jeder Kante die zu erwartenden Kardinalitäten!

Lösung: Ergebniskardinalität schätzen 22 Zulieferer (zid, name, adresse) 10 Tupel Teile (tid, bezeichnung, farbe) 1000 Tupel Katalog (zid, tid, kosten) 4000 Tupel farbe in {schwarz, rot, blau, weiß} gleichverteilt kosten in [1,100] gleichverteilt 500 farbe= schwarz farbe= blau 1000 1000 1000 1000 kosten 25 10 4000 Katalog Zulieferer Teile

Übersicht: Übungsthemen 23 Transaktionen Selektivität XML

XML: CREATE & INSERT 24 CREATE TABLE CUSTOMER ( cid INTEGER, info XML ); INSERT INTO CUSTOMER (cid, info) VALUES (1000, <customerinfo cid= 1000 > <name>kathy Smith</name> <addr country="canada"> <street>5 Rosewood</street> <city>toronto</city> <prov-state>ontario</prov-state> <pcode-zip>m6w 1E6</pcode-zip> </addr> <phone type="work">416-555-1358</phone> </customerinfo> );

XML: Relationaler Zugriff (XMLEXISTS) 25 Lese den Kunden mit ID 1000 aus der Datenbank SELECT * XML-Inhalt des Attributs INFO übergeben als Baum mit dem Wurzelnamen d FROM CUSTOMER WHERE XMLEXISTS ( $d/customerinfo[@cid=1000]' passing INFO as "d"); Ergebnis ist eine Menge von customerinfo -Knoten, die die Bedingung erfüllen. => {<customerinfo>[...]} {} Ergebnis ist eine Menge von Boolschen Werten, die die Bedingung erfüllen. => {True} {False} SELECT * FROM CUSTOMER WHERE XMLEXISTS ( $d/customerinfo/@cid=1000' passing INFO as "d"); XMLEXISTS(X) = True, falls X > 0 False, sonst XMLEXISTS-Vergleichselement beim Abfragen von XML-Daten http://publib.boulder.ibm.com/ infocenter/db2luw/v9/index.jsp? topic=%2fcom.ibm.db2.udb.apdv. embed.doc%2fdoc%2fc0023906.htm

XML: Relationaler Zugriff (XMLQUERY) 26 Lese die ID, den Namen und die Nummer von Kathy Smith XMLQUERY gibt den Wert des Ausdrucks zurück SELECT Cid, XMLQUERY('$d/customerinfo/name/text()' passing INFO as d") AS Name, XMLQUERY('$d/customerinfo/phone/text()' passing INFO as d") AS Phone FROM CUSTOMER WHERE XMLEXISTS ( $d/customerinfo/name[text()= Kathy Smith ] passing INFO as "d ); text() gibt den Text-Inhalt des Knotens customerinfo/name zurück XMLQuery-Funktion zur Abfrage skalarer Wert aus XML-Strukturen http://publib.boulder.ibm.com/ infocenter/db2luw/v9r7/index.jsp? topic=%2fcom.ibm.db2.luw.sql. ref.doc%2fdoc%2fr0022193.html

XML: Relationaler Zugriff (contains) 27 Lese alle Kunden aus der Datenbank, deren Nummer 555 enthält SELECT * FROM CUSTOMER WHERE XMLEXISTS ( ); $d/customerinfo/phone[contains(., 555 )] passing INFO as "d Lese alle Kunden aus der Datenbank, die mehr als 2 Nummern haben SELECT * FROM CUSTOMER WHERE XMLEXISTS ( ); contains() prüft hier, ob 555 enthalten ist. count() zählt hier, wie viele phone -Kindknoten eine customerinfo hat $d/customerinfo/[count(phone)>2] passing INFO as "d Funktion contains zur Prüfung von Teilstrings http://publib.boulder.ibm.com/ infocenter/db2luw/v9r5/index.jsp? topic=%2fcom.ibm.db2.luw.admin. ts.doc%2fdoc%2fxqrfnftcontains.html Funktion count zum Zählen von Kindknoten http://publib.boulder.ibm.com/ infocenter/db2luw/v9/index.jsp? topic=%2fcom.ibm.db2.xquery. doc%2fdoc%2fxqrfncnt.htm

XML: Relationale Daten in XML 28 SELECT m.mid, xmlelement(name "movie", xmlelement(name "mid", m.mid), xmlelement(name "title", m.title), xmlelement(name "year", m.year), xmlelement(name "actors", xmlagg( )) ) AS info xmlelement(name "actor", xmlelement(name "name", a.name)) FROM movie m JOIN (SELECT * FROM actor UNION SELECT * FROM actress) a ON m.mid = a.movie_id GROUP BY m.mid, m.title, m.year; Anfrage

XML: Relationale Daten in XML 29 ( Ghosts of the Past (1991) (TV), <movie> <mid>ghosts of the Past (1991) (TV)</mid> <title>ghosts of the Past</title> <year>1991</year> <actors> <actor> <name>davis, Carl (IV)</name> </actor> <actor> <name>mccartney, Paul</name> </actor> </actors> </movie> ) Ergebnis