2.3 Das Relationenkalkül Bisher Benutzung einer prozeduralen Anfragesprache Explizite Beschreibung, wie das Ergebnis berechnet wird Hoher Aufwand bei der Formulierung komplexer Anfragen Zugrundeliegende Idee beim Relationenkalkül Deklarative Beschreibung der Ergebnisrelation ohne dabei explizit eine Vorschrift für die Konstruktion der Ergebnisrelation zu geben. Zwei bekannte Kalküle Tupelkalkül und Domänenkalkül 79 Anfragesprachen Entwicklung einer Anfragesprache basierend auf dem Relationenkalkül Erheblich einfachere und kompaktere Formulierung komplexer Anfragen. SQL Sprache S h iistt eine i Mi Mischung h zwischen i h R Relationale l ti l Al Algebra b (RA) und dem Tupelkalkül (TK) Anfragen, die auf einem Relationenkalkül basieren Graphische Anfragesprache QBE (Query by Example) Anfragesprache von Microsoft Access Quel – Anfragesprache im Ingres-System Datalog Basiert auf Konzepten der Sprache Prolog Unterstützung von Rekursion 80 Grundlagen Prädikatenlogik g erster Stufe Konzept aus der mathematischen Logik Übertragung g g auf Datenbanken unter folgenden g Annahmen (Closed World Assumption): Tupel in der Datenbank sind elementare Aussagen, die 81 wahr sind. Anfragen sind Aussagen, die daraus hergeleitet werden können. können Aussagen, die nicht in der Datenbank sind und nicht hergeleitet g werden können,, sind falsch! Das Tupelkalkül Tupelkalkül p Variablen, die einem Tupel einer Relation entsprechen. Tupelvariable Einführungg einer Sprache Syntax Semantik Interpretation der Syntax 82 Syntax des Tupelkalküls Eine Formel setzt sich zusammen aus Atomen der Form r(t) 83 r ist eine Relation und t ist eine Tupelvariable mit t r. t[A] = u[B] t und u sind Tupelvariablen, Tupelvariablen A und B sind Attribute Attribute. t[A] = c t ist eine Tupelvariable, p , A ein Attribut und c eine Konstante aus dom(A). B i i l Beispiele: Personal(t), t[Fähigkeit] > 4, t[abtnr] = u[abtnr] Zusammengesetzte Formeln Eine Formel ist entweder ein Atom oder rekursiv durch folgende Ausdrücke definiert (Ann.: f und g sind Formeln): f g, f g, f, (f) t: f(t), f(t) t: f(t) t sind (freie) Variablen in der Formel f Beispiele t[Fähigkeit] > 4 (t[pnr] = u[pnr]) t[Fähigkeit] > 4 PMZuteilung(t) (t[pnr] = u[pnr]) t[Fähigkeit] > 4 t: t PMZuteilung(t) PMZ t il (t) (t[pnr] (t[ ] = u[pnr]) [ ]) v[Fähigkeit] [Fähi k it] > 4 84 Freie und gebundene Variablen Informell Durch Angabe eines Quantors direkt vor einer freien Variablen wird diese gebunden. Formale Definition Das Auftreten einer Tupelvariablen in einem Atom ist stets frei. Für f := g und f := (g) sind alle freien Variablen von g auch frei in f. Für f := g h und f := g h sind die Variablen in f frei,, falls sie in g oder h frei sind. Sei t eine freie Variable in g. Dann wird durch f := t: g(t), f:= t: g( g(t)) t zu einer g gebundenen Variable in f. Beispiel t: PMZuteilung(t) t[Fähigkeit] > 4 85 Ausdruck im Tupelkalkül Definition Ein Ausdruck des Tupelkalküls hat die Form {t | f(t)} wobei t die einzig freie Variable in der Formel f ist. 86 Substitution in einer Formel Sei f eine Formel mit einer freien Variable x. Dann ist f(t/x) die Substitution der Tupelvariable x in f durch das Tupel t. In jedem Atom Atom, das ein freies Auftreten von x enthält enthält, gehen wir folgendermaßen vor: 87 r(x) wird ersetzt durch “wahr”, falls t r. Andernfalls durch “falsch”. x[A] u[B] wird ersetzt durch c u[B] mit c = t[A] (Ann.: x s) x[A] c wird ersetzt durch “wahr”, falls t[A] c gilt. Andernfalls durch “falsch”. Durch Substitution gewinnt man eine Formel, die nur noch die Konstanten “wahr” und “falsch” sowie Atome mit gebundenen Variablen enthält. Beispiele Beispiel p Ausgangsformel f(t) := u: PMZuteilung(u) ˅ u[pnr] = t[pnr] ˅ u[Fähigkeit] [Fähi k it] < t[Fähigkeit] t[Fähi k it] Die Variable u ist gebunden und die Variable t frei. Ersetzen von t mit t[pnr] = 73 und t[Fähigkeit] = 5: u: PMZuteilung(u) ˅ u[pnr] = 73 ˅ u[Fähigkeit] < 5 Beispiele B i i l Ausgangsformel 88 PMZuteilung(u) ˅ u[pnr] = 73 ˅ u[Fähigkeit] < 5 Die Variable u ist frei. Ersetzen von u durch t mit t[pnr] = 51, t[mnr] = 93 und t[Fähigkeit] = 2: wahr ˅ falsch ˅ wahr Interpretation einer Formel Sei f eine Formel ohne freie Variablen. Die Interpretation I(f) ist wie folgt definiert: 89 Sei f = “wahr”. Dann ist I(f) := true. Sei f = “falsch”. Dann ist I(f) := false. Sei f = (g). Dann ist I(f) := I(g). Sei f = g. Dann ist I(f) := true genau dann, falls I(g) = false. Sei f = g h. h Dann ist I(f) := true genau dann dann, falls I(g) = true und I(h) = true. Sei f = g h. Dann ist I(f) := true genau dann, falls I(g) = true oder I(h) = true. t Sei f = x: f(x). Dann ist I(f) := true, falls es mindestens ein Tupel t gibt, so dass I(g(t/x)) = true ist. Andernfalls, I(f) := false Sei f = x: f(x). Dann ist I(f) := true genau dann, falls für alle t I(g(t/x))= true gilt. Andernfalls, I(f) := false. Der Wert des Ausdrucks { x | f(x) ( ) } des Tupelkalküls p besteht aus allen Tupeln t, die I(f(t/x)) = true erfüllen. Beispiele Anfragen g Finde alle Personalnummern von Angestellten, die an einer Maschine ausgebildet sind. {x | u: PMZuteilung(u) u[pnr] = x[pnr] } Finde alle Personalnummern der Angestellten, die an keiner Maschine genügend gut ausgebildet sind. { | u: PMZ {x PMZuteilung(u) t il ( ) u[Fähigkeit] [Fähi k it] > 4 u[pnr] = x[pnr] } Alle Tupel mit dem passenden Schema 90 Alle Tupel aus PMZuteilung Alle Tupel All T l aus PMZuteilung mit u[pnr] = 701 Kurzschreibweisen Einführungg von Kurzschreibweisen: Relation r und Formel f: t: r(f(t)) := t: r(t) f(t) Relation r und Formel f: t: r(f(t)) := t: r(t) f(t) Formeln f, f g: f g := f g Beispiel Berechne die pnr der Angestellten, die an keiner Maschine genügend gut ausgebildet sind. { u | t: PM-Zuteilung( u[pnr] = t[pnr] v: PM-Zuteilung(v[pnr] = t[pnr] v[Fähigkeit] > 4) ) } 91 Ausdrucksstärke der Sprache Satz Das Tupelkalkül (TK) ist ausdrucksstärker als die RA. Beweisidee Zeige g für die Operatoren der relationalen Algebra, g dass diese sich durch TK ausdrücken lassen. Projektion, Filter, Vereinigung, Minus, Kartesisches Produkt Umbenennung Produkt, Finde eine Anfrage, die sich in TK ausdrücken lässt, aber nicht in RA. { t | PMZuteilung(t)} 92 Praktische Relevanz Es können im TK Anfragen mit unendlich große Ergebnismenge formuliert werden. 93 Benutzer sind an solchen Ergebnissen nicht interessiert. Solche Anfragen sind nicht effizient zu berechnen. berechnen Leider ist das Problem, ob eine Anfrage eine endliche Ergebnismenge liefert, nicht entscheidbar. Sichere Ausdrücke Syntaktische Einschränkung auf Anfragen mit endlicher Ergebnismenge. Diese Anfragen werden als sichere Ausdrücke bezeichnet. Definition ist relativ komplex siehe das Buch „Datenmodelle Datenmodelle …“ von Vossen Sichere Ausdrücke kann man durch Anbinden der Tupelvariablen an Relationen erhalten erhalten. t: r(f(t)) t: r(f(t)) Dabei muss f ebenfalls eine sichere Formel sein. Satz 94 Das TK eingeschränkt auf sichere Ausdrücke hat die gleiche Mächtigkeit wie RA. RA 2.4 Erweiterung der relationalen Algebra Interessante Anfragen, g , die leider nicht in RA ausdrückbar sind. Berechne zu jeder Maschine die Anzahl von Personen, welche die Maschine bedienen können. Liefere die Ergebnisse sortiert. Was ist unser Problem? In I der d Mengensemantik M tik gibt ibt es keine k i Ordnung. Od Verdichten der Datensätze ist nicht möglich. Erhaltung von Duplikaten wird nicht untersützt. untersützt 95 Anforderung für zusätzliche Funktionen Unterstützungg für das Sortieren der Daten Unterstützung von Folgen Erhaltungg von Duplikaten p (z. ( B. die durch Projektion entstehen) Unterstützung von Multimengen (engl.: bags) Verdichtung der Daten einer Relation durch Aggregation Zusätzliche Operatoren in der relationalen Algebra 96 M-Relationen Informelle Vorgehensweise g In jeder Relation speichern wir uns zu jedem Tuepl noch zusätzlich die Vielfachheit des Tupels ab. Operationen der RA müssen noch erweitert erweitert, so dass jetzt die Multimengensemantik unterstützt wird. Formale Definition Sei V U (U ist das Universum der Attribute) mit dom(V) = |N. Zu ( ) eine einem Relationenschema RS ist die M-Relation r = r(RS) endliche Menge von totalen Abbildungen t mit t :RS {V } dom( A) N ARS 97 und t(A) ( ) dom(A) ( ) für f alle A RS S und t(V) ( ) N. Im Folgenden bezeichnet MREL(RS) die Menge aller MRelationen über dem Schema RS RS. Kartesisches Produkt Informell Die Häufigkeit im Ergebnis ergibt sich durch das Produkt der Häufigkeiten in den beiden M-Relationen. Beispiel Formale Definition Seien r1 MREL(RS1), r2 MREL(RS2) zwei M-Relationen mit RS1 RS2 = V. Die Ausgabe von r1 x r2 ist eine ((temporäre) p ) Relation s mit RELs = RS1 RS2 s = { t | t[RS1] r1[RS1] und t[RS2] r2[RS2] und t[V] = r1[V]*r2[V]} 98 Summenvereinigung Informell Die Zeilen von zwei Relationen werden vereinigt und die Häufigkeit ergibt sich aus der Summe der Ei Einzelhäufigkeiten lhä fi k it Beispiel Formale Definition Seien r1,r2 MREL(RS) zwei Relationen über dem gleichen Schema RS. Die Ausgabe von r1 r2 ist eine (temporäre) Relation s mit RELs = RS s = {t | t r1 oder t r2 und t[V] = r1[V] + r2[V] } 99 Multimengensemantik! Verallgemeinerung der Projektion Informell Statt einer Projektion sollen beliebige Funktionen erlaubt sein, die ein Tupel in ein anderes Tupel üb füh überführen ( Map-Operator M O t funktionaler f kti l Sprachen) S h ) „Formale“ F l “ Definition D fi iti Sei RS ein Schema und r MREL(RS) eine M-Relation. Weiterhin sei X ein Relationenschema und RS X eine Funktion, die zu einem Tupel aus r ein Tupel mit dem Schema X erzeugt. Dann gilt: RS = X uV s = { t | t[X] = (u[RS]) mit u r und t[V] = t RS u RS s 100 } Aggregation Motivation ot at o Berechnung wichtiger Kennzahlen einer Multimenge Summe (sum), Durchschnitt (avg), Anzahl (count), Minimum (min) und Maximum (max) von Bedeutung. Erweiterung der relationalen Algebra Eine Aggregationsfunktion f agg:MREL(RS) ( S) D berechnet zu einer Multi-Relation r MREL(RS) einen Wert aus einem Wertebereich D. Aggregationsfunktionen avgA(r), sumA(r), countA(r) liefern einen numerischen Wert zu einem Attribut A RS. Aggregationsfunktionen minA(r), maxA(r) den kleinsten bzw. größten Wert zu dem Attribut A RS. Die Operation count(r) liefert die Anzahl der Tupel in r. 101 Beispiele Berechne die Anzahl der Tupel p in der Relation PMZuteilung. count(PMZuteilung) Berechne die Anzahl der Angestellten, die eine Maschine bedienen können. countpnr(PMZuteilung) Berechne die durchschnittlichen Fähigkeiten der Mit b it Mitarbeiter avgFähigkeit(PMZuteilung) 102 Gruppierung Typischerweise yp werden Tabellen p partitioniert und für jede Partition ein Aggregat berechnet. Eine Partition ist eine Relation, die das gleiche Schema wie die Eingaberelation hat. Sei X RS und r MREL(RS). Für zwei Tupel t1,t2 r mit t1[X] = t2[X] gilt, gilt dass diese in der gleichen Partition der Relation liegen. Zu einer Aggregation (über einem ausgezeichneten 103 Attribut) wird nun für jede Partition eine Kennzahl berechnet. Diese Kennzahl wird zusammen mit den Werten der Partitionierungsattribute in der Ergebnisrelation eingetragen. Symbol: X, A1 agg1, A2 agg2, …, An aggN(r) Beispiele Berechne für jjede Maschine die Anzahl der Angestellten, welche die Maschine bedienen können. mnr, C count(PMZuteilung) Berechne für jeden Angestellten seine durchschnittliche Fähigkeiten eine Maschine zu bedienen. pnr, C avgFähigkeit(PMZuteilung) (PMZ t il ) Berechne B h den d Notenspiegel. N t i l 104 Zusammenfassung Tupelkalkül p Prädikatenlogik 1. Stufe Vergleich zu RA deklarative Formulierung von Anfragen TK ist ausdrucksstärker TK eingeschränkt i h ä kt aus sichere i h Ausdrucke A d k ist i t gleichmächtig l i h ä hti Erweiterung der RA Viele sinn sinnvolle olle Anfragen lassen sich nicht in RA ausdrücken. Aggregatberechnung gg g g Sortieren Unterstützung der Multimengensemantik 105
© Copyright 2024