Datenbank-Implementierungstechniken Dr. Kai-Uwe Sattler SS 2003 TU Ilmenau Übung 3 1. Kostenabschätzung (1) Berechnen Sie für das Beispiel aus der Vorlesung (Folie 7-5) die Kosten der Ausführungsvariante, in der erst der natürliche Verbund berechnet wird, und die Selektion danach auf dem Zwischenergebnis ausgeführt wird. (a) Welche Auswirkungen hat die Wahl des Verbundalgorithmus? (b) Vergleichen Sie diese Variante und die drei anderen vorgestellten Ausführungsvarianten für den Fall, dass das Prädikat Ware > ’Kaffee’ statt Ware = ’Kaffee’ lautet. Nehmen Sie dafür an, dass die Warennamen gleichmässig über das Alphabet verteilt sind. (2) Das Beispiel aus Aufgabe (1) sei wie folgt erweitet: • Schema: KUNDE (KName, KAdr, Kto) AUFTRAG (KName, Ware, Menge) LIEFERANT (LName, LAdr, Ware, Preis) • Anfrage: select KUNDE.KNAME, Kto, LIEFERANT.LName, Menge * Preis from KUNDE, AUFTRAG, LIEFERANT where KUNDE.KName = AUFTRAG.KName and AUFTRAG.Ware = LIEFERANT.Ware and Ware = ’Kaffee’ • Quantitative Angaben: – In der Relation LIEFERANT sind 1.000 Tupel gespeichert. Auf eine Seite passen dabei 5 Tupel. – 5 Lieferanten liefern Kaffee. – 20 Ergebnistupel passen auf eine Seite. – 2 Tupel des Kreuzprodukts KUNDE × AUFTRAG × LIEFERANT passen auf eine Seite. Bestimmen Sie die Kosten für die analogen Ausführungen zu den in der Vorlesung präsentierten Ausführungsvarianten sowie eine weitere, Ihnen sinnvoll erscheinende Variante. 2. Anfrageoptimierung Überführen Sie die folgende SQL-Anfrage zunächst direkt in einen Ausdruck der Relationenalgebra und optimieren Sie diesen anschließend unter Verwendung der algebraischen Regeln. 1 select R1.A, R2.B, R3.D from R1, R2, ( select * from R3 union select * from R3 where R1.A < 13 and R1.C = R2.C select E from R4, R5 where R3.D > 100 where R3.E = 50 ) and R2.B not in ( where R4.E = R5.E ) 3. Transaktionsverwaltung (1) Gegeben sei folgende Relation: create table Mitarbeiter ( MitarbNr char(10) not null, Name varchar(30) not null, Vorname varchar(30), GebDatum date, Gehalt decimal(6,2) check (Gehalt >= 2000), primary key (MitarbNr) ) Mögliche Operationen auf dieser Tabelle sind: • Berechnen des durchschnittlichen Gehalts aller Mitarbeiter, • Einfügen/Entfernen eines Mitarbeiters, • Ändern/Abfragen des Gehalt-Attributes eines Mitarbeiters. Ferner sei folgende Relation gegeben: create table Konto ( KontoNr char(10) not null, Name varchar(30), KontoStand decimal(8,2), primary key (KontoNr), check ((select sum(KontoStand) from Konto) = 0) ) Mögliche Operationen sind hier: • Berechnen der Summe aller Kontostände, • Transfer von einem Konto auf ein anderes, • Erzeugen/Löschen eines Kontos, • Ändern/Abfragen eines Kontostands. Skizzieren Sie exemplarisch mit Hilfe der obigen Operationen die folgenden Serialisierbarkeitsprobleme: Dirty Read, Nonrepeatable Read, Lost Update und Phantom-Problem. (2) Gegeben seien die folgenden Schedules: 2 s1 s2 s3 s4 s5 s6 s7 s8 = r1 (x)w1 (x)r2 (x)c1 c2 = r1 (x)w1 (x)c1 r2 (x)c2 = r2 (x)r1 (x)w1 (x)c1 w2 (x)c2 = r2 (x)r1 (x)w1 (x)w2 (x)c1 c2 = w2 (x)w1 (x)w1 (y)c1 r2 (y)c2 = w2 (x)w1 (x)w1 (y)r2 (y)c1 c2 = w2 (x)w1 (x)w1 (y)r2 (y)c2 c1 = w2 (x)w1 (x)w1 (y)w2 (y)r1 (y)c1 c2 Welche Eigenschaften besitzen diese Schedules (CSR, VSR, RC, ACA, ST, seriell)? (3) Gegeben seien die folgenden Transaktionen: T1 = r1 (X); r1 (Z); w1 (X); T2 = r2 (Z); r2 (Y ); w2 (Z); w2 (Y ) T3 = r3 (X); r3 (Y ); w3 (Y ) Ferner seien folgende Schedules für diese Transaktionen gegeben: s1 = r1 (X); r2 (Z); r1 (Z); r3 (X); r3 (Y ); w1 (X); w3 (Y ); r2 (Y ); w2 (Z); w2 (Y ); s2 = r1 (X); r2 (Z); r3 (X); r1 (Z); r2 (Y ); r3 (Y ); w1 (X); w2 (Z); w3 (Y ); w2 (Y ); Zeichnen Sie die Konfliktgraphen für diese beiden Schedules. Welcher Schedule ist serialisierbar? Falls ein Schedule serialisierbar ist, geben Sie den äquivalenten seriellen Schedule an. 4. Synchronisation Gegeben sei der folgende Schedule: T1 r1 (x) T2 T3 r2 (y) w1 (x) r3 (z) r2 (x) r3 (x) w3 (z) w2 (z) c c c (1) Welche Eigenschaften besitzt dieser Schedule? (2) Wie würden die folgenden Verfahren bei diesem Schedule vorgehen: a) Zwei-Phasen-Sperrprotokoll b) Zeitstempel-Verfahren c) Valdierungsverfahren d) Serialisierbarkeitsgraphen-Test 3