05.03.2013 Aufrufe

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme ...

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme ...

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

Blatt Nr. 5<br />

<strong>TU</strong> <strong>München</strong>, <strong>Fakultät</strong> <strong>für</strong> <strong>Informatik</strong><br />

<strong>Lehrstuhl</strong> <strong>III</strong>: <strong>Datenbanksysteme</strong><br />

Prof. Alfons Kemper, Ph.D.<br />

Übung zu Einsatz und Realisierung von <strong>Datenbanksysteme</strong>n<br />

Sommersemester 2010<br />

Aufgabe 1 (angelehnt an 15.12)<br />

Gegeben sei die nachfolgende KindEltern-Ausprägung <strong>für</strong> den Stammbaum-Ausschnitt der griechischen<br />

Götter und Helden:<br />

KindEltern<br />

Vater Mutter Kind<br />

Zeus Leto Apollon<br />

Zeus Leto Artemis<br />

Kronos Rheia Hades<br />

Zeus Maia Hermes<br />

Koios Phoebe Leto<br />

Atlas Pleone Maia<br />

Kronos Rheia Poseidon<br />

Kronos Rheia Zeus<br />

Formulieren Sie folgende Anfragen in Datalog (und falls Sie kein Datalog-Syste zur<br />

Verfügung haben, testen Sie die Anfragen auch in Prolog):<br />

1. Bestimmen Sie alle Geschwisterpaare.<br />

2. Ermitteln Sie die Paare von Cousins und Cousinen.<br />

3. Ermitteln Sie alle Verwandtschafts-Paare. Überlegen Sie sich eine geeignete Definition<br />

von Verwandtschaft und setzen diese in Datalog um.<br />

4. Bestimmen Sie alle Nachfahren von Kronos. Formulieren Sie die Anfrage auch in SQL,<br />

so dass sie unter IBM DB2 ausführbar ist.<br />

Aufgabe 2 (angelehnt an 15.4) Ullman (1988) führt das folgende Datalog-Programm ein:<br />

sibling(X, Y ) :– parent(X, Z), parent(Y,Z),X = Y.<br />

cousin(X, Y ) :– parent(X, Xp), parent, (Y,Y p), sibling(Xp,Y p).<br />

cousin(X, Y ) :– parent(X, Xp), parent(Y,Y p), cousin(Xp,Y p).<br />

related(X, Y ) :– sibling(X, Y ).<br />

related(X, Y ) :– related(X, Z), parent(Y,Z).<br />

related(X, Y ) :– related(Z, Y ), parent(X, Z).<br />

Nur das Prädikat parent basiert auf der EDB-Relation Parent, in der die Eltern/Kind-<br />

Beziehungen gespeichert sind.<br />

1


• Konstruieren Sie den Abhängigkeitsgraphen <strong>für</strong> dieses Programm.<br />

• Geben Sie die Relationenalgebra-Ausdrücke <strong>für</strong> die Herleitung des nicht-rekursiv definierten<br />

Prädikates sibling an. Gehen sie von der folgenden Ausprägung der Relation<br />

Parent aus (die erste Komponente ist das Kind, die zweite das Elternteil):<br />

{[c, a], [d, a], [d, b], [e, b], [f,c], [g, c], [h, d],<br />

[i, d], [i, e], [f,e], [j, f], [j, h], [k, g], [k,i]}.<br />

• Geben Sie den Algorithmus <strong>für</strong> die naive Auswertung der Prädikate cousin und related<br />

an, und zeigen Sie die schrittweise Auswertung <strong>für</strong> unsere obige Ausprägung von<br />

Parent.<br />

• Machen Sie das Gleiche <strong>für</strong> die semi-naive Auswertung.<br />

• Definieren Sie alle Prädikate (sibling, cousin, related) als Sichten in SQL. Legen Sie<br />

die Relation parent an und fügen die Beispieldaten ein. Sie können zu Testzwecken<br />

die Webschnittstelle http://www-db.in.tum.de/db2face/index.shtml verwenden<br />

– Verwenden Sie aber einen eindeutigen Präfix oder Suffix <strong>für</strong> Ihre Sicht, da ja in<br />

dieser Woche ca. 100 Studierende parallel an dieser Aufgabe arbeiten;-)<br />

Aufgabe 3 (15.8) Definieren Sie das Prädikat sg(X, Y ), das <strong>für</strong> ” same generation“ steht.Zwei<br />

Personen gehören derselben Generation an, wenn Sie mindestens je ein Elternteil haben,<br />

das derselben Generation angehört.<br />

• Zeigen Sie die naive Auswertung von sg <strong>für</strong> die Beispielausprägung von Parent aus<br />

Aufgabe 1.<br />

• Zeigen Sie die semi-naive Auswertung auf, d.h. geben Sie das Auswertungsprogramm<br />

an, und zeigen Sie die schrittweise erzeugten Auswertungs-Deltas.<br />

• Definieren Sie sg in SQL und testen es.<br />

2

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!