10.10.2013 Aufrufe

MUSTERLÖSUNG - Praktische Informatik / Datenbanken

MUSTERLÖSUNG - Praktische Informatik / Datenbanken

MUSTERLÖSUNG - Praktische Informatik / Datenbanken

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

Prof. Dr. Lutz Wegner,<br />

Dr. Kai Schweinsberg 20.09.2012<br />

Klausur zur Vorlesung <strong>Datenbanken</strong> I<br />

im Sommersemester 2012<br />

Name: ........................................................... Vorname: ............................................................<br />

Matr.Nr.: .................................................... Studiengang: .........................................<br />

Hinweis: Bearbeiten Sie alle Aufgaben. Schreiben Sie Ihre Antworten in den freien Platz oder<br />

auf die Rückseiten. Bei Ankreuzaufgaben kann mehr als eine Antwort richtig sein. Hilfsmittel<br />

sind nicht zugelassen. Die Bearbeitungszeit beträgt 120 Minuten.<br />

Ferner sind die in dieser Klausur genannten Markennamen zufällig gewählt und dienen nur der<br />

Veranschaulichung. Das gezeigte Anwendungsbeispiel ist fiktiv.<br />

Aufgabe Punkte max. Punkte err. Aufgabe Punkte max. Punkte err.<br />

1 2 7 3<br />

2 6 8 4<br />

3 1+2+2+2 9 2+2<br />

4 2+2 10 4<br />

5 2+3+2+3 Summe 48<br />

6 4<br />

Aufgabe 1:<br />

<strong>MUSTERLÖSUNG</strong><br />

Welche Aussagen sind richtig in Zusammenhang mit dem Record Identifier/Tupel Identifier<br />

Speicherkonzept?<br />

( X ) Ein RID/TID setzt sich zusammen aus einer Seitennummer und einer Indexnummer<br />

für die Adresstabelle in der Seite.<br />

( ) Ziehen Datensätze wegen Größenänderungen mehrfach um, können sehr lange<br />

Verweisketten entstehen.<br />

( ) Das RID-/TID-Speicherkonzept erfordert eine große Umsetztabelle, die<br />

vorzugsweise im Hauptspeicher gehalten werden sollte.<br />

( X ) Ein für ein Datenobjekt einmal vergebener RID/TID bleibt auch bei Umzügen<br />

wegen Größenänderungen unverändert (invariant).<br />

( ) Der beim Löschen eines Datenobjekts in einer Seite freiwerdende Platz ist<br />

verloren und kann nicht wiederbenutzt werden. Dies erfordert periodisch eine<br />

komplette Reorganisation des Plattenspeichers.<br />

1 von 9


Aufgabe 2:<br />

Wir betrachten ein regionales Internet-Portal für den Gebrauchtwagenkauf. Darin gibt es<br />

Händler, die durch einen eindeutigen Händleridentifikator (HID), einen eindeutigen Händlernamen<br />

(HNAME) und einen Standort (ORT), an dem sich der Händler befindet, beschrieben<br />

werden.<br />

Zweitens gibt es Autos. Diese sind gekennzeichnet durch einen vom Portal vergebenen Schlüssel<br />

AID, eine Modellbezeichnung (MODELL), die Laufleistung (KM), das Erstzulassungsjahr<br />

(EZJAHR) und einen Angebotspreis (PREIS).<br />

Zwischen Händlern und Autos gibt es die Beziehung „steht-bei“, wobei ein Auto bei genau einem<br />

Händler steht und ein Händler mindestens ein Auto, in der Regel aber viele, anbietet.<br />

Zuletzt gibt es noch interessierte Käufer (Suchende), die sich durch einen eindeutigen Namen<br />

(SNAME), einen WOHNORT und ein Preislimit (PLIMIT) auszeichnen. Interessiert sich im<br />

Portal ein Suchender für ein Auto, dann „parkt“ er es. Das führt zu einer Beziehung „parken“,<br />

bei der ein Suchender kein oder mehrere Autos parken kann und ein Auto von keinem oder mehreren<br />

Suchenden geparkt wird.<br />

Geben Sie ein ER-Diagramm für diese Miniwelt mit drei Entity-Typen an. Verwenden Sie nur<br />

binäre Relationen. Die Kanten sollen die Kardinalitäten in der (min, max)-Notation zeigen. Unterstreichen<br />

Sie die Primärschlüssel, die in dieser Miniwelt sinnvoll sind.<br />

AID<br />

MODELL<br />

(1,1) (1,*)<br />

Autos steht-bei<br />

Händler<br />

KM<br />

PREIS<br />

EZJAHR<br />

parken<br />

Suchende<br />

SNAME WOHNORT PLIMIT<br />

2 von 9<br />

(0,*)<br />

(0,*)<br />

