DB5a - Anfragesprachen

Werbung
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
Herunterladen