Übung zu Datenbanken - Musterlösung zur 1. Probeklausur

Werbung
Klausurergebnis
Aufgabe 1: Datenmodellierung
Aufgabe 2: SQL und Anfragen
Übung zu Datenbanken
Musterlösung zur 1. Probeklausur
Dipl.-Inform. Sascha Kriewel
27.11.2008
Dipl.-Inform. Sascha Kriewel
Übung zu Datenbanken
Klausurergebnis
Aufgabe 1: Datenmodellierung
Aufgabe 2: SQL und Anfragen
Notenspiegel und Punkte
Noten Anzahl
1.0 - 1.3 0
1.7 - 2.3 6
2.7 - 3.3 12
3.7 - 4.0 14
5.0
9
Durchfallerquote: 22%
Aufgabe Schnitt max. Punkte # max.
1a
12
15
1
1b
0,5
3
1
1c
1
2
7
2a
3
5
11
2b1
3
5
7
2b2
1
5
0
2b3
1
5
1
2b4
1,5
5
7
Dipl.-Inform. Sascha Kriewel
Übung zu Datenbanken
Klausurergebnis
Aufgabe 1: Datenmodellierung
Aufgabe 2: SQL und Anfragen
ER-Diagramm mit Funktionalitäten
n-stellige Beziehungen, Ternäre Beziehungen
ER-Diagramm
Dipl.-Inform. Sascha Kriewel
Übung zu Datenbanken
Klausurergebnis
Aufgabe 1: Datenmodellierung
Aufgabe 2: SQL und Anfragen
ER-Diagramm mit Funktionalitäten
n-stellige Beziehungen, Ternäre Beziehungen
n-stellige Beziehungen
Allgemein gilt für eine Beziehung R zwischen Entitäten E1···n :
I Sei die Funktionalität bei Ek (1 ≤ k ≤ n) gleich 1
I Dann muss gelten, dass durch R die folgende partielle
Funktion vorgegeben wird:
R : E1 × · · · × Ek −1 × Ek +1 × · · · × En → Ek
Dipl.-Inform. Sascha Kriewel
Übung zu Datenbanken
Klausurergebnis
Aufgabe 1: Datenmodellierung
Aufgabe 2: SQL und Anfragen
ER-Diagramm mit Funktionalitäten
n-stellige Beziehungen, Ternäre Beziehungen
Ternäre Beziehungen
Speziell für eine ternäre (dreistellige) Beziehung A × B × C also:
I Für die Kardinalitätsangabe 1:1:1 muss gelten:
I
I
I
I
Für die Kardinalitätsangabe N:1:1 muss gelten:
I
I
I
A×B →C
B ×C →A
A×C →B
A×B →C
A×C →B
Für die Kardinalitätsangabe N:M:1 muss gelten:
I
A×B →C
Dipl.-Inform. Sascha Kriewel
Übung zu Datenbanken
Klausurergebnis
Aufgabe 1: Datenmodellierung
Aufgabe 2: SQL und Anfragen
ER-Diagramm mit Funktionalitäten
n-stellige Beziehungen, Ternäre Beziehungen
Beziehungstyp: tritt an
I
I
I
Zu Turnier und Spielklasse ex.
mehrere Spieler, daher muss die
Funktionalität für Spieler N sein.
Zu Spieler und Spielklasse ex.
mehrere Turniere, daher muss die
Funktionalität für Turnier N sein.
Ein Spieler tritt bei einem Turnier
in genau einer Spielklasse an, also:
Spieler × Turnier → Spielklasse
Die Funktionalität für Spielklasse
ist 1.
Dipl.-Inform. Sascha Kriewel
Übung zu Datenbanken
Klausurergebnis
Aufgabe 1: Datenmodellierung
Aufgabe 2: SQL und Anfragen
ER-Diagramm mit Funktionalitäten
n-stellige Beziehungen, Ternäre Beziehungen
Beziehungstyp: tritt an
I
I
I
Zu Turnier und Spielklasse ex.
mehrere Spieler, daher muss die
Funktionalität für Spieler N sein.
Zu Spieler und Spielklasse ex.
mehrere Turniere, daher muss die
Funktionalität für Turnier N sein.
Ein Spieler tritt bei einem Turnier
in genau einer Spielklasse an, also:
Spieler × Turnier → Spielklasse
Die Funktionalität für Spielklasse
ist 1.
Dipl.-Inform. Sascha Kriewel
Übung zu Datenbanken
Klausurergebnis
Aufgabe 1: Datenmodellierung
Aufgabe 2: SQL und Anfragen
ER-Diagramm mit Funktionalitäten
n-stellige Beziehungen, Ternäre Beziehungen
Beziehungstyp: tritt an
I
I
I
Zu Turnier und Spielklasse ex.
mehrere Spieler, daher muss die
Funktionalität für Spieler N sein.
Zu Spieler und Spielklasse ex.
mehrere Turniere, daher muss die
Funktionalität für Turnier N sein.
Ein Spieler tritt bei einem Turnier
in genau einer Spielklasse an, also:
Spieler × Turnier → Spielklasse
Die Funktionalität für Spielklasse
ist 1.
Dipl.-Inform. Sascha Kriewel
Übung zu Datenbanken
Klausurergebnis
Aufgabe 1: Datenmodellierung
Aufgabe 2: SQL und Anfragen
ER-Diagramm mit Funktionalitäten
n-stellige Beziehungen, Ternäre Beziehungen
Beziehungstyp: tritt an
I
I
I
Zu Turnier und Spielklasse ex.
mehrere Spieler, daher muss die
Funktionalität für Spieler N sein.
Zu Spieler und Spielklasse ex.
mehrere Turniere, daher muss die
Funktionalität für Turnier N sein.
Ein Spieler tritt bei einem Turnier
in genau einer Spielklasse an, also:
Spieler × Turnier → Spielklasse
Die Funktionalität für Spielklasse
ist 1.
Dipl.-Inform. Sascha Kriewel
Übung zu Datenbanken
Klausurergebnis
Aufgabe 1: Datenmodellierung
Aufgabe 2: SQL und Anfragen
Tabellendenition
Anfragen
Tabellendenition: Bestandteil
CREATE TABLE bestandteil (
zutatid INTEGER REFERENCES zutat(id)
ON DELETE CASCADE,
rezeptid INTEGER REFERENCES rezept(id)
ON DELETE CASCADE,
menge
NUMERIC(4,3)
CHECK (menge BETWEEN 0.001 AND 1.000),
PRIMARY KEY (zutatid, rezeptid)
)
Dipl.-Inform. Sascha Kriewel
Übung zu Datenbanken
Klausurergebnis
Aufgabe 1: Datenmodellierung
Aufgabe 2: SQL und Anfragen
Tabellendenition
Anfragen
Anfrage 1
SELECT name
FROM zutat z
WHERE z.id NOT IN (SELECT zutatid
FROM bestandteil)
OR z.preisproliter > 30.0
Dipl.-Inform. Sascha Kriewel
Übung zu Datenbanken
Klausurergebnis
Aufgabe 1: Datenmodellierung
Aufgabe 2: SQL und Anfragen
Tabellendenition
Anfragen
Anfrage 2
SELECT art, avg(preis)
FROM (SELECT rezeptid,
art,
sum(preisproliter * menge) AS preis
FROM zutat z JOIN bestandteil b
ON z.id=b.zutatid
JOIN rezept r
ON r.id=b.rezeptid
GROUP BY rezeptid, art) AS t
GROUP BY art
Dipl.-Inform. Sascha Kriewel
Übung zu Datenbanken
Klausurergebnis
Aufgabe 1: Datenmodellierung
Aufgabe 2: SQL und Anfragen
Tabellendenition
Anfragen
Anfrage 2
SELECT art, avg(preis)
FROM (SELECT rezeptid,
art,
sum(preisproliter * menge) AS preis
FROM zutat z JOIN bestandteil b
ON z.id=b.zutatid
JOIN rezept r
ON r.id=b.rezeptid
GROUP BY rezeptid, art) AS t
GROUP BY art
Dipl.-Inform. Sascha Kriewel
Übung zu Datenbanken
Klausurergebnis
Aufgabe 1: Datenmodellierung
Aufgabe 2: SQL und Anfragen
Tabellendenition
Anfragen
Anfrage 3: SQL
SELECT name
FROM rezept r
WHERE r.id NOT IN
(SELECT rezeptid
FROM zutat JOIN bestandteil ON id=zutatid
WHERE alkoholgehalt > 0)
AND r.id IN
(SELECT rezeptid
FROM zutat JOIN bestandteil ON id=zutatid
GROUP BY rezeptid
HAVING sum(preisproliter * menge) <= 2.0)
Dipl.-Inform. Sascha Kriewel
Übung zu Datenbanken
Klausurergebnis
Aufgabe 1: Datenmodellierung
Aufgabe 2: SQL und Anfragen
Tabellendenition
Anfragen
Anfrage 4
SELECT r.name
FROM rezept r, bestandteil bo, zutat zo,
bestandteil bs, zutat zs
WHERE r.id = bo.rezeptid
AND bo.zutatid = zo.id
AND zo.name = 'Orangensaft'
AND r.id = bs.rezeptid
AND bs.zutatid = zs.id
AND zs.name = 'Sahne'
Dipl.-Inform. Sascha Kriewel
Übung zu Datenbanken
Herunterladen