• Keine Ergebnisse gefunden

Tutorübung zu Grundlagen Datenbanken

N/A
N/A
Protected

Academic year: 2022

Aktie "Tutorübung zu Grundlagen Datenbanken"

Copied!
27
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

David Dejori

Tutorübung zu Grundlagen Datenbanken

(2)

• Termin: 14.02.2020 (Valentinstag) von 16:00 bis 17:30

• Anmeldefenster: 18.11.2019 bis 15.01.2020

• Abmeldung bis zum 07.02.2020 möglich

• Alle 17 Prüfungsorte in Garching

Organisatorische Informationen zur Erstklausur

(3)

• In beiden Relationenkalkülen sind die folgenden Quantoren äquivalent einsetzbar:

– ∀

und

¬∃

¬∀

und

• Die Aussage innerhalb der runden Klammern muss beim Quantorwechsel negiert werden.

Finden Sie die Vorlesungen, die keine Hörer haben.

Tupelkalkül

{ v | v ∈ Vorlesungen ∧

¬∃

h ∈ hören

(

v.VorlNr

=

h.VorlNr

)

}

{ v | v ∈ Vorlesungen ∧

h ∈ hören

(

v.VorlNr

h.VorlNr

)

} Domänenkalkül

{ [v,t,s,g] | [v,t,s,g] ∈ Vorlesungen ∧

¬∃

m

(

[m,v]

hören

)

}

{ [v,t,s,g] | [v,t,s,g] ∈ Vorlesungen ∧

m

(

[m,v]

hören

)

}

Hinweise zum Tupel- und Domänenkalkül (1)

SQL unterstützt nur den (negierten) Existenzquantor

(4)

Korrekte Verwendung der Implikation im Domänenkalkül

Finden Sie die Studenten, die alle Vorlesungen hören.

{ [m,n,s] | [m,n,s] ∈ Studenten ∧

v,t,sws,g([v,t,sws,g]

Vorlesungen

[m,v]

hören) }

• Wenn im Domänenkalkül eine Aussage für alle (∀) Tupel einer Relation gelten soll und in den dazugehörigen runden Klammern zunächst überprüft werden muss, ob das Tupel überhaupt ein Element dieser Relation ist (∈), muss der Implikationsoperator (⇒)

verwendet werden, denn der Allquantor gibt wahr zurück, wenn die Aussage für alle Tupel wahr ist. Für Tupel, die keine Vorlesungen sind, müssen wir also wahr zurück geben.

← falsch

Hinweise zum Tupel- und Domänenkalkül (2)

A B A ∧ B

0 0 0

0 1 0

A B A ⇒ B

0 0 1

0 1 1

Tupel, die keine Vorlesungen sind

(5)

Alternative zur Implikation im Domänenkalkül: ¬∃ stattverwenden

• Dann muss der Undoperator (∧) statt des Implikationsoperators (⇒) verwendet werden.

{ [m,n,s] | [m,n,s] ∈ Studenten ∧

¬∃

v,t,sws,g([v,t,sws,g]

Vorlesungen

[m,v]

hören) }

• Wenn im Domänenkalkül eine Aussage für kein (¬∃) Tupel einer Relation gelten soll und in den dazugehörigen runden Klammern zunächst überprüft werden muss, ob das Tupel

überhaupt ein Element dieser Relation ist (∈), muss der Undoperator (∧) verwendet werden, denn der negierte Existenzquantor gibt wahr zurück, wenn die Aussage für alle Tupel falsch ist. Für Tupel, die keine Vorlesungen sind, müssen wir also falsch zurück geben.

← falsch

Hinweise zum Tupel- und Domänenkalkül (3)

A B A ∧ B

0 0 0

0 1 0

1 0 0

1 1 1

A B A ⇒ B

0 0 1

0 1 1

1 0 0

1 1 1

Tupel, die keine Vorlesungen sind

(6)

Negation einer Implikation

A ⇒ B ≡ ¬A ∨ B d. h.

