Klausurbesprechung: Aufgabe 1: ACID → C

Werbung
Klausurbesprechung:
Aufgabe 1:
ACID Î C = concurrency?
Nein Æ Consistency
Select * from R outer join S = kart. Produkt R x S?
Nein
R Theta join S = Select(kart. Produkt)
JA
Schlüssel = eindeutig, maximal
Nein
Zeile = Tupel
JA
Tupelkalkül <=> Relationale Algebra
Ja
Selektion wählt Spalten
Nein
Relationales Datenmodell beruht auf Tabelle
JA
3NF Æ BCNF
Nein
Serialisierbarer ScheduleÆ wie alle Serialisierbaren S.
Nein (!alle)
http Zustands orientiert?
Nein (zustandslos)
B+Baum Knoten heißen DirecorySeiten
Ja
Kosten opt.: Selektionen möglichst spät ausführen
Nein
ER-Diagramm ÅÆ 3NF
Nein
2NF erlaubt keine fkt. Abh. eines nicht Schlüssel Attrib. vom Teil eines Schlüssels
Æ A prim oder A voll fkt. Abh.
JA
Aufgabe 2: SQL
a)
Verschiedene Bezeichnungen der Waren die Kunde Vogel bestellt hat
SELECT DISTINCT bezeichnung FROM Ware, Auftag, Kunde WHERE
Ware.wnr=Auftrag.Wnr AND Auftrag.knr=Kunde.knr AND Kunde.Kname=’Vogel’;
SELECT DISTINCT Bezeichnung FROM ware NATURAL JOIN auftrag NATURAL JOIN
kunde WHERE kunde.kname=’Vogel’;
b) Lieferanten Namen, die mehr als 1 Auftrag haben
SELECT lname FROM lieferant NATURAL JOIN auftrag GROUP BY lname HAVING
count(*)>=2;
c) Kundenname, -nummer + Gesamt Einkaufswert
SELECT kname, knr, SUM(menge*preis) FROM kunde NATURAL JOIN auftrag
NATURAL JOIN ware GROUP BY kname, knr ORDER BY SUM(menge*preis) DESC
d) Kundennamen deren Lieferanten NUR aus München sind.
SELECT kname FROM kunde WHERE NOT EXISTS( SELECT * FROM lieferant WHERE
lstadt=’München’ AND NOT EXISTS( SELECT * FROM auftrag WHERE
auftrag.knr=kunde.knr AND auftrag.lnr=lieferant.lnr));
SELECT kname FROM kunde WHERE NOT EXISTS( SELECT lnr FROM lieferant
WHERE lstadt=’München’ AND lnr NOT IN( SELECT lnr FROM auftrag WHERE
auftrag.knr = kunde.knr AND auftrag.lnr=lieferant.lnr));
Aufgabe 3:
a) i) Gesucht sind die Nummern aller Waren die Lieferant Huber liefert
Πwnr(σlname=’Huber’(Lieferant ►◄Auftrag))
Tupelkalkül:
Schema(t) = (Wnr:String)
{t| ( es gibt ein l Є Lieferant, a Є Auftrag) (t.wnr=a.wnr & l.lnr=a.lnr &
l.lame=’Huber’)};
Bereichskalkül:
{ wnr | es gibt ein lstadt, lnr, knr, menge: Lieferant(lnr,’Huber’,lstadt) &
Auftrag(lnr, wnr, knr, menge)}
ii)
Relationale Algebra:
Πkstadt(σlstadt=’München’(Kunde ►◄ Auftrag ►◄ Lieferant))
Tupelkalkül:
Schema(t) = (kstadt: String)
{t| (es gibt ein k Є kunde, l Є Lieferant, a Є auftrag) (t.kstadt=k.kstadt & k.knr
= a.knr & l.lnr=a.lnr & l.lstadt=’München’)};
Bereichskalkül:
{ kstadt | es gibt ein knr, kname, lnr, lname, wnr, menge: Kunde(knr,kname,
kstadt) & Lieferant(lnr,lname,’München’) & Auftrag(lnr, wnr, knr, menge)}
b)
i)
Πlnr,wnr(Auftrag) % Πlnr(Auftrag)
Berechnet die Nummern der Waren die von allen Lieferanten geliefert werden
L1
L1
L1
L2
L2
L3
L4
L4
L5
L5
ii)
W1
W2
W4
W2
W4
W2
W2
W4
W1
W2
L1
L2
L3
L4
L5
%
=
{ W2}
ΠBezeichnung(σmenge>20(σkname=’Wurm’(Kunde) U
σkstadt=’Köln’(Kunde)) ►◄Auftrag) ►◄Ware)
Berechnet die Bezeichnung der Waren, die entweder vom Kunden ‚Wurm’ oder von
einem Kunden aus Köln mit einer Anzahl größer als 20 bestellt wurden.
K4
K3
L1
L2
L2
L5
L5
L3
L4
W2
W2
W4
W1
W2
W2
W4
K3
K3
K3
K3
K3
K4
K4
21
3
9
7
4
18
54
=
{ „Mehl“, „Zucker“}
Aufgabe 4: Normalisierung
R(A,B,C,D,E,F)
ABÆ C
CÆD
ABÆD
ABÆE
ABÆE
EÆF
a)
b)
Schlüsselkandidat: AB
1) Bestimmung der kanonischen Überdeckung:
a. Linksreduktion (partielle Abh.)
nichts zu tun!
b. Rechtsreduktion (entfernen transitiver Abh.)
ABÆD transitiv Î
ABÆC
CÆ D
ABÆ {}
ABÆ E
EÆF
c. Entfernen rechtsleerer Abhängigkeiten
ABÆC
CÆD
ABÆE
EÆF
d. Zusammenfassen von Abh. mit gleicher linker Seite:
ABÆ C,D
CÆD
EÆF
Zwischenergebnis: kanonische Überdeckung:
ABÆ C,D
CÆD
EÆF
2) Erzeugen eines neuen Relationsschemas:
a) Relation R1(A,B,C,E)
zugeordnet: ABÆCE
b) Relation R2(C,D)
zugeordnet CÆD
c) Relation R3(EÆF)
zugeordnet: EÆF
3) Rekonstruktion eines Schlüsselkandidaten:
nichts zu tun
4) Elimination überflüssiger Relationen
nichts zu tun.
Endergebnis: Relationsschema:
R1(A,B,C,E)
R2(C,D)
R3(E,F)
Herunterladen