Sie sind auf Seite 1von 9

Mat.Nr.:!

Name:

Probeklausur Datenbanken 1
Andreas Heß, Hochschule Furtwangen, 17. Juli 2012

Punkteverteilung und Benotungsschema


Einstieg: Wissensfragen 10 Punkte
Thema 1: Datenbankentwurf und DDL 26 Punkte
Thema 2: Normalformen 14 Punkte
Thema 3: Abfragen und DML 40 Punkte
Thema 4: Transaktionen 10 Punkte
Summe 100 Punkte
Zum Bestehen sind 50 Punkte notwendig.

Einstieg: Wissensfragen (10 Punkte)


Aufgabe 1 (1 Punkt)
Wofür steht die Abkürzung „DBMS“?

Datenbank-Architektur
Aufgabe 2 (3 Punkte)
Sie haben in der Vorlesung die ANSI-SPARC-Architektur kennengelernt. Bitte beschriften Sie
dieses Diagramm.

Sicht 1 Sicht 2 ... Sicht n

logische Ebene

physische Ebene
logische Ebene

Aufgabe 3 (3 Punkte)
Was bedeutet „physische Datenunabhängigkeit“?

Aufgabe 4 (3 Punkte)
Kreuzen Sie für die folgenden SQL-Anweisungen jeweils an, ob sie zur DDL oder zur DML
gehören:
CREATE TABLE! ❍ DDL ❍ DML
INSERT! ❍ DDL ❍ DML
UPDATE! ❍ DDL ❍ DML
DELETE! ❍ DDL ❍ DML
DROP TABLE! ❍ DDL ❍ DML
1/9
Mat.Nr.:! Name:

Thema 1: Datenbankentwurf und DDL (26 Punkte)

n m
Vorlesung belegt Student

Name MatNr

hält Name

Professor Name

Gegeben ist ein E/R-Modell einer Hochschuldatenbank, die Professoren, Studenten und
Vorlesungen umfasst. Eine Vorlesung wird von genau einem Professor gehalten und kann von
Studenten belegt werden.

Aufgabe 1 (4 Punkte)
Setzen Sie das E/R-Modell von der 1:N-Schreibweise in die (min, max)-Notation um. Achten Sie
auf den Unterschied zwischen (0,1) und (1,1).
Bringen Sie die Änderungen direkt am hier gezeigten Diagramm an.

Aufgabe 2 (16 Punkte)


Setzen Sie das E/R-Modell in SQL DDL um. Fügen Sie wo angebracht künstliche Schlüssel ein.
Achten Sie auf eine sinnvolle Wahl der Datentypen und NOT NULL.

Aufgabe 3 (6 Punkte)
An der Datenbank sollen Änderungen vorgenommen werden.
a.) Fügen Sie bei der Vorlesung eine Spalte „ECTS“ hinzu. Die Spalte soll die Menge der für die
Vorlesung vergebenen Credit Points speichern. Geben Sie nur die SQL-Anweisungen für die
notwendigen Änderungen an! Wählen Sie einen sinnvollen Datentyp.
b.) Was müssen Sie beachten, wenn die Tabelle schon Daten enthält und die neue Spalte NOT
NULL sein soll?
c.) Für eine Vorlesung muss es mindestens 1 und maximal 12 Credit Points geben. Fügen Sie ein
Constraint hinzu, das dies prüft. Geben Sie die SQL-Anweisung für die Änderung an!

2/9
Mat.Nr.:! Name:

Thema 2: Normalformen (14 Punkte)


Aufgabe 1 (14 Punkte)
Bringen Sie die folgende nicht normalisierte Tabelle in die 3. Normalform.
Die Tabelle zeigt deutsche Bundesländer, ihre Hauptstädte sowie die Landkreise, die in diesem
Land liegen, mit ihrem Kennzeichen. Sie können hier davon ausgehen, dass das Kennzeichen den
dazugehörigen Kreis eindeutig bestimmt
Verwenden Sie für die Lösung die Schreibweise des relationalen Modells. Sie brauchen für diese
Aufgabe keinen Wert auf Datentypen zu legen, aber kennzeichnen Sie Primär- und Fremdschlüssel!

Laender

Code Land Hauptstadt Kreise

