Sie sind auf Seite 1von 3

Einführung in Datenbanksysteme, Datenbanken für die Bioinformatik Sommersemester

2012
5. Übungsblatt
(Testatwoche: 22. - 24. Mai 2012)

Einführung in Datenbanksysteme
Datenbanken für die Bioinformatik
Agnès Voisard, Sebastian Müller

Aufgabe 1 (SQL) 16 Punkte

Verwenden Sie für diese Aufgabe folgendes Datenmodell:

Produkt (prod_id, name, beschreibung)

Die Tabelle speicherte eine Liste von Produkten. Jedes Produkt hat eine
eindeutige ID prod_id (Datentyp integer). Das Attribut name (Datentyp
varchar(256)) ist der Name des Produkts. Das Attribut beschreibung
(Datentyp text) ist die Beschreibung des Produkts.

Ort (ort_id, name, x, y)

Die Tabelle speicherte eine Liste von Orten. Jeder Ort hat eine eindeutige
ID ort_id (Datentyp integer). Das Attribut name (Datentyp varchar(256)) ist
der Name des Orts. Die Attribute x und y (Datentyp integer) sind die
Koordinaten des Orts.

Aufenthalt (ta_id, ort_id, dauer, x, y)

Die Tabelle speicherte eine Liste von Aufenthalten. Jeder Aufenthalt gehört
zu einer Transaktion und zu einem Ort. Er hat eine gewisse Dauer (Attribut
dauer mit Datentyp double). Die Attribute x und y (Datentyp integer) sind
die Mittelwerte der Koordinaten des Aufenthalts.

Transaktion (ta_id, prod_id, menge)

Die Tabelle speichert eine Liste von Transaktionselementen, wobei die


Transaktion selber nur auf Basis ihrer Elemente beschrieben wird. Die
Attribute ta_id und prod_id identifizieren die Transaktionselemente
eindeutig. Die Menge des umgesetzten Produkts spiegelt sich in dem
Attribut menge wieder (Datentyp integer).

Gehen Sie davon aus, dass alle Felder Pflichtfelder sind.

a) Schreiben Sie einen SQL Befehl, der die Tabelle Aufenthalt mit
passenden Datentypen und allen notwendigen Integritätsbedingungen
erstellt.

b) Ermitteln Sie die durchschnittliche und höchste Abweichung der X-


Koordinate der Aufenthalte und der zugeordneten Orte für jeden Ort.

c) Verwenden Sie Ihre vorherige Abfrage in einem Inner-Select, um alle


Aufenthalte anzuzeigen, bei denen die Abweichung der X-Koordinate zum
Ausgabe 17.05.2012
Einführung in Datenbanksysteme, Datenbanken für die Bioinformatik Sommersemester
2012
jeweiligen Ort mindestens 20% über der durchschnittlichen Abweichung
liegt. Speichern Sie das Ergebnis in einer neuen Tabelle. Sie können auf
ihre vorherige Anfrage mit $abweichung verweisen.

Aufgabe 2 (SQL, Ergebnisrelationen) 10 Punkte

Gegeben sind die Tabellen R, S und T :

R a b c S b d T d e
1 2 3 2 4 4 1
2 2 4 3 3 4 2
3 3 4

Werten Sie die folgenden Ausdrücke aus, geben Sie jeweils die Ergebnismenge der einzelnen
Anfragen an.
a) Select * from ( R natural full outer Join t)
b) Select * from R natural Join S natural JOIN T
c) Select * from R Join S on R.c=S.b natural JOIN T
d) Select r.a, S.b from R Join S on R.c!=S.b natural Join T
e) Select r.a, S.b, d from
R Join S on R.c!=S.b natural Join T

Aufgabe 3 (Advanced SQL) 4 Punkte

Gegeben sei die folgende geschachtelte Anfrage:

SELECT * FROM R
WHERE R.a <operator>
(SELECT b FROM S WHERE S.c = 1);

Welche der folgenden Formulierungen sind äquivalent, welche nicht?


Begründen Sie Ihre Aussagen kurz.

a) IN
b) = ANY
c) = ALL
d) NOT IN
e) <> ANY
f) <> ALL

Aufgabe 4 (Advanced SQL, Grouping Sets) 15 Punkte

Ausgabe 17.05.2012
Einführung in Datenbanksysteme, Datenbanken für die Bioinformatik Sommersemester
2012
Für typische Data Warehouse Operationen wurden dem SQL Befehlssatz
weitere Befehle zur Gruppierung bzw. Aggregation von Werten
hinzugefügt. Im Detail handelt es sich hierbei z.B. um sogenannte
Grouping Sets (Operatoren GROUPING SETS, CUBE, ROLLUP). Bitte
verschaffen Sie sich über http://wiki.postgresql.org/wiki/Grouping_Sets
einen Überblick über deren Funktionalität. Gegeben sei die Faktentabelle
aus Übungsblatt 3:

CREATE TABLE Fakt (spa_id INTEGER, reg_id INTEGER, qua_id DATE,


umsatz NUMERIC(10,2), gewinn NUMERIC(10,2), PRIMARY KEY (spa_id,
reg_id, qua_id), FOREIGN KEY spa_id REFERENCES Sparte, FOREIGN KEY
reg_id REFERENCES Region, FOREIGN KEY qua_id REFERENCES Quartal);

a) Befüllen Sie die Tabelle und die zugehörigen „Dimensionstabellen“ mit


folgendem Inhalt:
Sparte Region Quartal Umsatz Gewinn
„Automobil“ „Berlin“ „1.Q. 2011“ 50000 10000
„Automobil“ „Berlin“ „2.Q. 2011“ 100000 5000
„Automobil“ „Dresden“ „1.Q. 2011“ 20000 5000
„Elektronik“ „Berlin“ „2.Q. 2011“ 70000 10000
„Elektronik“ „Dresden“ „1.Q. 2011“ 30000 0
„Elektronik“ „Dresden“ „2.Q. 2011“ 20000 -10000

b) Verwenden Sie den GROUPING SETS Operator, um jeweils nach Sparte,


Region und Quartal innerhalb eines SELECTS zu gruppieren. Wie sieht die
Ergebnismenge aus?

c) Erstellen Sie mit Hilfe des CUBE Operators einen Würfel mit
Zuhilfename aller „Dimensionen“ (Sparte, Region, Quartal). Ein Würfel
enthält alle möglichen Aggregationskombinationen. Wie sieht die
Ergebnismenge aus?

d) Wie würden Sie den Ausdruck aus Teilaufgabe c in „normalem“ SQL mit
Hilfe von GROUP BY ausdrücken?

Aufgabe 5 (SQL Gruppenprädikate) 4 Punkte

Kann man – wenn ja, wie; wenn nein, warum nicht – das HAVING-Prädikat
für Gruppen durch Zeilenprädikate ausdrücken?

Benutzen Sie als Beispiel die Tabelle aus 3a (Name: Fakten) und folgenden
SQL-Ausdruck:

SELECT Sparte, Region, SUM(Umsatz) FROM Fakten GROUP BY Sparte,


Region HAVING SUM(Umsatz) >= 50000

Ausgabe 17.05.2012

Das könnte Ihnen auch gefallen