Slides

Werbung
Datenbanksysteme 1
Tupelkalkül und SQL
Marius Eich
12. Oktober 2016
1 / 15
Aufgabe 1a)
Angestellte(PersonalNr, Name, Gehalt, Beruf, AbteilNr, ChefNr,
Wohnort)
Abteilung(AbteilNr, AbteilName, Ort)
Geben Sie die Nummern und Namen aller Abteilungen aus.
πAbteilNr, AbteilName (Abteilung)
{[a.AbteilNr , a.AbteilName]|a ∈ Abteilung }
2 / 15
Aufgabe 1b)
Angestellte(PersonalNr, Name, Gehalt, Beruf, AbteilNr, ChefNr,
Wohnort)
Abteilung(AbteilNr, AbteilName, Ort)
Geben Sie die Namen und Berufe aller Angestellten aus, die in Mannheim
wohnen.
πName, Beruf (σWohnort=’Mannheim’ (Angestellte))
{[a.Name, a.Beruf ]|a ∈ Angestellte ∧ a.Wohnort =0 Mannheim0 }
3 / 15
Aufgabe 1c)
Angestellte(PersonalNr, Name, Gehalt, Beruf, AbteilNr, ChefNr,
Wohnort)
Abteilung(AbteilNr, AbteilName, Ort)
Listen Sie Name, Gehalt und Abteilungsname aller Programmierer auf, die
in Darmstadt beschäftigt sind.
πName, Gehalt, AbteilName (σOrt=’Darmstadt ∧ Beruf=’Programmierer’ (
Angestellte Abteilung))
{[a.Name, a.Gehalt, d.AbteilName]|a ∈ Angestellte ∧ d ∈
Abteilung ∧ a.AbteilNr = d.AbteilNr ∧ d.Ort =0
Darmstadt 0 ∧ a.beruf = ‘Programmierer 0 }
4 / 15
Aufgabe 1d)
Angestellte(PersonalNr, Name, Gehalt, Beruf, AbteilNr, ChefNr,
Wohnort)
Abteilung(AbteilNr, AbteilName, Ort)
Welche Angestellten verdienen mehr als ihre direkten Chefs?
πA.PersonalNr, A.Name (σA.Gehalt > B.Gehalt (
ρA (Angestellte) A.ChefNr = B.PersonalNr ρB (Angestellte)))
{a|a ∈ Angestellte ∧ ∃b ∈ Angestellte(a.ChefNr =
b.PersonalNr ∧ a.Gehalt > b.Gehalt)}
5 / 15
Aufgabe 1e)
Angestellte(PersonalNr, Name, Gehalt, Beruf, AbteilNr, ChefNr,
Wohnort)
Abteilung(AbteilNr, AbteilName, Ort)
Welche Abteilungen haben keine Angestellten?
πAbteilNr (Abteilung) \ πAbteilNr (Angestellte)
{d|d ∈ Abteilung ∧ ¬∃a ∈ Angestellte(d.AbteilNr = a.AbteilNr )}
6 / 15
Aufgabe 1f)
Angestellte(PersonalNr, Name, Gehalt, Beruf, AbteilNr, ChefNr,
Wohnort)
Abteilung(AbteilNr, AbteilName, Ort)
In welchen Abteilungen sind alle Berufe des Unternehmens vertreten?
(πAbteilNr, AbteilName, Beruf (Angestellte
πBeruf (Angestellte)
Abteilung))÷
{d|d ∈ Abteilung ∧ ∀x ∈ Angestellte (∃a ∈ Angestellte(x.Beruf =
a.Beruf ∧ a.AbteilNr = d.AbteilNr ))}
7 / 15
Aufgabe 2a)
Rebsorte
Wein
Jahrgang
{[Sorte, Name, Farbe]}
{[ID, Name, RSorte]}
{[WeinID, Jahr, Preis, Qualität]}
Geben die Farbe der Rebsorte Merlot an.
{[r .Farbe]|r ∈ Rebsorte ∧ r .Name = “Merlot00 }
8 / 15
Aufgabe 2b)
Rebsorte
Wein
Jahrgang
{[Sorte, Name, Farbe]}
{[ID, Name, RSorte]}
{[WeinID, Jahr, Preis, Qualität]}
Aus welcher Rebsorte ist der Wein mit dem Namen ”Bassermann-Jordan”
gemacht.
{[r .Name]|r ∈ Rebsorte ∧ ∃w ∈ Wein(
r .Sorte = w .RSorte ∧ w .Name = ”BJ 00 )}
9 / 15
Aufgabe 2c)
Rebsorte
Wein
Jahrgang
{[Sorte, Name, Farbe]}
{[ID, Name, RSorte]}
{[WeinID, Jahr, Preis, Qualität]}
Listen Sie den Namen und die Preise aller Riesling-Weine auf.
{[w .Name, j.Preis]|w ∈ Wein
∧j ∈ Jahrgang ∧ w .ID = j.WeinID ∧ ∃r ∈ Rebsorte(
r .Sorte = w .RSorte ∧ r .Name = ”Riesling00 )}
10 / 15
Aufgabe 2d)
Rebsorte
Wein
Jahrgang
{[Sorte, Name, Farbe]}
{[ID, Name, RSorte]}
{[WeinID, Jahr, Preis, Qualität]}
Für welche Rebsorten sind keine Weine in der Datenbank? Geben Sie deren
Namen an.
{[r .Name]|r ∈ Rebsorte ∧ ¬∃w ∈ Wein(r .Sorte = w .RSorte)}
11 / 15
Aufgabe 2e)
Rebsorte
Wein
Jahrgang
{[Sorte, Name, Farbe]}
{[ID, Name, RSorte]}
{[WeinID, Jahr, Preis, Qualität]}
Welche Weine haben ausschliesslich exzellente Qualität (Qualität = 1)?
Listen Sie deren IDs auf.
{[w .id]|w ∈ Wein∧∀j ∈ Jahrgang(w .ID = j.WeinID =⇒ j.Qualitaet = 1)}
12 / 15
Aufgabe 3
Geben Sie die Namen der Studenten an, die die Vorlesung ’Bioethik’
besuchen und alle Vorlesungen besucht haben, die direkt von dieser
Vorlesung vorausgesetzt werden.
Mit Allquantor:
{[s.Name] | s ∈ Studenten ∧ ∃h ∈ hören(s.MatrNr = h.MatrNr ∧
∃v ∈ Vorlesungen(h.VorlNr = v .VorlNr ∧
v .Titel =0 Bioethik 0 ∧ ∀vs ∈ voraussetzen
(vs.Nachfolger = v .VorlNr =⇒ ∃h2 ∈ hören(
h2.MatrNr = s.MatrNr
∧h2.VorlNr = vs.Vorg änger ))))}
13 / 15
Aufgabe 3
Verwende:
∀t ∈ R(P(t)) = ¬(∃t ∈ R(¬P(t)))
L =⇒ R = ¬L ∨ R
{[s.Name] | s ∈ Studenten ∧ ∃h ∈ hören(s.MatrNr = h.MatrNr ∧
∃v ∈ Vorlesungen(h.VorlNr = v .VorlNr ∧
v .Titel =0 Bioethik 0 ∧
¬(∃vs ∈ voraussetzen(¬(¬(vs.Nachfolger = v .VorlNr )
∨∃h2 ∈ hören(
h2.MatrNr = s.MatrNr ∧ h2.VorlNr = vs.Vorg änger ))))))}
14 / 15
Aufgabe 3
Mit de Morgans Regel ¬(L ∨ R) = ¬L ∧ ¬R:
{[s.Name] | s ∈ Studenten ∧ ∃h ∈ hören(s.MatrNr = h.MatrNr ∧
∃v ∈ Vorlesungen(h.VorlNr = v .VorlNr ∧
v .Titel =0 Bioethik 0
∧¬∃vs ∈ voraussetzen(vs.Nachfolger = v .VorlNr
∧¬(∃h2 ∈ hören(
h2.MatrNr = s.MatrNr ∧ h2.VorlNr = vs.Vorg änger )))))}
15 / 15
Herunterladen