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 ...
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