¬(A ⇒ B) ≡ ¬(¬A ∨ B) ≡ A ∧ ¬B

• Negiert man eine Implikation, so bleibt die Voraussetzung A unverändert.

Finden Sie die Vorlesungen, die keine Hörer haben.

{ [m,n,s] | [m,n,s] ∈ Studenten ∧

v,t,sws,g ([v,t,sws,g]

Vorlesungen

[m,v]

hören) } { [m,n,s] | [m,n,s] ∈ Studenten ∧

¬∃

v,t,sws,g ([v,t,sws,g]

Vorlesungen

[m,v]

hören) }

Hinweise zum Tupel- und Domänenkalkül (4)

bleibt unverändert

(7)

Gebundene und freie Variablen

Quantifizierte Variablen (

x

und

x

) sind gebunden und nur innerhalb der dazugehörigen runden Klammern definiert. Alle anderen Variablen sind frei und global definiert.

Tupelkalkül

{ s | s ∈ Studenten ∧

h ∈ hören (s.MatrNr = h.MatrNr

v ∈ Vorlesungen (h.VorlNr = v.VorlNr

p ∈ Professoren (v.gelesenVon = p.PersNr ∧ p.Name = ‘Pythagoras’))) }

Domänenkalkül { [m, n] |

s ([m, n, s] ∈ Studenten ∧

v, p, g ([m, v, p, g] ∈ prüfen ∧

a, rg, rm ([p, a, rg, rm] ∈ Professoren ∧ a = ‘Sokrates’))) }

Hinweise zum Tupel- und Domänenkalkül (5)

(8)

• Groß-/Kleinschreibung der Namen von Relationen und Attributen ist irrelevant gelesenvon = gelesenVon = Gelesenvon = GelesenVon

• Umlaute können in den Namen von Relationen und Attributen verwendet werden hoeren = hören pruefen = prüfen

• Der Operatorbaum darf von unten nach oben sowie von oben nach unten gezeichnet werden

• Darf man statt

{ … ∧ ∃ a, rg, rm ([p, a, rg, rm] ∈ Professoren ∧ a = ‘Sokrates’))) } { … ∧ ∃ rg, rm ([p, ‘Sokrates’, rg, rm] ∈ Professoren))) }

schreiben? Nein.

Hinweise zur Notation in der Klausur

(9)

Gegeben sei folgende Anfrage auf dem bekannten Universitätschema:

Gesucht sind die Professoren, deren sämtliche Vorlesungen nur auf selbst gelesenen (direkten) Vorgängern aufbauen.

Formulieren Sie die Anfrage i. in der Relationenalgebra;

ii. im Tupelkalkül; und iii. im Domänenkalkül.

Hinweis: Damit sind auch Professoren, die nur Vorlesungen ohne Vorgänger lesen, sowie Professoren, die überhaupt keine Vorlesung lesen, Teil der Ergebnismenge.

Hausaufgabe 1

(10)

Gesucht sind die Professoren, deren sämtliche Vorlesungen nur auf selbst gelesenen (direkten) Vorgängern aufbauen.

Formulieren Sie die Anfrage in der Relationenalgebra.

Hausaufgabe 1 (i)

Vorlesungen aller

Professoren Vorgänger-

vorlesungen mit VorlNr ihrer

Nachfolger Vorgänger-/Nachfolger-

vorlesungen, welche von unterschiedlichen

Professoren gelesen werden

Professoren, die Vorlesungen anderer Professoren voraussetzen

(11)

Gesucht sind die Professoren, deren sämtliche Vorlesungen nur auf selbst gelesenen (direkten) Vorgängern aufbauen.

Formulieren Sie die Anfrage im Tupelkalkül.

