Name: ____________________________________________ Seite 1 von 7 Klausur Datenbanken 1 Matrikel-Nr.: ____________________ 17.1.2001 Punktzahl: __________ Note: _________ (Eine Note von 4,0 oder besser gilt als bestanden.) Studiengang: ________________________ Dauer: 90 Minuten , es sind keine Hilfsmittel (Skript etc.) zugelassen Bitte schreiben Sie leserlich !! Es ist Platz gelassen für die Antwort. Sie können die Rückseiten mit benutzen, falls Ihnen der Platz nicht ausreicht. Aufgabe 1 ( 2 Punkte ) Verbessern Sie das Programmstück so, dass Sie nur eine Select-Anweisung benutzen müssen (Sie können durchstreichen und ergänzen, um nicht alles neu schreiben zu müssen). ... try { Statement stmt = con.createStatement() ; ResultSet rsLiefert = stmt.executeQuery( "SELECT * FROM Liefert WHERE Preis < " + limit ) ; while (rsLiefert.next()) { String wer = rsLiefert.getString("Lieferant") ; Statement stmt2 = con.createStatement() ; ResultSet rs2 = stmt.executeQuery( "SELECT Ort FROM Lieferant WHERE Lieferant = ´" + wer +“´“) ; while (rs2.next()) { System.out.println( rsLiefert.getString("Ort") ) ; } rs2.close() ; stmt2.close() ; } rsLiefert.close() ; stmt.close() ; } catch (Exception e) { ausgabe += "\nFehler bei Anfrage an die Datenbank:\n" + e ; } Name: ____________________________________________ Seite 2 von 7 Klausur Datenbanken 1 17.1.2001 Name: ____________________________________________ Seite 3 von 7 Klausur Datenbanken 1 17.1.2001 Aufgabe 2 (Anfrageoptimierung) ( 2+(1+2) Punkte ) In folgenden Teilaufgaben steht PA für die Projektion auf ein Attribute A und SA , SB bzw. S(A und B) für Selektionen mit Selektionsbedingungen A , B bzw. (A und B) . 2.1. Geben Sie ein Beispiel zu folgender Ungleichung: (Das Beispiel soll zeigen, warum die linke und die rechte Seite tatsächlich verschieden sein können.) PA ( R1 ) - PA ( R2 ) / PA ( R1 – R2 ) 2.2. Angenommen wir habe Relationen R1 und R2 mit folgenden Kennzahlen | R1 | = 1.000.000 | R2 | = 500.000 Die Selektivität | SA ( R1 ) | / | R1 | = 0,2 Die Selektivität | SB ( SA ( R1 ) x R2 ) | / | SA ( R1 ) x R2 | = 0,05 Führen Sie für folgende Anfrage die logische Anfrageoptimierung durch und zeichnen Sie den optimierten Anfragebaum auf, und bestimmen Sie für jeden Knoten die Größe des erzeugten Zwischenergebnisses. S(A und B) ( R1 x R2 ) Name: ____________________________________________ Seite 4 von 7 Klausur Datenbanken 1 17.1.2001 Aufgabe 3 (Prolog) ( 2 + 4 Punkte ) Gegeben sind die Tabellen % liefert( Wer , Teil , Preis , Zeit ) liefert( vobis , pc500 , 2000 , 4 ) ... % lieferant( Wer , Ort ) lieferant( vobis , ulm ) ... Schreiben Sie folgende Anfragen in Prolog (Es ist egal, ob die Namen der betreffenden Lieferanten einmal oder mehrfach ausgegeben werden): 3.1. Wer bietet in Ulm (mindestens) einen pc500 an? 3.2. Wer bietet in Ulm den billigsten pc500 an? (Falls es mehrere Lieferanten mit Ort Ulm gibt, die am billigsten sind, sollen alle genannt werden.) Name: ____________________________________________ Seite 5 von 7 Klausur Datenbanken 1 17.1.2001 Aufgabe 4 (Deduktive Datenbanken) ( 2 + 2 + 1 + 1 Punkte ) Gegeben ist das folgende Regelsystem sg( X, Y ) :- flat( X,Y ) . sg( X, Y ) :- up( X, U ) , sg( U, V ) , down( V, Y ) . down( X, U ) :- up( U, X ) . mit folgenden extensionalen Relationen: flat( 11 , 22 ) . flat( 2, 3 ) . up( up( up( up( 1 , 11 ) . 11 , 111 ) . 2 , 22 ) . 22 , 222 ) . 4.1. Welche Ergebnisse liefert die Anfrage: Ergebnisse: ?- sg( X , Y ) . X | Y -----+----| 4.2. Wie sieht das magic-Regelsystem aus für Anfragen an die rekursive Relation sg, bei denen das erste Argument gebunden ist und das zweite eine Variable ist (z.B. für ?- sg( 1, Y ) ) . Schreiben Sie das aus dem oben gegebenen System erzeugte magic-Regelsystem auf. 4.3. Begründen Sie an dem Beispiel der Anfrage ?- sg( 1, Y ) für beliebig große Relationen up und flat: Worin liegt die Optimierung bzw. der Vorteil des Magic-Set-Verfahrens gegenüber dem naiven Auswertungsverfahren für deduktive Datenbanken (1-2 Sätze) 4.4. Nennen Sie eine Optimierung bzw. einen Optimierungsvorteil des Magic-Set-Verfahrens gegenüber Prolog? (es gibt mehrere – entscheiden Sie sich für eine davon) Name: ____________________________________________ Seite 6 von 7 Klausur Datenbanken 1 17.1.2001 Aufgabe 5 Validierung ( 3 Punkte ) Geben Sie ein Beispiel für eine Historie, die einen zyklenfreien Serialisierbarkeitsgraphen hat, bei der aber (mindestens) eine der beteiligten Transaktionen abgebrochen wird, wenn Validierung als Synchronisierungsverfahren eingesetzt wird. Nennen Sie (oder zeichnen Sie eindeutig lesbar) die zeitliche Reihenfolge aller relevanten Operationen bzw. Transaktionszeitpunkte, die zum Abbruch einer Transaktion führen. Aufgabe 6 (Sperr-Synchronisation) (2+2 Punkte) Angenommen, wir bezeichnen Transaktionen mit Ti, Tj, ... und zugegriffene Objekte mit Oa, Ob, ..., Sperranforderungen einer Transaktion Ti auf einem Objekt Oa mit lock(Ti,Oa) und Sperrfreigaben mit unlock(Ti,Oa) sowie die Anordnungsrelation einer Historie mit <H. Wie lautet (mit diesen Symbolen geschrieben) die Formel für die 2-Phasigkeit einer Transaktion ? Eine Transaktion _______ heißt 2-phasig, genau dann , wenn Wie lautet (mit diesen Symbolen geschrieben) die Formel für die Sperr-Regel ? Name: ____________________________________________ Seite 7 von 7 Klausur Datenbanken 1 17.1.2001 Aufgabe 7: (Recovery) ( 1+1+1 Punkte ) 7.1. Warum will man verhindern, dass eine Transaktion T2 Daten überschreibt, die von einer Transaktion T1 in die Datenbank geschrieben wurden, solange T1 noch nicht mit Commit oder Abort beendet wurde? Um die Frage zu beantworten, beschreiben Sie bitte, was man dann nicht mehr machen könnte, wenn ein Scheduler erlaubt, dass eine Transaktion T2 Daten überschreibt, die von einer Transaktion T1 in die Datenbank geschrieben wurden, solange T1 noch nicht mit Commit oder Abort beendet wurde (1 Satz). 7.2. Warum will man verhindern, dass eine Transaktion T2 Daten liest, die von einer Transaktion T1 in die Datenbank geschrieben wurden, solange T1 noch nicht mit Commit oder Abort beendet wurde? Um die Frage zu beantworten, beschreiben Sie bitte, welche unerwünschte Eigenschaft von Historien man dann nicht mehr verhindern könnte, wenn ein Scheduler erlaubt, dass eine Transaktion T2 Daten liest, die von einer Transaktion T1 in die Datenbank geschrieben wurden, solange T1 noch nicht mit Commit oder Abort beendet wurde (1 Satz). 7.3. Wie verhindert der Scheduler, dass eine Transaktion T2 Daten liest oder überschreibt, die von einer Transaktion T1 in die Datenbank geschrieben wurden, solange T1 noch nicht mit Commit oder Abort beendet wurde? ( 1 Satz )