Anfragesprachen und Anfragebearbeitung Kapitel 5 Anfragesprachen und Anfragebearbeitung – Kapitel 5 – © 2002 Prof. Dr. Rainer Manthey Informationssysteme Anfragesprachen 1 Kapitel 5 Anfragesprachen und Anfragebearbeitung – Kapitel 5 – 5.1 Anfragesprachen © 2002 Prof. Dr. Rainer Manthey Informationssysteme 2 Übersicht Kapitel 5 • Bereits in Kapitel 2 und 3 wurden verschiedene relationale Anfragesprachen vorgestellt: • SQL, als am weitesten verbreitete Sprache für kommerzielle relationale Systeme • QBE, als graphische Alternative zu SQL im Access-System • in Grundzügen: die Relationenalgebra, als Grundlage von SQL • in diesem Kapitel: zusammenfassende und grundsätzliche Behandlung der Problematik, relationale Anfragen zu formulieren • bereits von Codd 1970 vorgeschlagen: zwei "theoretische", grundlegende Ansätze • konkret, implementierungsnah: Relationenalgebra • abstrakt, logikbasiert: Relationenkalkül(e) • in der Praxis: verschiedene relationale Sprachen, die weitgehend auf Kalkülen basieren • aktuell noch im Gebrauch in kommerziellen Systemen: SQL, QBE • nur noch von historischem Interesse: Quel • vorwiegend in der Forschung verwendet: Datalog © 2002 Prof. Dr. Rainer Manthey Informationssysteme Relationale Algebra 3 Kapitel 5 5.1.1 Relationale Algebra © 2002 Prof. Dr. Rainer Manthey Informationssysteme 4 Relationenalgebra: Übersicht Kapitel 5 • Die Grundlagen der Relationenalgebra wurden bereits in einem kurzen Einschub im Rahmen von Kapitel 2 gelegt: • allg. Mengenoperatoren: ∪, ∩, , × • spezielle Operatoren für Tupelmengen: π, σ, • pragmatische Motivation für eine derartige Sprache: • In DB muss Zugriff auf grosse Datenmengen im Sekundärspeicher organisiert werden. • Der Datentransfer in den Hauptspeicher erfolgt dabei seitenweise. • Dafür sind Mengenoperatoren erforderlich. • Große Zwischenergebnisse müssen oft im Sekundärspeicher zwischengespeichert werden, was ein Auslagern ganzer Relationen erfordert. • Dazu sind Operatoren erforderlich, die Relationen auf Relationen abbilden. • in diesem Abschnitt: Einführung weiterer Algebraoperatoren © 2002 Prof. Dr. Rainer Manthey Informationssysteme Joinvarianten 5 Kapitel 5 • wichtigste Operation zum "Navigieren" zwichen verschiedenen Relationen: relationaler Verbund (Join) • bisher kennen gelernt: zwei Varianten • natürlicher Verbund (natural join) • äusserer Verbund (outer join, nur im Rahmen vom SQL) • Die Relationenalgebra kennt aber noch diverse weitere Joinvarianten: • Theta-Join • Semi-Join • Complement-Join • Grundform aller Join-Formen: sogenannter Θ - Join (Theta-Join, griech. Buchstabe) • Θ : Meta-Variable für beliebige Vergleichsbedingung • natürlicher Verbund: spezielle Form mit Vergleichsoperator '= =' • Prinzip aller Θ - Joins: Kombination aus Kreuzprodukt und Selektion R © 2002 Prof. Dr. Rainer Manthey Θ S := = σΘ (R × S) Informationssysteme 6 Theta-Join Kapitel 5 • Unterschiede zwischen Theta-Join und "natural join": • keine automatische Selektion attributgleicher Tupel • keine automatische Projektion auf "relevante" Spalten • Beispiel für Theta-Join: R R A B 1 3 2 a b a S B C 5 0 1 2 1 1 Θ S mit Θ = (R.A ≤ S.C ∧ S.B > 0) A R.B S.B C 1 1 2 a a a 5 1 5 2 1 2 • Joinbedingungen Θ sind aufgebaut wie Selektionsbedingungen. • Theta-Join und natürlicher Verbund sind kommutativ und assoziativ, d.h. die Klammerungsreihenfolge bei Mehrfach-Joins ist im Prinzip unwesentlich. © 2002 Prof. Dr. Rainer Manthey Informationssysteme 7 Semi-Join Kapitel 5 • Alle anderen Join-Varianten sind ebenfalls in zwei Formen definiert: • mit expliziter Join-Bedingung: jeweils als Variante des Θ - Join • ohne explizite Join-Bedingung: jeweils als Variante des natural join • im folgenden: stets natural join-Variante; Θ - Join analog • Semi-Join (lat. "semi": halb): • Teilrelationenbildung eines der beiden Join-Operanden • zwei Varianten: linker und rechter Semi-Join • Nur diejenigen Tupel des ausgewählten Joinoperanden werden ausgewählt, die "einen Joinpartner" besitzen. • symbolische Notation: R S (linker Semi-Join, rechter analog) • Beispiel: (natürlicher) linker Semi-Join R R A B 1 3 2 2 1 5 © 2002 Prof. Dr. Rainer Manthey S B C 5 2 2 2 1 1 S Informationssysteme R S A B 1 2 2 5 8 Complement-Join Kapitel 5 • "vergessene" Operation (von Codd nicht eingeführt und in Lehrbüchern meist nicht erwähnt): Complement-(Semi-)Join (eingeführt in einer Arbeit von Bry 1989) • Tupel aus einem der beiden Operanden werden ausgewählt, die keinen Joinpartner besitzen. • Notation: • Beispiel: R R S A B 1 3 2 2 1 5 S B C 5 2 2 2 1 1 R S A B 3 1 • Semi-Join und Complement-Join sind - wie alle Joinvarianten - ableitbar. • Semi-Join, Complement-Join und Outer Join sind nícht kommutativ ! © 2002 Prof. Dr. Rainer Manthey Informationssysteme Division 9 Kapitel 5 • letzte (und komplizierteste) Algebraoperation: Division • Notation: R ÷ S • Idee: abgeleiteter Operator zur "komfortableren" Notation von Anfragen, die eine Allquantifizierung erfordern • Beispiel: Welche Flüsse fliessen durch alle Bundesländer ? fluss_durch_land ÷ ρName ← Land(π πName(land)) • Darstellung mit Division: • πFluss (R) × S) − R) Darstellung ohne Division: πFluss (R) − πFluss ((π mit R := = fluss_durch_land S := = ρName ← Land(π πName(land)) • Voraussetzung: Alle Attribute von S sind auch Attribute von R. • Schema der Ergebnisrelation: attr(R) − attr(S) © 2002 Prof. Dr. Rainer Manthey Informationssysteme 10 Division (2) Kapitel 5 • Prinzip der Division am abstrakten Beispiel: R • • A B a a a b b 1 2 3 2 3 S R ÷ S B A 1 2 a Nur 'a' kommt kombiniert mit allen S-Tupeln in R vor ! präzise Definition der Division: R ÷ S := = π attr(R) − attr(S) (R) − π attr(R) − π attr(R) − attr(S) (R) × attr(S) ((π S) − R) Idee dabei: • Nenne die Projektion von R auf alle "Nicht-S-Attribute" R' ! • • • • R'' sei das Produkt von R' und S: R'' enthält alle möglichen Kombinationen aller R'-Tupel mit allen S-Tupeln und hat dasselbe Schema wie R ! Ziehe von R'' wieder R ab, um damit alle R-Tupel zu bestimmen, deren R'-Anteil nicht mit allen S-Tupeln kombiniert ist ! Nenne das Resultat R'''! Projiziere R''' auf die "Nicht-S-Attribute" und ziehe nochmal R' davon ab! Übrig bleiben die Nicht-S-Werte derjenigen R'-Tupel, die nicht mit allen S-Tupeln kombiniert in R vorkommen. © 2002 Prof. Dr. Rainer Manthey Informationssysteme 11 Division (3) Kapitel 5 Anwendung der Definition auf das Beispiel: R A B a a a b b 1 2 3 2 3 S R ÷ S B 1 2 a R' R'' R' R ÷ S := = π attr(R) − R' attr(S) (R) − π attr(R) − R''' π attr(R) − attr(S) (R) × attr(S) ((π S) − R) A a b S A B 1 2 © 2002 Prof. Dr. Rainer Manthey R'' A A B a a b b 1 2 1 2 a R''' Informationssysteme A B b 1 12 Relationale Kalküle Kapitel 5 5.1.2 Relationale Kalküle © 2002 Prof. Dr. Rainer Manthey Informationssysteme Relationenkalküle: Übersicht 13 Kapitel 5 • Alternative zur RA: Formulierung von Anfragen durch logische Terme und Formeln • wesentlicher Unterschied: Logiksprachen sind "deskriptiver" als algebraische Sprachen; Abarbeitungsreihenfolge ist aus Formeln meist nicht ersichtlich. • In Codd's grundlegender Arbeit wurden zwei logische Kalküle für relationale Datenbanken vorgeschlagen, die heute die Grundlage der meisten "konkreten" Anfragesprachen bilden: Tupelkalkül (engl.: "tuple relational calculus", TRC) Bereichskalkül (engl.: "domain relational calculus", DRC) bei Kemper/Eickler daher auch: Domänenkalkül © 2002 Prof. Dr. Rainer Manthey Informationssysteme 14 Relationenkalküle: Vergleich Kapitel 5 Welche Studenten studieren länger als 9 Semester ? Tupelkalkül: • nicht-positionell • Variablen für Tupel • Attribute als Funktionssymbole • Relationsnamen als Mengentypen { [ s.Name ] | Studenten(s) ∧ s.Semester > 9 } Bereichskalkül: • positionell • Variablen für Attributwerte • keine Attribute • DB-Relationsnamen als Relationssymbole des Kalküls { [ n ] | ∃ nr, sem: Studenten(nr, n, sem) ∧ sem > 9 } Tupelvariable © 2002 Prof. Dr. Rainer Manthey Bereichsvariablen Informationssysteme Bereichskalkül: Problematische Namenswahl 15 Kapitel 5 • Der TRC wird Tupelkalkül genannt, weil seine Variablen einzelne relationale Tupel repräsentieren. • Der DRC heisst zwar Bereichskalkül, aber seine Variablen repräsentieren nicht Bereiche ! Der Name ist zumindest unglücklich gewählt. • Mit 'Bereich' sind die Wertebereiche der Attribute einer Relation gemeint. • Die Variablen des Bereichskalküls repräsentieren einzelne Attributwerte, also einzelne Elemente von Wertebereichen - aber nicht die gesamten Bereiche. • Wollte man einen Namen für den DRC wählen, bei dem die Analogie zur BeZeichnung 'Tupelkalkül' wieder stimmt, müsste man 'Wertekalkül' sagen. • alternativ: Man könnte auch 'Bereichskalkül' beibehalten und müsste dann den 'Tupelkalkül' in 'Relationskalkül' umbenennen, um wieder zu einer vernünftigen Analogie zu kommen. • Der Begriff 'Relationenkalküle' ist aber bereits als Oberbegriff für beide Kalküle im Gebrauch. © 2002 Prof. Dr. Rainer Manthey Informationssysteme 16 Tupelkalkül: formale Definition Kapitel 5 Eine TRC-Anfrage hat die Form { v | F} oder die Form { [t1, . . ., tn] | G }, wobei v eine Tupelvariable, F eine TRC-Formel mit freier Variable v, t1, . . ., tn TRC-Terme und G eine TRC-Formel mit den gleichen freien Variablen wie in t1, . . ., tn ist. Beispiele: { v | Stadt(v) ∧ v.Einwohner > 100 } Qualifikationsteil { v | Großstadt(v) ∨ Millionenstadt(v) } Zielliste { [v.Name, v.Einwohner] | Stadt(v) ∧ v.Einwohner > 100 } { [v.Name] | Großstadt(v) ∨ Millionenstadt(v) } © 2002 Prof. Dr. Rainer Manthey Informationssysteme Tupelkalkül: formale Definition (2) 17 Kapitel 5 TRC-Terme: • Konstanten und Variablen • Attributterme der Form v.A (v Variable, A Attribut) Attribute sind also im TRC Funktionen, die in Postfixnotation verwendet werden: v.A statt A(v) TRC-Formeln: bei Kemper/Eickler: v ∈ R statt R(v) • Typformeln der Form R(v) (v Variable, R Relationsname) • Vergleichsformeln der Form t1 Θ t2 (t1, t2 TRC-Terme, Θ Vergleichsoperator) • Wenn F Formel ist, dann sind auch ¬ F, (F) , ∃ v: (F) , ∀ v: (F) Formeln. • Wenn F1 und F2 Formeln sind, dann sind auch (F1 ∧ F2) , (F1 ∨ F2) , (F1 Þ F2) Formeln. Klammern können eingespart werden, wenn die Klammerung eindeutig ist. © 2002 Prof. Dr. Rainer Manthey Informationssysteme 18 Bereichskalkül: formale Definition Kapitel 5 Eine DRC-Anfrage hat die Form { [t1, . . ., tn] | F }, wobei t1, . . ., tn DRC-Terme und F eine DRC-Formel mit den gleichen freien Variablen wie in t1, . . ., tn ist. Beispiele: { [x1,x2,x3] | Stadt(x1,x2,x3) ∧ x3 > 100 } Qualifikationsteil { [x1,x2,x3] | Großstadt(x1,x2,x3) ∨ Millionenstadt(x1,x2,x3) } Zielliste { [x1,x3] | ∃ x2: (Stadt(x1,x2,x3) ∧ x3 > 100) } { [x1] | ∃ x2,x3 : (Großstadt(x1,x2,x3) ∨ Millionenstadt(x1,x2,x3)) } freie Variablen © 2002 Prof. Dr. Rainer Manthey Informationssysteme Bereichskalkül: formale Definition (2) 19 Kapitel 5 DRC-Terme: • nur Konstanten und Variablen ersetzt Typformeln und Attributterme bei Kemper/Eickler: (t1, . . ., tn) ∈ R statt R(t1, . . ., tn) DRC-Formeln: • Relationsformeln der Form R(t1, . . ., tn) (t1, . . ., tn DRC-Terme, R Relationsname) • Vergleichsformeln der Form t1 Θ t2 (t1, t2 DRC-Terme, Θ Vergleichsoperator) • Wenn F Formel ist, dann sind auch ¬ F, (F) , ∃ v: (F) , ∀ v: (F) Formeln. • Wenn F1 und F2 Formeln sind, dann sind auch (F1 ∧ F2) , (F1 ∨ F2) , (F1 Þ F2) Formeln. © 2002 Prof. Dr. Rainer Manthey Informationssysteme 20 Relationenalgebra ausgedrückt in den Relationenkalkülen Kapitel 5 • Alle Ausdrücke der Relationenalgebra lassen sich äquivalent auch durch Anfragen in den beiden Kalkülen ausdrücken. • Projektion: RA TRC πA(R) DRC { [a] | ∃ b, c, . . . : R(a, b, c, . . .)} {[v.A] | R(v) } • Selektion: σCond(R) { v | R(v) ∧ Cond} { [a1, . . , an] | R(a1, . . , an) ∧ Cond} • Vereinigung (Durchschnitt, Differenz und Produkt analog): R∪S { v | R(v) ∨ S(v) } © 2002 Prof. Dr. Rainer Manthey { [a1, . . , an] | R(a1, . . , an) ∨ S(a1, . . , an)} Informationssysteme 21 Relationenalgebra ausgedrückt in den Relationenkalkülen (2) Kapitel 5 • Verbund (hier am Beispiel natürlicher Verbund mit R(A,B) und S(B,C)): RA R S {[v.A, v.B, w.C] | R(v) ∧ S(w) ∧ v.B = w.B } TRC { [a, b, c] | R(a, b) ∧ S(b, c) } DRC • Division (hier am Beispiel R(A,B) und S(B): RA R ÷ S © 2002 Prof. Dr. Rainer Manthey {[v.A] | R(v) ∧ ∀ w: ( S(w) Þ ∃ v': ( R(v') ∧ v'.B = w.B ∧ v'.A = v.A ) )} TRC { [a] | R(a, b) ∧ ∀ b': ( S(b') Þ R(a, b') ) } DRC Informationssysteme 22 Relationenkalküle ↔ Relationenalgebra: Zusammenhang Kapitel 5 • Man könnte meinen, dass umgekehrt auch jeder Kalkülausdruck in der RA ausdrückbar ist - das ist aber nicht der Fall! • Es gibt in jedem der beiden Kalküle Anfragen, die nicht in der RA darstellbar sind ! TRC- (oder DRC-)Ausdrücke RA-Ausdrücke äquivalente Darstellungen von RA-Ausdrücken ? © 2002 Prof. Dr. Rainer Manthey nicht in der RA ausdrückbar Informationssysteme Unsichere Kalkülausdrücke 23 Kapitel 5 • "Unkontrollierte" Verwendung von Negation und Disjunktion können dazu führen, dass ein Kalkülausdruck unendliche grosse Antwortmengen liefert (bzw. Antwortmengen, die nicht aus den DB-Relationen konstruierbar sind). • Solche Ausdrücke nennt man unsicher. • Beispiele: unsichere Anfragen im TRC Finde alle (nur denkbaren) Tupel, die nicht in der Relation Stadt vorkommen ! { v | ¬ Stadt(v) } { [f.Name, s.Name] | Fluss(f) ∨ Stadt(s) } Wird die Disjunktion durch ein Fluss-Tupel erfüllt, dann kann für s Beliebiges eingesetzt werden (analog für f) ! • dagegen ist sicher: { [x.Name] | Fluss(x) ∨ Stadt(x) } • ganz analog: unsichere Anfragen im DRC { [x1, x2, x3] | ¬ Stadt(x1, x2, x3) } { [y1, x1] | Fluss(y1, y2, y3) ∨ Stadt(x1, x2, x3) } © 2002 Prof. Dr. Rainer Manthey Informationssysteme 24 Bereichsunabhängigkeit und sichere Ausdrücke Kapitel 5 • Eine exakte Charakterisierung aller Ausdrücke im TRC oder im DRC, die eine endliche Antwortrelation besitzt, ist sehr schwierig zu finden - das allgemeine Problem, das dahinter steckt (Erkennung aller bereichsunabhängigen Anfragen) ist sogar unentscheidbar ! • Es lassen sich aber Teilsprachen des TRC (DRC) definieren, deren Ausdrücke garantiert bereichsunabhängig sind (die aber eben nicht alle solchen Ausdrücke umfasst). • Die sicheren Anfragen stellen eine solche entscheidbare Teilsprache dar - eine exakte Definition sicherer Ausdrücke ist aber immer noch relativ aufwändig (im Buch von Vossen wird diese Frage ausführlich diskutiert). • Eine einfache Strategie zur Vermeidung unsicherer Ausdrücke besteht darin, jede Variable mittels einer positiven Typformel (im TRC) bzw. einer positiven Relationsformel (im DRC) "abzusichern", z.B. { v | Stadt(v) ∧ ¬ Großstadt(v) } © 2002 Prof. Dr. Rainer Manthey Informationssysteme Relationale Vollständigkeit 25 Kapitel 5 • Die Ausdrucksfähigkeit der relationalen Algebra dient mittlerweile als das Maß für die Güte relationaler Anfragesprachen: Eine Sprache, die für jeden RA-Ausdruck eine äquivalente Darstellung besitzt, heißt relational vollständig. • Beide relationalen Kalküle (TRC und DRC) sind relational vollständig. (Beweis: siehe Buch von Vossen) • Beschränkt man TRC und DRC jeweils auf sichere Anfragen, so sind die resultierenden Teilsprachen äquivalent und auch äquivalent mit der relationalen Algebra. sicherer DRC Relationenalgebra sicherer TRC © 2002 Prof. Dr. Rainer Manthey Informationssysteme 26 Schwächen relational vollständiger Sprachen Kapitel 5 • Es gibt trotzdem eine ganze Reihe sinnvoller Anfragen, die nicht in der relationalen Algebra formulierbar sind (und damit auch nicht in den sicheren Kalkülen). • Um diese Fälle abzudecken, muss man die angeblich relational vollständigen Sprachen noch erweitern. • Erweiterungen um arithmetische und Aggregatfunktionen (inklusive Gruppierungsund Sortierungsoperatoren) sind in der Praxis unerlässlich. • Boolesche Anfragen (Ja/Nein-Anfragen) lassen sich in der RA gar nicht formulieren: Dazu müsste die RA z.B. um Vergleiche mit der leeren Menge erweitert werden. • weiterer schwerwiegender Mangel: Rekursive Anfragen (wie z.B. nach der transitiven Hülle einer Relation) lassen sich ebenfalls nicht ausdrücken: Dazu wurde für die RA ein "Hüllenoperator" ∗ vorgeschlagen. • Analoge Erweiterungen sind für die Kalküle möglich. "Relational vollständige" Sprachen sind nicht so vollständig, wie es scheint . . . ! © 2002 Prof. Dr. Rainer Manthey Informationssysteme 27