{ p | p ∈ Professoren

¬∃ v1 ∈ Vorlesungen (v1.gelesenVon = p.PersNr Es existiert keine Vorlesung,

∧ ∃ vo ∈ voraussetzen (v1.VorlNr = vo.Nachfolger welche eine Nachfolgervorlesung ist

∧ ∃ v2 ∈ Vorlesungen (vo.Vorgänger = v2.VorlNr und dessen Vorgängervorlesung von

∧ v2.gelesenVon ≠ p.PersNr))) } einem anderen Professor gelesen wird.

oder

{ p | p ∈ Professoren

∧ ∀ v1 ∈ Vorlesungen (v1.gelesenVon = p.PersNr ⇒

∀ vo ∈ voraussetzen (vo.Nachfolger = v1.VorlNr ⇒

∃ v2 ∈ Vorlesungen (vo.Vorgaenger = v2.VorlNr ∧ v2.gelesenVon = p.PersNr))) }

Hausaufgabe 1 (ii)

(12)

Gesucht sind die Professoren, deren sämtliche Vorlesungen nur auf selbst gelesenen (direkten) Vorgängern aufbauen.

Formulieren Sie die Anfrage im Domänenkalkül.

{ [p, n] |

∃ rg, rm ([p, n, rg, rm] ∈ Professoren ∧

∀ na, t1, sws1 ([na, t1, sws1, p] ∈ Vorlesungen ⇒ Für alle Vorlesungen eines Professors gilt,

∀ vo ([vo, na] ∈ voraussetzen ⇒ dass alle deren Vorgänger

∃ t2, sws2 ([vo, t2, sws2, p] ∈ Vorlesungen)))) } eine Vorlesung desselben Professors sind.

Hausaufgabe 1 (iii)

(13)

Anwesenheitskontrolle

(14)

Gegeben sei folgende Anfrage auf dem bekannten Universitätschema:

Gesucht sind die Namen aller Studenten, die genau alle dreistündigen Vorlesungen gehört haben und die zugehörige Prüfung bestanden haben.

Hinweis: Beachten Sie, dass die Studenten, die Vorlesungen gehört haben oder in

Vorlesungen geprüft wurden, die nicht 3 SWS haben, nicht im Ergebnis enthalten sein sollen.

a) Geben Sie an, welche Tupel man dem Unischema mindestens hinzufügen müsste, sodass die Ergebnismenge der obigen Anfrage nicht leer ist.

b) Formulieren Sie die oben genannte Anfrage in Relationenalgebra, im Tupelkalkül und im Domänenkalkül.

Hausaufgabe 2

(15)

Gesucht sind die Namen aller Studenten, die genau alle dreistündigen Vorlesungen gehört haben und die zugehörige Prüfung bestanden haben.

Geben Sie an, welche Tupel man dem Unischema mindestens hinzufügen müsste, sodass die Ergebnismenge der obigen Anfrage nicht leer ist.

Dreistündige Vorlesungen: Erkenntnistheorie (5043) und Wissenschaftstheorie (5052), beide von Professor Russel (2126) gelesen.

Studenten, die in Frage kommen: Aristoxenos (26830) und Xenokrates (24002)

Alle anderen Studenten haben entweder eine andere Vorlesung gehört oder wurden in jener geprüft.

Tupel, die eingefügt werden müssen; hier beispielhaft für den Studenten Xenokrates.

(24002, 5043) und (24002, 5052) in hören

(24002, 5043, 2126, note) und (24002, 5052, 2126, note) in prüfen

wobei 1 ≤ note ≤ 4

Hausaufgabe 2 (a)

(16)

Gesucht sind die Namen aller Studenten, die genau alle dreistündigen Vorlesungen gehört haben und die zugehörige Prüfung bestanden haben.

Formulieren Sie die oben genannte Anfrage:

i. in Relationenalgebra;

ii. im Tupelkalkül; und iii. im Domänenkalkül.

Hausaufgabe 2 (b)

(17)

Gesucht sind die Namen aller Studenten, die genau alle dreistündigen Vorlesungen gehört haben und die zugehörige Prüfung bestanden haben.

Formulieren Sie die oben genannte Anfrage in Relationenalgebra.

