Universität Augsburg, Institut für Informatik Sommersemester 2015 Prof. Dr. W. Kießling 10. April 2015 F. Wenzel, L.Rudenko Datenbanksysteme 1 Semesterklausur Datenbanksysteme 1 SS 2015 Hinweise: Die Bearbeitungszeit beträgt 90 Minuten. Verwenden Sie für ihre Lösungen ausschließlich die gehefteten Blätter des Lösungsteils. Die Heftklammern dürfen nicht entfernt werden. Melden Sie sich bei der Aufsicht, falls die Blätter nicht ausreichen sollten! Es sind nur Hilfsmittel in Papierform zugelassen. Benutzen Sie einen dokumentenechten Stift! Verwenden Sie keinen Bleistift! Benutzen Sie außerdem keinen roten und keinen grünen Stift! Überprüfen Sie, ob ihre Platznummer mit der auf der Klausur vermerkten Platznummer übereinstimmt. Melden Sie sich sofort bei der Aufsicht, falls das nicht der Fall sein sollte. Unterschreiben Sie auf dem Deckblatt des Lösungsteils an der vorgesehenen Stelle mit ihrem vollen Vor- und Nachnamen. Schreiben Sie auf jedes Blatt des Lösungsteils ihren Namen und ihre Matrikelnummer. Die Klausur besteht aus 5 Aufgaben mit insgesamt 40 Punkten: 1. SQL-Anfragen [8 Punkte] 2. ER-Modellierung [8 Punkte] 3. Query-Optimierung [9 Punkte] 4. Normalformentheorie [7 Punkte] 5. Allerlei [8 Punkte]
Aufgabe 1: SQL-Anfragen, 8 Punkte (1+2+2+1+2) Gegeben ist der folgende Ausschnitt einer Relationeninstanz: Bundesliga Platz Mannschaft S U N TD Punkte 1 FC Bayern München 18 4 1 53 58 2 VfL Wolfsburg 15 5 3 26 50 3 Borussia Mönchengladbach 11 7 5 13 40 4 Bayer 04 Leverkusen 9 9 5 8 36 5 FC Schalke 04 10 5 8 5 35 6 FC Augsburg 11 2 10 2 35..................... 13 1.FC Köln 6 7 10-8 25..................... a) Formulieren Sie die folgenden Teilaufgaben mittels SQL-Anfragen: i) Selektieren Sie die Mannschaften, in deren Name die Zeichenkette FC nicht vorkommt. ii) Selektieren Sie je zwei voneinander verschiedene Mannschaften, deren Abstand in Punkten weniger als zwei gewonnene Spiele (6 Punkte) beträgt. Der absolute Betrag wird mit einer Funktion ABS(n) berechnet. iii) Selektieren Sie den Platz und die Punkte derjenigen Mannschaften, die mehr Siege haben, als alle Mannschaften der Bundesliga im Durchschnitt. Die Anzahl der Siege ist im Attribut S gegeben. Sortieren Sie die Ergebnisse bezüglich der Punkte aufsteigend. b) Bestimmen Sie die Ergebnisse der folgenden SQL-Anfragen an obige Bundesliga-Instanz: i) SELECT Platz, Mannschaft, Punkte FROM Bundesliga WHERE TD <= 2 OR TD = 53; ii) SELECT N, AVG(Punkte) as Punktedurchscnitt FROM Bundesliga WHERE Mannschaft <> 'FC Schalke 04' AND S <= 15 GROUP BY N HAVING AVG(Punkte) < 40;
Aufgabe 2: ER-Modellierung, 8 Punkte (6+2) Gegeben ist das folgende ER-Diagramm, Primärschlüssel sind unterstrichen: a) Konvertieren Sie das gegebene ER-Diagramm mittels SQL-DDL in ein relationales Datenbankschema. Benutzen Sie dazu den aus der Vorlesung bekannten Konvertierungsalgorithmus. Geben Sie geeignete Domänen an. Bestimmen Sie alle Primär- und Fremdschlüssel. b) Ändern Sie die Lösung aus Teilaufgabe a) so ab, dass folgende Constraints berücksichtigt werden: Der Wert des Attributes Jahr muss größer oder gleich 1985 sein. Löscht man den Tupel aus der Relation Film, sollen der entsprechende Titel und das dazugehörige Jahr aus der Relation spielt in mitgelöscht werden. Hinweis: Es ist ausreichend, entsprechende Abänderungen der Lösung aus Teilaufgabe a) kenntlich zu machen.
Aufgabe 3: Query-Optimierung, 9 Punkte (4+5) Gegeben sind die folgenden Relationenschemata ohne Domänenangaben: R (A, B, C, D) S (E, F, G) Dabei ist R.D ein Fremdschlüssel auf S.E. a) Zudem ist der folgende Ausdruck in relationaler Algebra gegeben: π A,E σ C=E F =5 (((π A,B,C (R)) (π E,F σ E>F (S))) Lösen Sie die folgenden Teilaufgaben: i) Zeichnen Sie diesen Ausdruck als initialen Operatorbaum. ii) Optimieren Sie diesen Baum gemäß des Hillclimbing-Algorithmus aus der Vorlesung und geben Sie den Baum nach Schritt 2, 3 und 5 an. Berücksichtigen Sie im letzten Schritt auch Pipelining. b) Zu obigem Relationenschemata existieren die folgenden Statistikdaten: T R = 2000 B R = 60 T S = 1000 B S = 40 M = 21 J = 200 Es sind weiterhin folgende Indizes vorhanden: Primär-Cluster-Index auf Attribut R.A Primär-Cluster-Index auf Attribut S.E Gegeben ist die folgende SQL-Anfrage: SELECT * FROM R, S WHERE R.D = S.E ; Berechnen Sie die Kosten der Join-Berechnung für die folgenden Fälle: i) Nested-Loop Join ii) Sortierungs-Join bei bereits erfolgter Vorsortierung iii) Index-Join
Aufgabe 4: Normalformentheorie, 7 Punkte (3+2+2) Gegeben ist das folgende Relationenschema R ohne Domänenangabe: R (A, B, C, D, E) Ferner existieren folgende funktionale Abhängigkeiten: A C D E B D Lösen Sie die folgenden Teilaufgaben mit Hilfe bekannter Algorithmen aus der Vorlesung: a) Bestimmen Sie mittels des Tests auf verlustfreie Zerlegung, ob es sich bei folgender Zerlegung von R um eine solche handelt: R1 (A, B, C, D) R2 (B, D) R3 (A, B, E) b) Bestimmen Sie für die gegebene Attributmenge U := ABCDE und obige funktionale Abhängigkeiten die Hülle (AB) +. c) Geben Sie eine Zerlegung von R in die 3. Normalform unter Berücksichtigung obiger funktionaler Abhängigkeiten und des Schlüsselkandidaten (A,B) an.
Aufgabe 5: Allerlei, 8 Punkte (2+1+2+1+2) a) Gegeben ist der folgende Transaktionsablauf: T1 T2 T3 start-ta T1 x1 := read(f); start-ta T2; x2 := read(f); x1: = x1-5; write(x1, F); commit-ta T1; start-ta T3; x3 := read(f); x3: = x3 * x3; write(x3, F); commit-ta T3; x2: = x2-3; write(x2, F); commit-ta T2; Berechnen Sie den Wert von F (Anfangswert F = 10) für die serielle und parallele Ausführung der Transaktionen. Was kässt sich aus dem Ergebnis schließen? b) Gegeben sei ein B-Baum der Klasse Γ(3, 2). Berechnen Sie die maximale Knotenzahl. c) Gegeben ist folgendes aus der Vorlesung bekanntes DB-Schema (ohne Angaben von Domänen): Wein(W#, Weinberg, Jahrgang, Prozent, Rebsorte) Weinfreund(T#, Name, Vorname) Konsum(T#, W#, Datum, Menge) Beschreiben Sie in eigenen Worten, was von folgenden RelA-Anfragen zurückgeliefert wird: i) σ Jahrgang>1985 (GROUPBY(Wein, Jahrgang, SUM, Rebsorte)) ii) π Menge (σ Name= MaxMusterman Datum= 27 Jan 2015 (Weinfreund Konsum)) d) Welche Eigenschaft muss ein ResultSet in Java haben, damit der Cursor in der Ergebnismenge beliebig positioniert werden kann? e) Gegeben ist der folgende B-Baum der Klasse Γ(1, 1): Löschen Sie Schlüssel 8 und zeichnen Sie den sich daraus ergebenden finalen Baum.