Universität Augsburg, Institut für Informatik Prof. Dr. W. Kießling Dr. A. Huhn, M. Endres, T. Preisinger WS 2007/2008 14. Dez. 2007 Übungsblatt 9 Datenbanksysteme I Aufgabe 1: Geschwister Betrachten Sie die folgende Relation, die einen Ausschnitt des Stammbaums der griechischen Götter und Helden zeigt. KindEltern Vater Zeus Zeus Kronos Zeus Koios Atlas Kronos Kronos Mutter Leto Leto Rheia Maia Phoebe Pleone Rheia Rheia Kind Apollon Artemis Hades Hermes Leto Maia Poseidon Zeus Formulieren Sie nachstehende Anfragen in SQL: a) Erstellen Sie obigen Relation auf der Oracledatenbank. b) Bestimmen Sie alle Geschwisterpaare. c) Finden Sie die Nachfahren von Kronos bis zur 2. Generation, d.h. die Enkel. d) Bestimmen Sie alle Nachfahren von Kronos. Aufgabe 2: Algebraische Queryoptimierung An das Informationssystem der Universitätsverwaltung wird folgende Anfrage gestellt: SELECT s.MatrNr, s.Name FROM Vorlesungen v, prüfen p, Studenten s, hören h WHERE v.VorlNr = p.VorlNr AND p.MatrNr = s.MatrNr AND s.MatrNr = h.MatrNr AND h.VorlNr = p.VorlNr AND v.Titel = ’Ethik’ AND p.Note < 3.0; a) Beschreiben Sie in natürlicher Sprache das Ergebnis der Anfrage. b) Geben Sie die kanonische Übersetzung dieser Anfrage in Relationaler Algebra an. Verwenden Sie zur Darstellung des relationalen Ausdrucks die Baumdarstellung. c) Optimieren Sie Ihren relationalen Algebraausdruck. Dokumentieren Sie Ihre Schritte bei der Optimierung. 1 Aufgabe 3: SQL (Klausuraufgabe WS 05/06) Gegeben sei eine Basketball-Datenbank mit der Relation Dallas: Dallas NAME Christie Terry Armstrong Dampier Daniels Diop Harris Nowitzki .. . POSITION Forward Guard Guard Center Guard Center Guard Forward .. . GEWICHT 195 171 182 266 202 282 186 246 .. . LEBENSALTER 35 28 37 30 24 23 22 28 .. . SPIELE 815 485 649 558 118 195 78 524 .. . GEHALT 4500000 7500000 3000000 7700000 5000000 2000000 3000000 12000000 .. . Formulieren Sie folgende Aufgaben in SQL: a) Ermitteln Sie die Namen aller Spieler, deren Lebensalter 30 nicht übersteigt und die mehr als 2 Millionen verdienen. b) Das Gewicht der Spieler ist in amerikanischen Pfund angegeben. Ändern Sie die Werte in der Datenbank so, dass sie als Kilogramm gespeichert sind. Hinweis: 1 Pfund entspricht 0,45 Kilogramm. c) Journalisten sollen keinen Zugriff auf das Gehalt der Spieler haben. Realisieren Sie diese Aufgabe geeignet. Stellen Sie auch sicher, dass die Journalisten keine Änderungen durchführen können. d) Stellen Sie auf geeignete Art und Weise sicher, dass keine Spieler hinzugefügt werden dürfen, wenn dadurch die Summe aller Gehälter 55 Millionen überschreiten würde. e) Gesucht ist für jede der drei Positionen ”Forward”, ”Guard” und ”Center” jeweils der Spieler mit den meisten Spielen (Ausgabe: Name, Spiele). f) Geben Sie eine geordnete Liste aller Spieler aus. Der Spieler mit dem höchsten Gehalt bekommt den Rang 1, der mit dem zweithöchsten Rang 2, usw. Die Ausgabe sollte wie folgt aussehen: Name Nowitzki Dampier .. . Gehalt 12000000 7700000 .. . Rang 1 2 .. . Stellen Sie sicher, dass auch der Rang ausgegeben wird. g) Es gibt eine identisch aufgebaute Relation für die Spieler von Houston. Dallas möchte einen Spieler kaufen. Gesucht sind die Spieler (Name) von Houston, die jünger als 30 Jahre sind. Außerdem sollen die gesuchten Spieler mehr Spiele haben als die durchschnittliche Spielanzahl aller Spieler von Dallas. Das Gehalt des gesuchten Spielers soll zusammen mit dem Gesamtgehalt aller Spieler von Dallas nicht das Budget von 55 Millionen überschreiten. 2