Hausaufgabe 2 (b) (i)

Matrikelnummern der Studenten, die alle dreistündigen

Vorlesungen gehört haben und die zugehörige Prüfung bestanden haben

Matrikelnummern der Studenten, die eine Vorlesung gehört haben, die nicht drei SWS hat oder eine Prüfung zu einer solchen Vorlesung absolviert haben

(18)

Gesucht sind die Namen aller Studenten, die genau alle dreistündigen Vorlesungen gehört haben und die zugehörige Prüfung bestanden haben.

Formulieren Sie die oben genannte Anfrage im Tupelkalkül.

{ [s.Name] | s ∈ Studenten

∧ ∀ v ∈ Vorlesungen (v.SWS = 3 ⇒

∃ h ∈ hoeren (h.MatrNr = s.MatrNr ∧ h.VorlNr = v.VorlNr

∧ ∃ p ∈ pruefen (p.MatrNr = s.MatrNr ∧ p.VorlNr = v.VorlNr ∧ p.Note ≤ 4)))

∧ ∀ v ∈ Vorlesungen (v.SWS ≠ 3 ⇒ (

¬∃ h ∈ hoeren (h.MatrNr = s.MatrNr ∧ h.VorlNr = v.VorlNr)

¬∃ p ∈ pruefen (p.MatrNr = s.MatrNr ∧ p.VorlNr = v.VorlNr))) }

Hausaufgabe 2 (b) (ii)

(19)

Gesucht sind die Namen aller Studenten, die genau alle dreistündigen Vorlesungen gehört haben und die zugehörige Prüfung bestanden haben.

Formulieren Sie die oben genannte Anfrage im Domänenkalkül.

{ [n] | ∃ m, s([m, n, s] ∈ Studenten ∧ ∀ v, t, sws, g ( (

([v, t, sws, g] ∈ Vorlesungen ∧ sws = 3) ⇒

([m, v] ∈ hoeren ∧ ∃ p, no ([m, v, p, no] ∈ pruefen ∧ no ≤ 4)) ) ∧ (

([v, t, sws, g] ∈ Vorlesungen ∧ sws ≠ 3) ⇒

([m, v] ∉ hoeren ∧ ¬∃ p, no ([m, v, p, no] ∈ pruefen)) )

) }

Hausaufgabe 2 (b) (iii)

(20)

Gegeben sei das Unischema mit der folgenden, zusätzlichen Relation.

StudienPlan: {[Semester, VorlNr]}

a) Bestimmen Sie in relationaler Algebra die Studenten, die alle für ihr Semester vorgesehenen Vorlesungen hören.

b) Bestimmen Sie im Tupelkalkül alle Studenten, die nur Vorlesungen ihres Semesters hören (nicht notwendigerweise alle).

Hausaufgabe 3

(21)

Gegeben sei das Unischema mit der folgenden, zusätzlichen Relation.

StudienPlan: {[Semester, VorlNr]}

Bestimmen Sie in relationaler Algebra die Studenten, die alle für ihr Semester vorgesehenen Vorlesungen hören.

Hausaufgabe 3 (a)

(22)

Gegeben sei das Unischema mit der folgenden, zusätzlichen Relation.

StudienPlan: {[Semester, VorlNr]}

Bestimmen Sie im Tupelkalkül alle Studenten, die nur Vorlesungen ihres Semesters hören (nicht notwendigerweise alle).

{ s | s ∈ Studenten

h ∈ hoeren (s.MatrNr = h.MatrNr

∃ sp ∈ Studienplan (sp.VorlNr = h.VorlNr ∧ sp.Semester = s.Semester)) }

Hausaufgabe 3 (b)

Natürliche Joins

Allquantor erfordert Implikation

(23)

Gegeben seien die beiden Relationen R: {[a,b]} und S: {[b,c]}. Ersetzen Sie den folgenden Ausdruck der relationalen Algebra durch einen äquivalenten, in dem keine Joins vorkommen.