HID<br />

HNAME ORT


Aufgabe 3:<br />

Im ersten Entwurf für einen Teil des Datenbankschemas der Miniwelt aus Aufgabe 2 wurde eine<br />

Tabelle AH entworfen, die Autos mit Angabe des Händlers und des Orts, an dem sie stehen, zeigt.<br />

AH<br />

AID MODELL HID HNAME ORT<br />

1001 Golf G&G Gut und Günstig Kassel<br />

1002 Focus G&G Gut und Günstig Kassel<br />

1003 Astra HCD Hot Car Deals Baunatal<br />

1004 Astra HCD Hot Car Deals Baunatal<br />

1005 Golf HCD Hot Car Deals Baunatal<br />

1006 Punto PP Prima preiswert Kassel<br />

1007 Passat PP Prima preiswert Kassel<br />

(a) Was sind die Schlüsselkandidaten?<br />

{AID}<br />

(b) Welche nicht-trivialen funktionalen Abhängigkeiten existieren?<br />

{AID} -> AH -- die Schlüsselabhängigkeit<br />

HID -> {HNAME, ORT} -- kann auch getrennt geschrieben werden<br />

HNAME -> {HID, ORT}<br />

(c) Gibt es transitive Abhängigkeiten in AH? Wenn ja, nennen Sie eine!<br />

Hinweis: Es muss gelten X Y Z und Y X !<br />

Ja, AID ---> HID ---> ORT<br />

HNAME ist eine nicht-triviale FA, HID ist<br />

kein Schlüssel von AH und HNAME ist nicht prim.<br />

3 von 9


Aufgabe 4:<br />

Eine Relation R ist bekanntlich in 3. Normalform, wenn für alle funktionalen Abhängigkeiten<br />

X A gilt, X A ist trivial oder X ist Schlüssel oder A R ist prim. Für BCNF entfällt „A <br />

R ist prim“. Alternativ ist Relation R in 3NF, wenn sie keine transitiven Abhängigkeiten eines<br />

nicht-primen Attributs von einem Schlüssel hat.<br />

In die Tabelle Autos haben wir zusätzlich zu den Angaben der Autos noch den Händleridentifikator<br />

aufgenommen, der angibt, bei welchem Händler das Auto steht.<br />

Autos<br />

AID MODELL KM EZJAHR PREIS HID<br />

1001 Golf 95000 2005 6700 G&G<br />

1002 Focus 130000 2002 4300 G&G<br />

1003 Astra 170000 1999 2100 HCD<br />

1004 Astra 60000 2004 7800 HCD<br />

1005 Golf 190000 2001 2800 HCD<br />

1006 Punto 75000 2002 2800 PP<br />

1007 Passat 280000 2001 3900 PP<br />

(a) Bestimmen Sie die Schlüsselkandidaten und nicht-trivialen funktionalen Abhängigkeiten.<br />

Schlüsselkandidaten: {AID}<br />

Nicht-triviale FA: AID --> Autos -- die Schlüsselabhängigkeit<br />

(b) Was ist die höchste Normalform, in der Autos ist? Begründung!<br />

BCNF<br />

Begründung: Wie in (a) gezeigt,gehen alle nicht-trivialen FA vom Schlüssel<br />

aus. Das ist die Definition der BCNF.<br />

4 von 9


Aufgabe 5:<br />

Für die folgenden Aufgaben betrachten wir Suchende und die Autos, die sie suchen (geparkt haben).<br />

(a) Ergänzen Sie die Einträge in der Tabelle Parken! Dabei gilt: Rolf hat alle verfügbaren<br />

Golfs, Gabi alle Astras geparkt. Inge parkt den Focus und alle Golfs. Ernst hat nichts geparkt.<br />

Hinweis: Die Tabelle hat mehr Zeilen als Sie benötigen.<br />

Suchende<br />

SNAME<br />

WOHN<br />

ORT<br />

PLIMIT<br />

Rolf Kassel 4500<br />

Gabi Kassel 5000<br />

Inge Vellmar 3000<br />

Ernst Baunatal 6000<br />

Modelle<br />

AID MODELL<br />

1001 Golf<br />

1002 Focus<br />

1003 Astra<br />

1004 Astra<br />

1005 Golf<br />

1006 Punto<br />

1007 Passat<br />

(b) Welche sind die sinnvollen Schlüsselkandidaten und nicht-trivialen funktionalen Abhängigkeiten<br />

in den Relationen Suchende, Modelle und Parken?<br />

Suchende: SK ist {SNAME}<br />

FA ist SNAME --> Suchende<br />

Modelle: SK ist {AID}<br />

FA ist AID --> Modelle<br />

Parken: SK ist {SNAME, AID}<br />

FA ist {SNAME, AID} --> Parken<br />