BW Baden-Württemberg Stuttgart VS Schwarzwald-Baar


FR Breisgau-Hochschwarzwald
OG Ortenaukreis

RP Rheinland-Pfalz Mainz WW Westerwald


DAU Vulkaneifel
SÜW Südliche Weinstraße
PS Südwestpfalz

HE Hessen Wiesbaden MTK Main-Taunus-Kreis


RÜD Rheingau-Taunus-Kreis
KB Waldeck-Frankenberg

3/9
Mat.Nr.:! Name:

Thema 3: Abfragen und DML (40 Punkte)


Der Schachclub SC 1926 Hassloch richtet jährlich an Pfingsten ein großes Turnier aus und
verwendet zur Verwaltung eine Datenbank.
Es werden alle teilnehmenden Spieler erfasst. Spieler haben eine Nummer als Primärschlüssel
sowie einen Namen, einen Vornamen und ein Geburtsdatum. Bei Meistern ist ihr Titel angegeben,
so steht z.B. die Abkürzung „GM“ für „Großmeister“ oder „IM“ für „internationaler Meister“.
Außerdem wird die Deutsche Wertungszahl (DWZ) erfasst, die die Spielstärke angibt. Der Bereich
reicht ungefähr von unter 1000 bei Anfängern bis zu weit über 2500 bei Meistern. Zuletzt ist noch
die Vereinszugehörigkeit über einen Fremdschlüssel angegeben. Die Vereine selbst sind in einer
weiteren Tabelle mit einer Nummer und ihrem Namen erfasst.
Für jede gespielte Partie, identifiziert durch eine Nummer, wird ein Eintrag in der Tabelle „Partien“
erstellt. Es sind jeweils über Fremdschlüssel die Spieler mit den weißen und mit den schwarzen
Figuren referenziert. In der Spalte „Ergebnis“ wird eine 1 eingetragen, wenn Weiß gewinnt, 0 wenn
Schwarz gewinnt oder 0,5, wenn das Spiel unentschieden ausgegangen ist.
Zur leichteren Weiterverarbeitung der Daten gibt es außerdem eine Sicht „Ergebnisse“, die die aus
der Partien-Tabelle entnommenen Daten aufbereitet, so dass in der Spalte „PNr“ die Nummer der
Partie, in der Spalte „SpielerNr“ die Nummer eines Spielers und in der Spalte „Punkte“ die
Punktzahl für diesen Spieler in dieser Partie erscheint; also 1, falls der Spieler gewonnen hat, 0 falls
er verloren hat oder 0,5 falls das Spiel unentschieden ausgegangen ist. Für jede gespielte Partie
tauchen somit in der Sicht „Ergebnisse“ zwei Zeilen auf und es ist nicht mehr erkennbar, ob ein
Spieler in der Partie mit den weißen oder schwarzen Figuren gespielt hat.
Das relationale Schema ist auf der folgenden Seite detailliert und mit Beispieldaten angegeben. Auf
den Seiten mit den Aufgabenstellungen wird das relationale Schema jeweils oben auf der Seite in
Kurzform wiederholt.
Vereine : {[ VNr : integer,
Name : varchar(100) ]}
Spieler : {[ SpielerNr : integer,
Name : varchar(100),
Vorname : varchar(100),
Geburtsjahr : decimal(4,0),
Titel : char(3),
DWZ : integer, VNr : integer (➚ Vereine)]}
Partien : {[ PNr : integer,
Weiss : integer (➚ Spieler),
Schwarz : integer (➚ Spieler),
Ergebnis : decimal(2,1) ]}
Ergebnisse : {[ PNr : integer,
SpielerNr : integer,
Punkte : decimal(2,1) ]}

4/9
Mat.Nr.:! Name:

Spieler

SpielerNr Name Vorname Geburtsjahr Titel DWZ VNr

1 Anand Vishwanathan 1969 GM 2791 5

2 Aronjan Lewon 1982 GM 2825 6

3 Carow Johannes 1996 2195 1

4 Heß Andreas 1977 1598 1

5 Huober Hubert 1972 1987 2

6 Müller Hans 1958 1789 3

7 Meyer Horst 1938 1803 4

8 Schulz Stefan 1968 2005 4

9 Stümper Harald 1980 983 4