Für diese Aufgabe zählt das Kreuzprodukt (✕) nicht als Join.

R ▷ S

Hinweis: ▷ bezeichnet den linken Anti-Join, welcher alle Tupel aus R in die Ergebnismenge aufnimmt, für die es keinen Joinpartner in S gibt.

Hausaufgabe 4

(24)

Gegeben seien die beiden Relationen R: {[a,b]} und S: {[b,c]}. Ersetzen Sie den folgenden Ausdruck der relationalen Algebra durch einen äquivalenten, in dem keine Joins vorkommen.

Für diese Aufgabe zählt das Kreuzprodukt (✕) nicht als Join.

R ▷ S

Hinweis: ▷ bezeichnet den linken Anti-Join, welcher alle Tupel aus R in die Ergebnismenge aufnimmt, für die es keinen Joinpartner in S gibt.

Hausaufgabe 4

(25)

Gegeben sei die folgende Relation Zehnkampf mit Athletennamen und den von ihnen erreichten Punkten im Zehnkampf:

a) Ermitteln Sie die Goldmedaillengewinner in relationaler Algebra. Eine Goldmedaille bekommen alle, für die gilt: es gibt niemand besseren (also mit mehr Punkten).

b) Ermitteln Sie die Silbermedaillengewinner im Tupelkalkül. Eine Silbermedaille bekommen alle, für die gilt: es gibt genau eine/n bessere/n.

Hausaufgabe 5

(26)

Ermitteln Sie die Goldmedaillengewinner in relationaler Algebra. Eine Goldmedaille bekommen alle, für die gilt: es gibt niemand besseren (also mit mehr Punkten).

Hausaufgabe 5 (a)

(27)

Ermitteln Sie die Silbermedaillengewinner im Tupelkalkül. Eine Silbermedaille bekommen alle, für die gilt: es gibt genau eine/n bessere/n.

{ k | k ∈ Zehnkampf

∧ ∃kgold ∈ Zehnkampf ( kgold.Punkte > k.Punkte

∧ ∀ kandere ∈ Zehnkampf (

kandere.Punkte ≥ kgold.Punkte ⇒ kandere.Name = kgold.Name)

¬∃kzwischen ∈ Zehnkampf (kzwischen.Punkte > k.Punkte

∧ kzwischen.Punkte < kgold.Punkte)) }

Hausaufgabe 5 (b)

Referenzen

ÄHNLICHE DOKUMENTE

d) Geben Sie die Namen aller Assistenten an, deren Boss mindestens eine Vorlesung geprüft hat. e) Geben Sie die Titel der direkten Voraussetzungen für die Vorlesung

a) Geben Sie einen Ausdruck an, der die Relation ¬hoeren erzeugt. Diese enthält für jeden Studenten und jede Vorlesung, die der Student nicht hört einen Eintrag mit.. Matrikelnummer

• 1-zu-N-Beziehungen werden in eine Relation übersetzt, indem man den Schlüssel der N-Entität als neuen Primärschlüssel wählt und den Schlüssel der 1-Entität als normales

(f) Bestimmen Sie für jede Vorlesung wie viele Studenten diese hören.. Geben Sie auch Vorle- sungen ohne

Das bedeutet also, dass Kunden gelöscht werden können, ihre Bestellungen aber anonymisiert im System gespeichert bleiben.. (d) Fügen Sie Ihrer Datenbank nun mittels DML-Anweisungen

(ii) WITH-Abfrage für die Gesamtanzahl an Studenten erstellen (iii) Durchschnitt der SWS =

Bestimmen Sie, wie in der Vorlesung gezeigt, den optimalen Ausführungsplan als Baum mit Kosten-/Kardinalitätsabschätzungen mithilfe von dynamischem Programmieren.. Wofür stehen

SQL-92 spezifiziert mehrere Konsistenzstufen (isolation level) durch welche der Benutzer (bzw. die Anwendung) festlegen kann, wie stark eine Transaktion von anderen parallel