Name: Musterlösung Seite 2 Aufgabe 1 (10 Punkte) Beantworten

Werbung
Name: Musterlösung
Seite 2
Aufgabe 1 (10 Punkte)
Beantworten Sie die Fragen in dieser Aufgabe mit einer kurzen, prägnanten Antwort.
1. Wie nennt man ein Attribut, das in keinem Schlüsselkandidaten enthalten ist?
Nichtprimärattribut
2. Mit welchen zwei Schlüsselwörtern wird in SQL eine Funktion bezeichnet, die einen
Rückgabewert liefert?
stored function
3. Wie heißt eine Historie, wenn alle Schritte einer Transaktion nacheinander ablaufen?
seriell
4. Mit welchem SQL-Befehl können Sie die Tabelle tablename komplett leeren?
delete from tablename
5. Mit welcher Klausel erreicht man bei der Definition eines Fremdschlüssels in SQL,
dass Änderungen des Primärschlüssels auf den Fremdschlüssel propagiert werden?
on update cascade
6. Nennen Sie die drei Phasen des Wiederanlaufs nach einem Fehler mit Verlust des
Hauptspeichers.
1. Analyse, 2. Redo, 3. Undo
7. Nennen Sie eine Form der physikalischen Datenorganisation, bei der die Operation
LOOKUP besonders effizient ist.
Hashing, ISAM oder B*Baum
17. Juli 2007
Name: Musterlösung
Seite 3
8. Mit welchem Schlüsselwort definiert man in SQL einen Sicherungspunkt innerhalb
einer Transaktion?
(define) savepoint
9. Nennen Sie einen typischen Fehler, der bei unkontrolliertem Mehrbenutzerbetrieb
auftreten kann.
Lost Update, Dirty Read oder Phantomproblem
10. Wann sind zwei Mengen von funktionalen Abhängigkeiten äquivalent?
Wenn sie die gleich Hülle besitzen
17. Juli 2007
Name: Musterlösung
Seite 4
Aufgabe 2 (8 Punkte)
Die folgende Abbildung zeigt eine Menge Datensätze, die mithilfe der Index-Sequential
Access Method (ISAM) verwaltet wird. Dabei können in einem Index-Block bis zu vier
Schlüssel/Adresspaare verwaltet werden. Ein Datenblock kann zwei Datensätze enthalten,
wobei aus Gründen der Übersichtlichkeit nur der Schlüssel angegeben ist.
Indexeinstiegstabelle
1110
1
1
Bert
Finchen
Bert
Grobi
Ernie
1
0
Finchen
1
0
Grobi
a) Fügen Sie die vier Schlüssel Oscar, Samson, Tiffy, Kermit in die oben angegebene
Index-Struktur ein und zeichnen Sie anschließend ihren Aufbau: (4 Punkte)
Indexeinstiegstabelle
1111
1
1
Bert
Grobi
Finchen
Bert
Ernie
1
0
Finchen
1
1
Kermit
Grobi
1
1000
1
1
Oscar
0
Oscar
Samson
Samson
Tiffy
17. Juli 2007
Name: Musterlösung
Seite 5
b) Löschen Sie nun aus der Index-Struktur aus a) den Schlüssel Finchen und fügen
Sie anschließend den Schlüssel Bibo ein. Zeichnen Sie danach den Aufbau erneut:
(4 Punkte)
Indexeinstiegstabelle
1111
1
1
Bert
Grobi
Ernie
Bert
Bibo
1
0
Ernie
1
1
Kermit
Grobi
1
1000
1
1
Oscar
0
Oscar
Samson
Samson
Tiffy
17. Juli 2007
Name: Musterlösung
Seite 6
Aufgabe 3 (10 Punkte)
Für die Modellierung eines Zugauskunftsystems seien folgende Entity-Typen gegeben:
Entity-Typ
Bahnhöfe
Städte
Züge
Passagiere
Attribute
Name, AnzGleise
Name, PLZ, Bundesland
ZugNr, Länge, AnzWaggons
Kundennr, Name
Zwischen den Entity-Typen seien folgende Beziehungen gegeben:
1. Jeder Bahnhof liegt in einer Stadt.
2. Eine Stadt kann bis zu drei Bahnhöfe besitzen.
3. Jeder Zug hat einen ausgewiesenen Start- und Zielbahnhof mit Abfahrt- und Ankunftzeit, d.h. er fährt auf einer festen Route.
4. Mit jeder Zwischenstation zerfällt die Route aller Züge in einzelne Teilstrecken. Die
Teilstrecken werden durch einen Relationship-Typen dargestellt, der jedem Zug für
jedes Teilstück den Start- und Zielbahnhof mit Ankunft- und Abfahrtzeit zuordnet.
5. Passagiere können in Zügen Plätze reservieren. Eine Reservierung wird mit der Klasse
und der Platznr. gekennzeichnet.
Erstellen Sie aus den obigen Angaben ein ER-Diagramm und geben Sie für die Beziehungen zwischen den Entity-Typen den Komplexitätsgrad in der (min, max)-Notation
an. Markieren Sie die Schlüssel. Falls ein Entity-Typ an einer Relation mehr als einmal
beteiligt ist, machen Sie kenntlich, welcher Entity-Typ welche Rolle spielt:
Gleisanzahl
Name
Bahnhoefe
(0,*)
starten
bei
PLZ
(1,1)
liegen in
(0,3)
(0,*)
(0,*) (0,*)
von
nach
Staedte
Bundesland
Name
enden
bei
verbinden
(1,1)
Ankunftszeit
(1,1)
ZugNr
AnzWaggons
(1,*)
Zuege
Laenge
Abfahrtszeit
(0,*)
reservieren
Klasse
PlatzNr
(0,*)
Passagiere
Name
KundenNr
17. Juli 2007
Name: Musterlösung
Seite 7
Aufgabe 4 (12 Punkte)
Gegeben sei das folgende ER-Modell zur Modellierung eines Ausschnitts aus einer Bank:
Kontonr.
Guthaben
Konto
Name
*
besitzt
1
Kundennr.
Kunde
Dispokredit
GebDatum
1
1
gebucht_auf
Auszug_von
*
Datum
Buchung
*
*
gelistet_auf
*
Kontoauszug
Betrag
Startdatum
Enddatum
Saldo
Buchungsnr.
Erstellungsdatum
Ein Kunde wird durch seine Kundennr. eindeutig identifiziert. Ein Kunde kann mehrere
Konten besitzen, ein Konto hat genau einen Inhaber. Einem Konto werden viele Buchungen zugeordnet. Zu einem Konto können viele Kontoauszüge gehören, allerdings bezieht
sich ein Kontoauszug immer nur auf ein Konto. Kontoauszüge enthalten viele Buchungen,
die ihrerseits auf vielen Kontoauszügen stehen dürfen. Ein Kontoauszug wird durch sein
Erstellungsdatum eindeutig identifiziert.
a) Markieren Sie oben im ER-Diagramm die Schlüssel der Entity-Typen. Markieren
Sie außerdem die schwachen Entity-Typen. Ergänzen Sie die Charakterisierung der
Beziehungstypen hinsichtlich ihrer Funktionalität. (5 Punkte)
b) Überführen Sie das ER-Diagramm in ein relationales Schema. Wie lauten die Relationen (ohne Wertebereich)? Markieren Sie die Schlüssel der Relationen. (4 Punkte)
Kunde:
Konto:
Buchung:
Kontoauszug:
besitzt:
gebucht auf:
gelistet auf:
Auszug von:
{[Kundennr., GebDatum, Name]}
{[Kontonr., Guthaben, Dispokredit]}
{[Buchungsnr., Datum, Betrag]}
{[Erstellungsdatum, Startdatum, Enddatum, Saldo]}
{[Kontonr., Kundennr.]}
{[Buchungsnr., Kontonr.]}
{[Buchungsnr., Erstellungsdatum]}
{[Erstellungsdatum, Kontonr.]}
c) Verfeinern Sie das relationale Schema, soweit wie möglich. Wie lauten die veränderten
Relationen? (3 Punkte)
Konto:
Buchung:
Kontoauszug:
gelistet auf:
{[Kontonr., Guthaben, Dispokredit, Kundennr.]}
{[Buchungsnr., Datum, Betrag, Kontonr.]}
{[Erstellungsdatum, Startdatum, Enddatum, Saldo, Kontonr.]}
{[Buchungsnr., Erstellungsdatum, Kontonr.]}
17. Juli 2007
Name: Musterlösung
Seite 8
Aufgabe 5 (8 Punkte)
Gegeben seien die folgenden Relationen einer Datenbank für Segel-Regatten:
Bootsklasse:
Wettfahrt:
Teilnehmer:
Plazierung:
{[Klasse, Bauart]}
{[FahrtNr, Name, Datum, Zeit]}
{[SegelNr, Bootsname, Bootsklasse, Baujahr, Eigentümer]}
{[SegelNr, FahrtNr, Platz]}
Formulieren Sie die folgenden Anfragen in der Relationenalgebra:
a) Wie lauten Bauart und Baujahr des Bootes mit der SegelNr ’GER4711’ ? (2 Punkte)
n Bootsklasse)
ΠBauart,Baujahr (σSegelN r=0 GER47110 (ρKlasse←Bootsklasse(T eilnehmer)) o
b) Welche Teilnehmer haben noch keine Wettfahrt gewinnen können? (3 Punkte)
T eilnehmer − Πsch(T eilnehmer) (σP latz=1 (P latzierung) o
n T eilnehmer)
c) Welche Boote (SegelNr) nahmen an allen Wettfahrten teil? (3 Punkte)
ΠSegelN r (P latzierung ÷ ΠF ahrtN r (W ettf ahrt))
17. Juli 2007
Name: Musterlösung
Seite 9
Aufgabe 6 (11 Punkte)
Gegeben seien die folgenden Relationen aus Aufgabe 4:
Bootsklasse:
Wettfahrt:
Teilnehmer:
Plazierung:
{[Klasse, Bauart]}
{[FahrtNr, Name, Datum, Zeit]}
{[SegelNr, Bootsname, Bootsklasse, Baujahr, Eigentümer]}
{[SegelNr, FahrtNr, Platz]}
Formulieren Sie folgende Anfragen in SQL:
a) Welches Boot (Bootsname) belegte bei der Wettfahrt ’Dümmer-Regatta’ den 10.
Platz? (2 Punkte)
select
from
where
and
and
and
t.Bootsname
Wettfahrt w, Platzierung p, Teilnehmer t
t.SegelNr = p.SegelNr
w.FahrtNr = p.FahrtNr
w.Name = ’Duemmer-Regatta’
p.Platz = 10
b) Wieviele Boote haben an der Wettfahrt ’Dümmer-Regatta’ teilgenommen?
(2 Punkte)
select
from
where
and
count(*)
Wettfahrt w, Platzierung p
w.FahrtNr = p.FahrtNr
w.Name = ’Duemmer-Regatta’
c) An welchen Rennen (Name) nahm das älteste Boot im Starterfeld teil? (3 Punkte)
select
from
where
and
and
w.Name
Wettfahrt
t.SegelNr
w.FahrtNr
t.Baujahr
w, Platzierung p, Teilnehmer t
= p.SegelNr
= p.FahrtNr
= (select min(Baujahr) from Teilnehmer)
17. Juli 2007
Name: Musterlösung
Seite 10
d) An welchen Wettfahrten haben ausschließlich Holzboote (Bauart = ’Holz’) teilgenommen? (4 Punkte)
Hinweis: Bestimmen Sie zunächst alle Wettfahrten, an denen Boote teilgenommen
haben, die nicht aus Holz sind.
select wf.Name
from Wettfahrt wf
where not exists
(select *
from Bootsklasse b, Wettfahrt w, Platzierung p, Teilnehmer t
where w.FahrtNr = p.FahrtNr
and p.SegelNr = t.SegelNr
and t.Bootsklasse = b.Klasse
and b.Bauart != ’Holz’i
and wf.name = w.name)
-- alternativ
select Name
from Wettfahrt
where FahrtNr not in
(select w.FahrtNr
from Bootsklasse b, Wettfahrt w, Platzierung p, Teilnehmer t
where w.FahrtNr = p.FahrtNr
and p.SegelNr = t.SegelNr
and t.Bootsklasse = b.Klasse
and b.Bauart != ’Holz’)
17. Juli 2007
Name: Musterlösung
Seite 11
Aufgabe 7 (5 Punkte)
Gegeben seien die folgenden Relationen einer Universitätsdatenbank:
Studierende:
Dozenten:
Vorlesungen:
lesen:
hoeren:
{[MatrikelNr, Name, Semester]}
{[PersNr, Name]}
{[VorlNr, Titel]}
{[PersNr, VorlNr]}
{[MatrikelNr, VorlNr]}
Wie lauten folgende SQL-Anfragen umgangssprachlich?
a) SELECT
FROM
WHERE
AND
AND
AND
DISTINCT s.Name
Studierende s, hoeren h, lesen l, Dozenten d
d.Name = ’Koester’
d.PersNr = l.PersNr
l.VorlNr = h.VorlNr
h.MatrikelNr = s.MatrikelNr
Umgangssprachlich: (2 Punkte)
Wie heißen die Hörer der Vorlesungen von Dozent ’Koester’ ?
b) SELECT Titel
FROM Vorlesungen
WHERE VorlNr NOT IN
(SELECT v.*
FROM Vorlesungen v, hoeren h, Studierende s
WHERE v.VorlNr = h.VorlNr
AND h.MatrikelNr = s.MatrikelNr
AND s.Name = ’Schulze’)
Umgangssprachlich: (3 Punkte)
Welche Vorlesungen werden nicht von Student ’Schulze’ gehört?
17. Juli 2007
Name: Musterlösung
Seite 12
Aufgabe 8 (8 Punkte)
Zeichnen Sie den folgenden B*-Baum (k=2) jeweils
a) nach dem Einfügen von 3, 23 und 41 (3 Punkte)
b) nach dem Einfügen von 19 (2 Punkte)
c) nach dem Löschen von 37 und 43 (3 Punkte)
einmal neu.
2
2
7
5
7
29
11
13
29 31 37 43
a) Nach dem Einfügen von 3, 23 und 41:
2
3
5
7
2
7
11 13
23
29
37
29
31
37
41
43
b) Nach dem Einfügen von 19:
2
2
2
3
5
7
7
29
13
11
29
13 19 23
37
29
31
37
41
37
41
43
c) Nach dem Löschen von 31 und 43:
2
2
2
3
5
7
7
13
13
11
13 19 23
29
29
17. Juli 2007
Name: Musterlösung
Seite 13
Aufgabe 9 (5 Punkte)
Gegeben sei folgende fehlerhafte XML-Datei klausur.xml mit Zeilennummern:
1 <?xml version="1.0"/>
2 <objekte xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="klausur.xsd">
3
<objektA>42</objekt>
4
<objektB>4711</objektB>
5
<objektC>
6
<objektD>sechs</objektD>
7
<objektE>sieben</objektE>
8
</objektC>
9
<objektE>
10 </objekte>
und folgende XML-Schema Definition (XSD) klausur.xsd:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="objekte">
<xs:complexType>
<xs:sequence>
<xs:element name="objektA" type="xs:integer"/>
<xs:element name="objektB" type="xs:string"/>
<xs:element name="objektC">
<xs:complexType>
<xs:sequence>
<xs:element name="objektD" type="objekttyp" maxOccurs="2"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="objektE" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:simpleType name="objekttyp">
<xs:restriction base="xs:string">
<xs:pattern value="eins|drei|fuenf|sieben|neun"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>
Aufgabenstellung siehe nächste Seite
17. Juli 2007
Name: Musterlösung
Seite 14
Die XML-Datei klausur.xml enthält semantische und syntaktische Fehler. Finden Sie die
Fehler und korrigieren Sie die XML-Datei, so dass sie syntaktisch korrekt ist und bzgl. der
Schema-Definition erfolgreich validiert werden kann. Dabei dürfen einzelne Bestandteile,
aber keine ganzen Zeilen gelöscht werden.
Hinweis: Zeile 2 ist korrekt.
Notieren Sie die entsprechende Zeilennummer und die korrigierte Zeile:
Zeilennr.
korrigierte Zeile
1
<?xml version="1.0" ?>
3
<objektA>42</objektA>
6
<objektD>drei</objektD>
7
<objektD>sieben</objektD>
9
<objektE/>
17. Juli 2007
Name: Musterlösung
Seite 15
Aufgabe 10 (7 Punkte)
Gegeben sei das Relationenschema
R = {A, B, C, D, E, F }
mit den funktionalen Abhängigkeiten
B
D
AF
AC
→
→
→
→
D
ABF
C
BD
a) Nennen Sie alle Schlüsselkandidaten für R.
Die Schlüsselkandidaten lauten: BE, DE, AEF und ACE
Von allen ’linken Seiten’ sind alle Attribute der Relationb bis auf E funktional
abhängig. Da E in keiner funktionalen Abhängigkeit enthalten ist, muss es in jedem
Schlüsselkandidaten vorkommen.
b) R ist in der 1. Normalform. Ist R auch in der 2. Normalform? Begründen Sie Ihre
Antwort.
Da es keine Nichtprimärattribute gibt, ist die Relation in 2. Normalform.
c) Ist R in der 3. Normalform? Begründen Sie wieder Ihre Antwort.
Da es keine Nichtprimärattribute gibt, ist die Relation auch in 3. Normalform.
17. Juli 2007
Name: Musterlösung
Seite 16
Aufgabe 11 (4 Punkte)
Die wesentlichen Eingenschaften von Transaktionen werden mit dem Akronym ’ACID’
zusammengefasst. Nennen Sie diese Eigenschaften und charakterisieren Sie diese kurz.
Eigenschaft
atomicy
consistency
isolation
durability
Erklärung
Eine Transaktion stellt eine nicht weiter zerlegbare Einheit dar mit
dem Prinzip alles-oder-nichts.
Nach Abschluss einer Transaktion liegt wieder ein konsistenter Zustand in der Datenbank vor.
Nebenläufig ausgeführte Transaktionen dürfen sich nicht beeinflussen.
Änderungen durch eine erfolgreich abgeschlossene Transaktion bleiben
dauerhaft in der Datenbank.
17. Juli 2007
Name: Musterlösung
Seite 17
Aufgabe 12 (6 Punkte)
Betrachten Sie die drei Schedules mit den jeweiligen Transaktionen T1 , T2 , T3 :
Schedule 1
T1 : BOT
T2 : BOT
T3 : BOT
T1 : lockX(c)
T2 : lockX(b)
T2 : lockX(c)
T3 : lockX(a)
T3 : lockX(b)
T1 : lockX(a)
...
Schedule 2
T1 : BOT
T2 : BOT
T3 : BOT
T1 : lockX(b)
T2 : lockX(a)
T3 : lockX(b)
T2 : lockX(c)
T1 : lockX(c)
T2 : unlockX(a)
...
Schedule 3
T1 : BOT
T2 : BOT
T3 : BOT
T1 : lockX(a)
T2 : lockX(a)
T3 : lockX(b)
T2 : lockX(b)
T1 : unlockX(a)
T3 : lockX(a)
...
Zeichnen Sie den Wartegraphen zur Situation am Ende eines jeden Schedules. Liegt zu
diesem Zeitpunkt ein Deadlock vor?
Schedule 1: Wartegraph:
T1
T2
T3
Deadlock?
N
Ja
Nein
Schedule 2: Wartegraph:
T1
T2
T3
Deadlock?
Ja
Schedule 3: Wartegraph:
N
Nein
T1
T2
T3
Deadlock?
N
Ja
Nein
17. Juli 2007
Name: Musterlösung
Seite 18
Aufgabe 13 (6 Punkte)
In der u.a. Tabelle befindet sich in der Spalte ’Operation’ eine Historie mit drei verzahnt
ausgeführten Transaktionen, die jeweils lesend oder schreibend auf die drei Ressourcen a,
b und c zugreifen.
Diese Historie soll mit einem Zeitstempel-basierten Scheduler verarbeitet werden. Stellen
Sie die Verarbeitung dar, indem Sie den Wert eines Zeitstempels an die entsprechende
Stelle in der Tabelle eintragen, wenn er sich durch eine Operation geändert hat. Vermerken
Sie außerdem in der Spalte ’Bemerkung’, wenn in einem Schritt eine Operation ignoriert
wurde oder eine Transaktion zurückgesetzt wurde.
Gehen Sie davon aus, dass T1 zum Zeitpunkt 1, T2 zum Zeitpunkt 2 und T3 zum Zeitpunkt
3 in die Datenbank eingebracht wird.
Operation T Sr (a)
T1 : r(a)
T Sw (a)
T Sr (b)
T Sr (c)
3
3
3
T2 : w(c)
T3 : r(c)
T1 : w(a)
Bemerkung
2
T3 : w(c)
T3 : r(b)
T Sw (c)
1
T2 : w(b)
T3 : r(a)
T Sw (b)
wird ignoriert
3
T1 wird abgebr.
T2 : r(a)
17. Juli 2007
Herunterladen