Vereine Ergebnisse (Sicht)

VNr Name PNr SpielerNr Ergebnis

1 Sfr. Heidesheim 1 3 1

2 Sfr. Mainz 1 4 0

3 Sfr. Furtwangen - Vöhrenbach 2 4 0,5

4 SC 1926 Hassloch 2 5 0,5

5 OSG Baden Baden 3 5 0

6 Turm Emsdetten 3 1 1

7 SV Simonswald 4 9 0

4 4 1
Partien
5 2 1
PNr Weiss Schwarz Ergebnis
5 9 0
1 3 4 1
6 6 0
2 4 5 0,5
6 2 1
3 5 1 0
7 1 0,5
4 9 4 0
7 2 0,5
5 2 9 1
8 9 0
6 6 2 0
8 8 1
7 1 2 0,5

8 9 8 0

5/9
Mat.Nr.:! Name:

Vereine : {[ VNr : integer, Partien : {[ PNr : integer,


Name : varchar(100) ]} Weiss : integer (➚ Spieler),
Schwarz : integer (➚ Spieler),
Spieler : {[ SpielerNr : integer,
Ergebnis : decimal(2,1) ]}
Name : varchar(100),
Vorname : varchar(100), Ergebnisse : {[ PNr : integer,
Geburtsjahr : decimal(4,0), SpielerNr : integer,
Titel : char(3), Punkte : decimal(2,1) ]}
DWZ : integer, VNr : integer (➚ Vereine)]}

Aufgabe 1 (2 Punkte)
Schreiben Sie eine Abfrage, die alle Spalten der Tabelle Vereine nach Namen alphabetisch sortiert
anzeigt.
Aufgabe 2 (3 Punkte)
Schreiben Sie eine Abfrage, die alle Spalten der Tabelle Spieler alphabetisch nach Nach- und
Vornamen sortiert anzeigt, es sollen aber nur die Großmeister ausgegeben werden.

Aufgabe 3 (4 Punkte)
Schreiben Sie eine Abfrage, die in den Spalten „Name“, „Vorname“, „Verein“ und „DWZ“ alle
Spieler mit ihrer Vereinszugehörigkeit anzeigt. Die Liste soll nach DWZ absteigend sortiert sein,
also die besten Spieler zuerst.

Aufgabe 4: OUTER JOIN (4 Punkte)


Prüfen Sie, ob es Vereine gibt, die zwar in der Datenbank auftauchen, von denen aber keine Spieler
im Turnier teilnehmen. Schreiben Sie dazu eine Anfrage, die in den Spalten „VNr“ und „Name“ alle
Vereine auflistet, für die kein entsprechender Spieler in der Tabelle Spieler existiert. Lösen Sie die
Aufgabe mit einem OUTER JOIN.

Aufgabe 5: Unterabfragen (4 Punkte)


Erstellen Sie eine Abfrage, die das selbe Ergebnis wie die Abfrage in Aufgabe 4 liefert, aber lösen
Sie die Aufgabe diesmal mit einer Unterabfrage

Aufgabe 6: Aggregatfunktionen (5 Punkte)


Schreiben Sie eine Abfrage, die in den Spalten „VNr“, „Name“ und „DWZ_Schnitt“ alle am
Turnier teilnehmenden Vereine mit der durchschnittlichen DWZ ihrer Spieler anzeigt. Die Ausgabe
soll nach DWZ absteigend sortiert sein, also die besten Vereine zuerst. Es sollen nur Vereine mit
einer durchschnittlichen DWZ von > 1900 angezeigt werden.

Aufgabe 7
Der Ausrichter des Turniers kassiert von allen Spielern jeweils 15 Euro Startgeld. Nur Großmeister
und jugendliche Spieler, die nach 1993 geboren sind, zahlen nichts. Schreiben Sie eine Abfrage, die
nur genau eine Zeile mit einer Spalte „Einnahmen“, in der die gesamten Einnahmen in Euro
ausgegeben werden, als Ergebnis hat.

Aufgabe 8
Schreiben Sie eine Abfrage, die die Spielergebnisse aus der Tabelle Partien etwas schöner anzeigt.
Es soll in den Spalten „PNr“, „Weiss_Name“, „Weiss_Punkte“, „Schwarz_Name“ und

