220 likes | 543 Views
Übung Datenbanksysteme Tupel- und Domänenkalkül. 20.11.2002. Relationenkalküle. „Abfragesprachen“ für das relationale Modell Unterschied zu relationaler Algebra ? Deklarativer Ansatz vs Operationeller Ansatz Anders formuliert: Beschreibung des Ergebnisses vs
E N D
Relationenkalküle „Abfragesprachen“ für das relationale Modell Unterschied zu relationaler Algebra ? Deklarativer Ansatz vs Operationeller Ansatz Anders formuliert: Beschreibung des Ergebnisses vs Beschreibung des Lösungsweges
Tupelkalkül vs. Domänenkalkül Gemeinsam: Prädikate über Relationen {t|P(t)} Stark vereinfachte Vorstellung: P(ti) = true => ti ist im Ergebnis Tupelkalkül: • Verwendet (ganze) Tupel als Basis Domänenkalkül: • Verwendet Domänen für einzelnen Spalten
Aufgabe 1: Finden Sie alle Stationen { s | s Station } Ergebnisvariable Wird bestimmt durch S kommt aus Relation Station Aufgabe 1:Tupelkalkül Bei der (naiven) Auswertung (einfach Relation durchlaufen): Alle Tupel sind true, Alle Tupel sind im Ergebnis
Aufgabe 1b) Finden sie die Benennung aller Rabatte und Aufschläge { [r.Benennung] | r Î Rabatt_Aufschlag } [] erstellen neues Tupel r.Spalte projiziert auf einzelne Spalte eines Tupel Auswahl wie bei a)
Aufgabe 1c Finden Sie alle Tickets, die mehr als 100 Euro kosten {t | t Î Ticket Ù t.Preis > 100} Variablenbestimmung Relationenauswahl wie bisher Logische Verknüpfung Einschränkung der Werte einer Spalte
Aufgabe1d Finden Sie die Abfahrtzeit und die Zugnummer aller Verbindungen, die vormittags von München nach Augsburg gehen • {[v.Abfahrtszeit, v.Zug]| • vÎ Verbindung • v.fährt_von = „München“ • v.fährt_nach = „Augsburg“ Ù v.Abfahrt < 12:00} Auswahl von 2 Spalten Basisrelation (wie üblich) Festlegung einzelner Einschränkungen Mit logischen undverknüpft
Aufgabe 1e Finden Sie alle Züge, die eine Verbindung von München nach Augsburg enthalten • {z | zÎZug Ù • v ÎVerbindung ( v.fährt_von = „München“ Ùv.fährt_nach = „Augsburg“Ù v.Zugnummer= z.Zugnummer )} Basisrelation Es gibt mindestens ein Element bei Verbindung Einschränkungen in Verbindung Beziehung zwischen Zug und Verbindung => Join
Aufgabe 1f Finden Sie einen Rabatt oder Aufschlag, der von keinem anderen abhängt und keinen anderen ausschließt. • Basisrelation • Einschränkung auf „ist nicht definiert“ • Negative Existenzquantifizierung • Es keine gibt keine Elemente in Schliesst_aus, bei denen das aktuelle Tupel etwas ausschließt {r | r Î Aufschlag_Rabatt Ù r.setzt_voraus = ^ ÙØ$ n Î Schliesst_aus (n.Ausschliessender = r.Benennung)}
Aufgabe 1g Finden Sie den Namen der Züge, die sowohl einen Speisewagen haben, als auch Raucherplätze am Fenster in der ersten Klasse. • {[z.Name] | zÎ Fernzug Ù • z.Speisewagen=true Ù • wÎ Wagen( w.Zugnummer = z.Zugnummer Ù • p Î Platz( p.Wagennummer=w.Wagennummer Ù p.Raucher=true Ù p.Fenster=true Ù p.Klasse=1 ))} Basisrelation, Projektion Lokale Einschränkung Verknüpfung mit Wagen Verknüpfung mit Platz Selektion bei Platz
Aufgabe 1h Finden die Zugnummern und die Abfahrtszeiten aller Züge, die von München nach Hamburg fahren. Hilfsannahme: Nur am selben Tag {[z.Zugnummer,v1.Abfahrt] | zÎZug Ùv1 Î VerbindungÙ v1.Zugnummer=z.ZugnummerÙ v1.fährt_von=“München“Ù $v2 ÎVerbindung( v2.Zugnummer=z.Zugnummer Ù v2.fährt_nach=“Hamburg“ Ù(v2.Ankunft > v1.Abfahrt Ù v2.Tag = v1.Tag)))} Projektion aus zwei Quellen Verknüpfung Lokale Selektion Verknüpfung Lokale Selektion Einschränkung zwischen Relationen
Aufgabe 1i) Finden Sie alle freien (nicht reservierten) Plätze mit Wagennummer auf der Verbindung von Augsburg nach München im ICE (Fernzug) „Berthold Brecht“, Abfahrt 16:37 am Montag, den 2.12.2002. {[p.Wagennummer, p.Platznummer]}| p Î PlatzÙ $ w Î Wagen (w.Wagennummer=p.Wagennummer) Ù $ z Î Fernzug(z.Name=“Berthold Brecht“ Ù z.Zugnummer=w.Zugnummer) Ù Ø$resÎreserviert (p.Platznummer=res.PlatznummerÙp.Wagennummer = res.WagennummerÙz.Zugnummer=res.ZugnummerÙ res.fährt_von=“Augsburg“Ùres. fährt_nach=“München“ Ùres.Abfahrt=“16:37“Ù res.Tag=“2.12.2002)))}
Aufgabe 1: Finden Sie alle Stationen {[s] | [s]ÎStation } Ergebnis muss aus Spaltenvariable aufgebaut werden S ist Teil eines Tupels, das Element von Station ist Aufgabe 1:Domänenkalkül
Aufgabe 2b) Finden sie die Benennung aller Rabatte und Aufschläge {[n]| • e,b,s ( [n,e,b,s] Î Rabatt_Aufschlag } • Ergebnis wie bisher • Wir brauchen komplettes Tupel • Gebundene Variablen • Tupel konstruieren • Reihenfolge erhalten
Aufgabe 2c Finden Sie alle Tickets, die mehr als 100 Euro kosten {[p,t]| [p,t] Î Ticket Ù p > 100} Ergebnis & Grundrelation Logische Beschränkung
Aufgabe 2d Finden Sie die Abfahrtzeit und die Zugnummer aller Verbindungen, die vormittags von München nach Augsburg gehen Projektion Gebundene Variablen für komplettes Tupel aus Basisrelation Selektionen {[ab,z] | $ an,d, von, nach ([an,ab,d,von,nach,z] Î Verbindung Ù von=“München“ Ù nach=“Augsburg“ Ù ab < „12:00“ )}
Aufgabe 2e Finden Sie alle Züge, die eine Verbindung von München nach Augsburg enthalten {[z]| [z] Î Zug Ù $ ab,an,d,von,nach ([an,ab,d,von,nach,z]Î Verbindung Ù von=“München“ Ù nach=“Augsburg“)} Verknüpfung implizitdurch Benutzung der selben Variable
Aufgabe 2f Finden Sie einen Rabatt oder Aufschlag, der von keinem anderen abhängt und keinen anderen ausschließt. {[n,e,b,sv]|[n,e,b,sv] Î Rabatt_Aufschlag Ù sv = ^ Ù Ø $ ag ( [n,ag] ÎSchliesst_aus )}
Aufgabe 2g Finden Sie den Namen der Züge, die sowohl einen Speisewagen haben, als auch Raucherplätze am Fenster in der ersten Klasse. {[n]|$ z,sp ( [z,sp,n] Î Fernzug Ù sp=true Ù$ wn, pos ([wn, z, pos] Î Wagen Ù $ pn, kl, r, f ([wn,pn,kl,r,f] Î Platz Ù kl=1 Ù f=true Ù r=true)))}
Aufgabe 2h Finden die Zugnummern und die Abfahrtszeiten aller Züge, die von München nach Hamburg fahren. • {[z,ab1]|[z] Î Zug Ù • $an1,d,von1,nach1 ( • [an1,ab1, d,von1,nach1,z] ÎVerbindung Ù • von1=“München“ Ù • an2, ab2, von2,nach2( [an2,ab2,d,von2,nach2,z] ÎVerbindung Ù nach2 = „Hamburg“ Ù (an2 > ab1))}
Aufgabe 2i) Finden Sie alle freien (nicht reservierten) Plätze mit Wagennummer auf der Verbindung von Augsburg nach München im ICE (Fernzug) „Berthold Brecht“, Abfahrt 16:37 am Montag, den 2.12.2002. {[wn,pn]| $ kl,f,r ([wn,pn,kl,r,f] Î Platz Ù$ zn,pos ([wn,zn,pos]Î Wagen Ù$ sp,name,ben ([zn,sp,name, ben] Î FernZug Ù name = „Berthold Brecht“ ÙØ$tn, an, ab,d,von, nach,p [tn,an,ab,d,von,nach,zn,wn,pn,p] Î reserviert Ù von=„Augsburg“ Ù nach=“München“ Ù ab=“16:37“ Ù d=“2.12.2002“)))}