Hochschule Bonn-Rhein-Sieg Fachbereich Informatik Prof. Dr. Peter Becker University of Applied Sciences Klausur — Sommersemester 2012 Objektrelationale Datenbanksysteme 27. September 2012 Bevor Sie mit der Bearbeitung dieser Klausur beginnen, lesen Sie bitte folgende Hinweise. Diese Hinweise sind bei der Bearbeitung zu beachten. 1. Prüfen Sie die Vollständigkeit Ihres Exemplars. Es sollte • dieses Hinweisblatt und • sieben Aufgaben zu Objektrelationalen Datenbanksystemen auf sieben Blättern umfassen. 2. Tragen Sie auf jedem Lösungsblatt oben an den vorgesehenen Stellen Ihren Namen und Ihre Matrikelnummer ein. Blätter ohne diese Angaben werden nicht bewertet. 3. Hinter den Aufgaben ist jeweils hinreichend Platz für die Lösungen. Reicht der Platz dennoch nicht aus, benutzen Sie bitte die Rückseiten, wobei die Zuordnung von Lösungen zu Aufgaben deutlich erkennbar sein muss. 4. Geben Sie dieses Deckblatt zusammen mit den Aufgabenstellungen und den Lösungen sowie alles weitere beschriebene Papier ab. 5. Mit mindestens 40 Punkten haben Sie die Klausur bestanden. 6. Ergebnis (bitte nichts eintragen): 1 (10) 2 (10) 3 (20) 4 (10) 5 (20) 6 (10) Viel Erfolg! 7 (10) P Auf gaben (90) Name: Matrikel: Aufgabe 1 (10 Punkte) (a) Vergleichen Sie kurz die beiden Technologien JDBC und SQLJ. Wo sehen Sie Vorteile, wo Nachteile der jeweiligen Technologien? (b) Was versteht man unter einem Cursor und wozu braucht man einen Cursor im Rahmen der Datenbankprogrammierung. 2 Name: Matrikel: Aufgabe 2 (10 Punkte) Gegeben Sie eine Datenbank mit einer Tabelle, die Nachrichtentexte enthält. Nachrichten Id Datum Text 1 01.04.2011 Kanzlerin in Washington eingetroffen... 2 11.11.2011 Bayern verlieren in Gladbach... 3 07.01.2012 Kältewelle in Osteuropa... ... ... (a) In der Veranstaltung haben Sie die Datenbankkonzepte (skalare) User Defined Function (UDF), Tabellenfunktion und Stored Procedure kennengelernt. Welches dieser Konzepte würden Sie jeweils zur Implementierung der nachfolgenden Funktionalitäten nutzen? – Zu einer Nachricht soll eine Häufigkeitstabelle für die Worte “Kanzlerin”, “Merkel”, “Schuldenkrise” und “Euro” aufgestellt werden. – Wenn eine neue Nachricht in die Tabelle Nachrichten eingefügt wird, soll automatisch eine eindeutige Id ermittelt und das Datum gesetzt werden. – Es soll ermittelt werden, wie häufig ein Wort innerhalb einer Nachricht auftritt. (b) Implementieren Sie eine der Funktionalitäten aus (a) mittels PL/SQL. 3 Name: Matrikel: Aufgabe 3 (20 Punkte) Wir wollen bunte Quadrate in der Ebene verwalten. (a) Definieren Sie mittels PL/SQL einen Objekttyp für Punkte (zweidimensional). (b) Definieren Sie einen Objekttyp für bunte Quadrate (Punkt links unten, Seitenlänge, Farbe). Sehen Sie dabei eine Methode vor, mit der der Flächeninhalt des Quadrates bestimmt werden kann und eine weitere Methode, mit der man überprüfen kann, ob sich zwei Quadrate schneiden. (c) Definieren Sie eine Tabelle zur Verwaltung von bunten Quadraten. (d) Geben Sie exemplarisch eine SQL-Anweisung an, um ein buntes Quadrat in die von Ihnen definierte Tabelle einzufügen. (e) Geben Sie eine SQL-Anfrage an, um alle Paare von grünen Quadraten zu ermitteln, die sich schneiden. 4 Name: Matrikel: Aufgabe 4 (10 Punkte) (a) Nach welchen Kriterien kann man Trigger unterscheiden? Erläutern Sie die Unterschiede! (b) Was versteht man unter einer “transitionalen Integritätsbedingung”? geben Sie ein Beispiel für solch eine Integritätsbedingung an. Mit welcher Triggerart kann man solche Integritätsbedingungen überprüfen? 5 Name: Matrikel: Aufgabe 5 (20 Punkte) (a) Gegeben sei der folgende B-Baum (k = 2): 19 28 44 3 8 12 15 22 24 29 31 37 42 47 51 55 Fügen Sie in diesen Baum nacheinander die Schlüssel 26, 13 und 35 ein und geben Sie die B-Bäume an, die hierdurch entstehen. (b) Gegeben sei der folgende B-Baum (k = 2): 19 28 44 3 8 15 22 24 29 31 37 47 51 55 Löschen Sie aus diesem Baum nacheinander die Schlüssel 15, 44 und 22 und geben Sie die B-Bäume an, die hierdurch entstehen. 6 Name: Matrikel: Aufgabe 6 (10 Punkte) 10 R O5 O4 R2 5 O3 O2 O1 0,0 R1 5 10 R R1 R2 R1 O1 O2 O3 O4 O5 R2 Der oben dargestellte R-Baum (m = 2, M = 3) wird durch die Objekte Objekt Rechteck(x, y, Breite, H öhe) o1 (1, 1, 1, 1) o2 (3, 3, 1, 1) o3 (2, 4, 1, 1) o4 (10, 5, 1, 1) o5 (11, 7, 1, 1) erzeugt. Erläutern Sie den Algorithmus zum Einfügen in einen R-Baum am Beispiel der Objekte o6 mit Rechteck (9, 7, 1, 1) und o7 mit Rechteck (2, 0, 1, 1), die in den oben dargestellten Baum eingefügt werden. Geben Sie die R-Bäume an, die hierdurch entstehen. 7 Name: Matrikel: Aufgabe 7 (10 Punkte) Das Prüfungsamt verwaltet in einer Datenbank Informationen über Studenten und deren bestandene Prüfungen. Student{Matrikelnummer, Name, Vorname} Prüfung{Prüfungsnummer, Matrikelnummer, Note} (a) Gesucht sind alle Studenten mit dem Vornamen Hans, die eine Prüfung mit der Note 1.0 bestanden haben. Geben Sie hierzu eine SQL-Anfrage an (Ausgabespalten: Matrikelnummer, Name und Prüfungsnummer). (b) Geben Sie den nicht-optimierten Operatorbaum zu der Anfrage aus (a) an. (c) Geben Sie einen optimierten Operatorbaum zu der Anfrage aus (a) an. 8