(c) Sind die Relationen Suchende, Modelle und Parken in BCNF? Kurze Begründung!<br />

Ja, alle drei Relationen sind in BCNF, weil jeweils alle nicht-trivialen FA<br />

vom zugehörigen Schlüssel ausgehen.<br />

Außerdem wären Modelle und Parken sowieso in BCNF, weil sie nur 2 Attribute<br />

haben.<br />

5 von 9<br />

Parken<br />

_SNAME_ AID<br />

Rolf 1001<br />

Rolf 1005<br />

Gabi 1003<br />

Gabi 1004<br />

Inge 1002<br />

Inge 1001<br />

Inge 1005


(d) Wie lautet der zweifache Outer Join über die drei Tabellen Suchende, Parken, Modelle mit<br />

SNAME und AID als Verbindungsattribute mit den Tabelleninhalten von oben? Jedes Attribut<br />

soll dabei nur einmal auftauchen. Nullwerte deuten Sie mit „–“ an.<br />

SNAME WOHNORT PLIMIT AID MODELL<br />

Rolf Kassel 4500 1001 Golf<br />

Rolf Kassel 4500 1005 Golf<br />

Gabi Kassel 5000 1003 Astra<br />

Gabi Kassel 5000 1004 Astra<br />

Inge Vellmar 3000 1002 Focus<br />

Inge Vellmar 3000 1001 Golf<br />

Inge Vellmar 3000 1005 Golf<br />

Ernst Baunatal 6000 - -<br />

- - - 1006 Punto<br />

- - - 1007 Passat<br />

Aufgabe 6:<br />

Auf der Relation Autos aus Aufgabe 4 suchen wir alle Modelle (im Ergebnis tritt nur das Attribut<br />

MODELL auf), die preislich unter 4000 € liegen und ein Erstzulassungsjahr größer oder<br />

gleich 2002 haben. Geben Sie den Ausdruck der Relationenalgebra an!<br />

MODELL ( PREIS < 4000 EZJAHR 2002 (Autos) )<br />

6 von 9


Aufgabe 7:<br />

Wir suchen Autos, die bei Händlern am eigenen Wohnort stehen. Wie lautet der SQL-Befehl<br />

dazu, der aus den Tabellen AH von Aufgabe 3 und Suchende von Aufgabe 5 die Namen der<br />

Suchenden (SNAME), ihren WOHNORT, den Automobilidentifier AID und das Modell<br />

(MODELL) ausgibt, sofern eben das Auto bei einem Händler vor Ort steht?<br />

SELECT Suchende.SNAME, Suchende.WOHNORT, AH.AID, AH.MODELL<br />

FROM Suchende, AH<br />

WHERE Suchende.WOHNORT = AH.ORT<br />

Aufgabe 8:<br />

Gesucht sind der Händleridentifier HID und der Durchschnittspreis aller Fahrzeuge, die dieser<br />

Händler anbietet. Verwenden Sie für den SQL-Befehl die Tabelle Autos aus Aufgabe 4.<br />

SELECT HID, AVG(PREIS)<br />

FROM Autos<br />

GROUP BY HID<br />

7 von 9


Aufgabe 9:<br />

Was liefert die folgende SQL-Abfrage auf den Tabellen aus Aufgabe 5?<br />

SELECT *<br />

FROM Modelle M1<br />

WHERE NOT EXISTS (SELECT * FROM Parken<br />

WHERE M1.AID = Parken.AID)<br />

(a) Geben Sie die Ergebnistupel für die Tabellenbelegung aus Aufgabe 5 an.<br />

AID MODELL<br />

1006 Punto<br />

1007 Passat<br />

(b) Beschreiben Sie in Worten das Ergebnis auf beliebigen Tabelleninhalten für die Schemata<br />

aus Aufgabe 5!<br />

Es wird die AID und das Modell der Autos ausgegeben, die momentan von<br />

keinem Suchenden geparkt sind.<br />

8 von 9


Aufgabe 10:<br />

Betrachten Sie die unten gezeigte Ablauffolge. Geben Sie den vollständigen Abhängigkeitsgraphen<br />

dazu an! Ist die Ablauffolge serialisierbar? Begründung!<br />

Transaktion T 1 Transaktion T 2 Transaktion T 3<br />

Lesen B<br />

Schreiben B<br />

Lesen A<br />

Schreiben A<br />

Lesen C<br />

Schreiben C<br />

T 1<br />

9 von 9<br />

Lesen B<br />

Lesen C<br />

Schreiben C<br />

Schreiben B<br />

T 2 T3<br />

Die Ablauffolge ist nicht serialisierbar, weil Zyklen im<br />

Abhängigkeitsgraphen vorhanden sind.<br />

ENDE DER KLAUSUR

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!