6/9
Mat.Nr.:! Name:

„Schwarz_Punkte“ die Partienummer, der Nachname des Spielers mit den weißen Figuren, die
Punktzahl des Spielers mit den weißen Figuren (dies ist die Spalte Ergebnis aus der ursprünglichen
Tabelle), der Nachname des Spielers mit den schwarzen Figuren und die Punktzahl des Spielers mit
den schwarzen Figuren angezeigt werden. Beispiel:

Partien

PNr Weiss_Name Weiss_Punkte Schwarz_Name Schwarz_Punkte

1 Carow 1 Heß 0

2 Heß 0,5 Huober 0,5

3 Huober 0 Anand 1

… … … … …

Aufgabe 9
Schreiben Sie das Statement auf, mit dem die Sicht „Ergebnisse“ erstellt wurde. Lösen Sie die
Aufgabe mit Hilfe von UNION.

Aufgabe 10
Erstellen Sie die Rangliste. Schreiben Sie eine Abfrage, die in den Spalten „SpielerNr“, „Name“,
„Vorname“ und „Punkte“ alle Spieler, die Partien gespielt haben, mit ihrer bisher insgesamt erreicht
Punktzahl auflistet. Verwenden Sie die Sicht „Ergebnisse“. Die Ausgabe soll nach Punktzahl
absteigend sortiert sein.

Aufgabe 11: Einfügen


Der Verein Turm Emsdetten hat einen Spieler nachgemeldet. Es handelt sich um den Großmeister
Boris Gelfand, geboren 1968, DWZ 2727. Fügen Sie die entsprechende Zeile in die Tabelle
„Spieler“ ein.

Aufgabe 12: Löschen


a.) Sie haben festgestellt, dass der SV Simonswald zwar in der Datenbank auftaucht, aber kein
einziger Spieler dieses Vereins am Turnier teilnimmt. Löschen Sie den SV Simonswald aus der
Tabelle „Vereine“.
b.) In der Datenbank seien bei allen Fremdschlüsselbeziehungen ON DELETE CASCADE-
Klauseln angegeben worden. Was wäre geschehen, wenn Sie statt des SV Simonswald einen
anderen Verein, der tatsächlich Spieler bei dem Turnier angemeldet hat, gelöscht hätten?
Welche Tabellen der Datenbank könnten in diesem Fall von einer Löschung betroffen sein?
Wäre die Sicht „Ergebnisse“ auch betroffen?
c.) Können Sie direkt einzelne Zeilen aus der Sicht „Ergebnisse“ löschen?

7/9
Mat.Nr.:! Name:

Thema 4: Transaktionen (10 Punkte)


Sie verwenden die Datenbank aus Thema 3. Es laufen zwei Transaktionen, A und B. Es werden
folgende SQL-Anweisungen in der angegebenen Reihenfolge und mit den angegebenen Ausgaben
durchgeführt.

Transaktion A Transakation B

① START TRANSACTION

② INSERT INTO Buch


VALUES('701', 'Sport im Büro');
③ SELECT * FROM Buch WHERE
Titel LIKE 'Sport%';
Ausgabe:

Buch

ISBN Titel

701 Sport im Büro

789 Sport-Almanach des Jahres 2012

④ START TRANSACTION

⑤ SELECT * FROM Buch WHERE


Titel LIKE 'Sport%';
Ausgabe = ?

⑥ ROLLBACK;

⑦ COMMIT;

Der eingestellte Isolationslevel ist READ UNCOMMITTED.

8/9
Mat.Nr.:! Name:

Aufgabe 1 (7 Punkte)
a.) Welche Ausgabe erzeugt das Select-Statement in Transaktion B mit der Nummer ⑤ ?

b.) Im Select-Statement mit der Nummer ⑤ trat eine Transaktions-Anomalie auf. Wie heißt die hier
beobachtete Transaktionsanomalie?
c.) Welchen Isolationslevel müssen Sie mindestens einstellen, um diese Transaktionsanomalie
sicher auszuschließen?

Aufgabe 2 (3 Punkte)
Erklären Sie in ein bis zwei Sätzen, was „isoliert“ im Zusammenhang mit Transaktionen bedeutet.

9/9

Das könnte Ihnen auch gefallen