Beispiel

Transcription

Beispiel
7. Grundlagen von Anfragen
■
Kriterien für Anfragesprachen
■
Anfragealgebren
■
Anfrage-Kalküle
■
Änderungsoperationen
Einführung
■
bisher ; Relationenschemata mit Basisrelationen, die in
der Datenbank gespeichert sind
■
jetzt ; „abgeleitete“ Relationenschemata mit virtuellen
Relationen, die aus den Basisrelationen berechnet
werden (Basisrelationen bleiben unverändert)
VL Datenbanken I – 7–1
Einführung II
■
■
■
VL Datenbanken I – 7–2
Kriterien für Anfragesprachen
Anfrage: Folge von Operationen, die aus den
Basisrelationen eine Ergebnisrelation berechnet
Ergebnisrelation
◆ interaktiv auf dem Bildschirm anzeigen,
◆ per Programm weiterverarbeiten („Einbettung“)
Sicht: Folge von Operationen, die unter einem
Sichtnamen langfristig abgespeichert wird und unter
diesem Namen wieder aufgerufen werden kann; ergibt
eine Sichtrelation
Snapshot: Ergebnisrelation einer Anfrage, die unter
einem Snapshot-Namen abgelegt wird, aber nie ein
zweites Mal (mit geänderten Basisrelationen) berechnet
wird (etwa Jahresbilanzen)
VL Datenbanken I – 7–3
■
Ad-Hoc-Formulierung: Der Benutzer soll eine Anfrage
formulieren können, ohne ein vollständiges Programm
schreiben zu müssen.
■
Deskriptivität: Der Benutzer soll formulieren „Was will
ich haben?“ und nicht „Wie komme ich an das, was ich
haben will?“.
■
Mengenorientiertheit: Jede Operation soll auf Mengen
von Daten gleichzeitig arbeiten, nicht navigierend nur auf
einzelnen Elementen (one-tuple-at-a-time).
■
Abgeschlossenheit: Das Ergebnis ist wieder eine
Relation und kann wieder als Eingabe für die nächste
Anfrage verwendet werden.
VL Datenbanken I – 7–4
Kriterien für Anfragesprachen II
Kriterien für Anfragesprachen III
■
Adäquatheit: Alle Konstrukte des zugrundeliegenden
Datenmodells werden unterstützt.
■
Orthogonalität: Sprachkonstrukte sind in ähnlichen
Situationen auch ähnlich anwendbar.
■
Optimierbarkeit: Die Sprache besteht aus wenigen
Operationen, für die es Optimierungsregeln gibt.
■
Effizienz: Jede Operation ist effizient ausführbar (im
Relationenmodell hat jede Operation eine Komplexität
≤ O(n2 ), n Anzahl der Tupel einer Relation).
■
Sicherheit: Keine Anfrage, die syntaktisch korrekt ist,
darf in eine Endlosschleife geraten oder ein unendliches
Ergebnis liefern.
■
Eingeschränktheit: (folgt aus Sicherheit,
Optimierbarkeit, Effizienz) Die Anfragesprache darf
keine komplette Programmiersprache sein.
■
Vollständigkeit: Die Sprache muß mindestens die
Anfragen einer Standardsprache (wie etwa die in diesem
Kapitel einzuführende Relationenalgebra oder den
sicheren Relationenkalkül) ausdrücken können.
VL Datenbanken I – 7–5
Anfragealgebren
VL Datenbanken I – 7–6
Relationenalgebra
■
für Datenbankanfragen: Inhalte der Datenbank sind
Werte, und Operatoren definieren Funktionen zum
Berechnen von Anfrageergebnissen
Spalten ausblenden: Projektion, Zeichen π ; in [. . . ]:
welche Spalten behalten; in (. . . ): auf welche Relation
anwenden
■
Relationenalgebra
NF2 -Algebra
◆ Andere Algebra-Erweiterungen
Zeilen heraussuchen: Selektion, Zeichen σ ; in [. . . ]:
unter welchen Bedingungen; in (. . . ): auf welche
Relation anwenden
■
Tabellen verknüpfen: Verbund (Join), Zeichen ./; Tupel
über gleichbenannten Spalten und Werten
aneinanderhängen
■
Tabellen vereinigen: Vereinigung, Zeichen ∪; Tupel aus
beiden Relationen sammeln, doppelte herauswerfen
■
Mathematik: Algebra definiert durch Wertebereich und
auf diesem definierte Operatoren
■
◆
◆
VL Datenbanken I – 7–7
VL Datenbanken I – 7–8
Relationenalgebra II
Laufendes Beispiel
■
Tabellen voneinander abziehen: Differenz, Zeichen −;
Tupel aus der ersten Relation herausnehmen, falls sie
auch in der zweiten Relation vorkommen
■
Spalten umbenennen: Umbenennung, Zeichen β ;
einen Attributnamen in einen anderen umbenennen
(wichtig für ./ und ∪, −)
Ausleih
Buch
Invnr
4711
1201
0007
4712
Name
Meyer
Schulz
Müller
Meyer
Invnr Titel
ISBN
0007 Dr. No
3-125
1201 Objektbanken 3-111
4711 Datenbanken 3-765
4712 Datenbanken 3-891
4717 Pascal
3-999
Autor
James Bond
Heuer
Vossen
Ullman
Wirth
VL Datenbanken I – 7–9
Projektion
■
VL Datenbanken I – 7–10
Projektion II
Syntax
■
π [attributmenge] (relation)
■
Beispiel 1: Projektion auf ein Attribut
π [Name] (Ausleih)
Semantik
ergibt als Ergebnisrelation
πX (r) := {t(X) | t ∈ r}
Name
für r(R) und X ⊆ R Attributmenge in R.
Meyer
Schulz
Müller
■
VL Datenbanken I – 7–11
Doppelte Ergebnistupel eliminiert
VL Datenbanken I – 7–12
Projektion III
■
Projektion IV
Beispiel 2: Projektion auf Attributmenge
■
π [Invnr, ISBN] (Buch)
einfache Optimierungsregel: bei vielen Projektionen
hintereinander reicht die zuletzt ausgeführte auch allein
π [Invnr] (π [Invnr, ISBN] (Buch))
ergibt
ergibt optimiert
Invnr
ISBN
0007
3-125
1201
3-111
4711
3-765
4712
3-891
4717
3-999
π [Invnr] (Buch)
VL Datenbanken I – 7–13
Selektionsbedingungen
Selektion
■
VL Datenbanken I – 7–14
■ F
Syntax
σ [bedingung] (relation)
■
Konstanten-Selektion
Attribut θ Konstante
boolesches Prädikat θ ist = oder 6=, bei linear
geordneten Wertebereichen auch ≤, <, ≥ oder >
Semantik
σF (r) := {t | t ∈ r ∧ F (t) = true}
■ F
Attribut-Selektion
Attribut1 θ Attribut2
■ F
logische Verknüpfung mehrerer Konstanten- oder
Attribut-Selektionen mit ∧, ∨ oder ¬
VL Datenbanken I – 7–15
VL Datenbanken I – 7–16
Selektion II
■
Selektion III
Beispiel
■
σ [Name ≤ ‘N’] (Ausleih)
ergibt
Invnr
Name
4711 Meyer
einfache Optimierungsregeln
◆ Selektionen lassen sich in der Reihenfolge beliebig
vertauschen
◆ Manchmal lassen sich Projektion und Selektion
vertauschen;
Voraussetzung: Selektionsattribute kommen in
Projektionsliste vor
0007 Müller
4712 Meyer
VL Datenbanken I – 7–17
Verbund: Beispiel
Verbund
■
Ausleih ./ Buch
Syntax des (natürlichen) Verbundes (engl.: natural join)
ergibt
Relation1 ./ Relation2
■
VL Datenbanken I – 7–18
Semantik
r1 ./ r2 := {t | t(R1 ∪ R2 ) ∧
[∀i ∈ {1, 2}∃ti ∈ ri : ti = t(Ri )]}
■
Verbund verknüpft Tabellen über gleichbenannten
Spalten bei gleichen Attributwerten
VL Datenbanken I – 7–19
Name
Invnr
Titel
ISBN
Autor
Müller
0007 Mr. No
Schulz
1201 Objektbanken 3-111 Heuer
Meyer
4711 Datenbanken
3-765 Vossen
Meyer
4712 Datenbanken
3-891 Ullman
3-125 James Bond
■
nicht ausgeliehenes Pascal-Buch verschwindet: Tupel,
die keinen Partner finden (dangling tuples), werden
eliminiert
■
später: outer join, der „dangling tuples“ übernimmt
VL Datenbanken I – 7–20
Eigenschaften Verbund
Verbund II
π [Autor] (Buch) ./ π [Invnr] (Ausleih)
Autor
Invnr
James Bond 4711
James Bond 1201
James Bond 0007
James Bond 4712
Heuer
4711
Heuer
1201
Heuer
0007
Heuer
4712
Vossen
4711
...
...
entartet zu kartesischem Produkt
■
aus R1 ∩ R2 = {} folgt r1 ./ r2 = r1 × r2
■
Projektion nicht inverse Operation zu Verbund:
πR1 (r1 ./ r2 ) ⊆ r1
■
Verbund nicht die inverse Operation zu zwei
Projektionen (nur bei Verbundtreue)
■
Verbund kommutativ: r1 ./ r2 = r2 ./ r1
■
Verbund assoziativ: (r1 ./ r2 ) ./ r3 = r1 ./ (r2 ./ r3 )
■
Daher erlaubt:
./pi=1 ri
VL Datenbanken I – 7–21
Mengenoperationen und Umbenennung
Buch1 Autor1
James Bond
Heuer
Vossen
Ullman
Wirth
■
VL Datenbanken I – 7–22
Mengenoperationen: Vereiningung
relation1 ∪ relation2
Beispiel:
Buch1 ∪ β [Autor1 ← Autor2] (Buch2)
Autor1
James Bond
Heuer
Vossen
Ullman
Wirth
Witt
Silberschatz
Meier
Buch2 Autor2
Witt
Vossen
Silberschatz
Meier
Wirth
Umbenennung
β [neu ← alt] (relation)
ändert Attributnamen von alt in neu
β [Autor1 ← Autor2] (Buch2)
Durch Umbenennung nun Vereinigung, Differenz und
Durchschnitt möglich
VL Datenbanken I – 7–23
VL Datenbanken I – 7–24
Mengenoperationen: Differenz
Mengenoperationen: Durchschnitt
relation1 − relation2
Beispiel:
Buch1 − β [Autor1 ← Autor2] (Buch2)
Autor1
James Bond
Heuer
Ullman
relation1 ∩ relation2
Beispiel:
Buch1 ∩ β [Autor1 ← Autor2] (Buch2)
Autor1
Vossen
Wirth
VL Datenbanken I – 7–25
VL Datenbanken I – 7–26
Mengenoperationen, Umbenennung I
Mengenoperationen, Umbenennung II
Umbenennung ermöglicht
Formal für r1 (R) und r2 (R)
■
Verbunde, wo bisher kartesische Produkte ausgeführt
wurden (unterschiedliche Attribute werden gleich
benannt),
■
kartesische Produkte, wo bisher Verbunde ausgeführt
wurden (gleiche Attribute werden unterschiedlich
genannt),
■
■
Umbenennung βB←A (r) := {t0 | ∃t ∈ r : t0 (R − A) =
t(R − A) ∧ t0 (B) = t(A)}
■
Vereinigung r1 ∪ r2 := {t | t ∈ r1 ∨ t ∈ r2 }
■
Durchschnitt r1 ∩ r2 := {t | t ∈ r1 ∧ t ∈ r2 }
■
Differenz r1 − r2 := {t | t ∈ r1 ∧ t 6∈ r2 }
Durchschnitt ∩ wegen r1 ∩ r2 = r1 − (r1 − r2 ) überflüssig
Mengenoperationen
VL Datenbanken I – 7–27
VL Datenbanken I – 7–28
Unabhängigkeit und Vollständigkeit
■
Problem: Quantoren
Minimale Relationenalgebra:
■
Allquantor in Relationenalgebra ausdrücken, obwohl in
Selektionsbedingungen nicht erlaubt
■
Division (kann aus Ω hergeleitet werden)
Ω = π , σ , ./, β , ∪ und −
■
unabhängig: kein Operator kann weggelassen werden
ohne Vollständigkeit zu verlieren
■
andere unabhängige Menge: ./ und β durch × ersetzen
und r2 (R2 ) gegeben mit R2 ⊆ R1 , R0 = R1 − R2 .
Dann ist
■
Relationale Vollständigkeit: jede andere Menge von
Operationen genauso mächtig wie Ω
r0 (R0 ) = {t | ∀t2 ∈ r2 ∃t1 ∈ r1 : t1 (R0 ) = t ∧ t1 (R2 ) = t2 }
= r 1 ÷ r2
■
Strenge relationale Vollständigkeit: zu jedem Ausdruck
mit Operatoren aus Ω gibt es einen Ausdruck auch mit
der anderen Menge von Operationen
■ r1 (R1 )
■
Division von r1 durch r2
r1 ÷ r2 = πR0 (r1 ) − πR0 ((πR0 (r1 ) ./ r2 ) − r1 )
VL Datenbanken I – 7–29
NF2-Algebra
Division: Beispiel
r1
PILOT
Snoopy
Snoopy
Snoopy
Meyer
Meyer
Müller
Müller
Müller
Müller
Lüdenscheid
r1 ÷ r2 ergibt
r0
PILOT
Snoopy
Müller
FLUGZ.
707
727
747
707
727
707
727
747
777
727
VL Datenbanken I – 7–30
■ ∪, −, π, ./
zunächst wie in Relationenalgebra
■ σ -Bedingungen
r2
FLUGZ.
707
727
747
r3
erweitern um:
Relationen als Operanden (statt nur Konstanten von
Standard-Datentypen)
◆ Mengenvergleiche, wie etwa θ : =, ⊆, ⊂, ⊃, ⊇
◆
FLUGZ.
707
■
rekursiv aufgebaute Operationsparameter, etwa π und σ
auch innerhalb von Projektionslisten und
Selektionsbedingungen anwendbar
■
zusätzliche Operationen ν (Nestung) und µ (Entnestung)
r1 ÷ r3 ergibt
r0
PILOT
Snoopy
Meyer
Müller
VL Datenbanken I – 7–31
VL Datenbanken I – 7–32
Spezielle NF2-Algebren
Nestung und Entnestung
A
1
1
1
2
B
2
3
4
1
C
7
6
5
1
−→
νB,C;D (r)
A
D
B C
2 7
1 3 6
←−
4 5
0
µD (r )
2 1 1
Nestung nicht allgemein die Inverse der Entnestung:
A
D
A B C
6−→
B C
1 2 7 νB,C;D (r)
1 2 7
1 3 6
3 6
←−
1 4 5
1
4
5
µD (r0 )
2 1 1
2 1 1
■
Minimale geschachtelte Algebra
nur ν und µ
■
Orthogonale geschachtelte Algebra
Schek und Scholl: Selektion und Projektion rekursiv
■
Algebren für PNF-Relationen
erhalten PNF-Eigenschaft
VL Datenbanken I – 7–33
Andere Algebra-Erweiterungen
VL Datenbanken I – 7–34
Andere Algebra-Erweiterungen (II)
■
Nullwerte
■
Operationen auf Wertebereichen (Spaltenerweiterung,
abgeleitete Attribute)
■
Gruppierung
■
...
■
Nullwerte
A B
r1
a
b
a
∃
r2
B
C
b
c
∃
c
∃: „Wert existiert, aber zur Zeit nicht bekannt“
Verbund
A B C
a
VL Datenbanken I – 7–35
b
c
VL Datenbanken I – 7–36
Andere Algebra-Erweiterungen (III)
■
Nullwerte (fortg.) definit- und maybe-Markierungen
r1
A
a
a
B
b
∃
STATUS
B
b
∃
r2
d
d
C
c
c
STATUS
d
Anfrage-Kalküle
■
Kalkül: eine formale logische Sprache zur Formulierung
von Aussagen
■
Ziel: Einsatz eines derartigen Kalküls zur Formulierung
von Datenbank-Anfragen
■
Logikbasierter Ansatz:
d
r1 |./ r2 liefert
A
a
a
a
a
B
b
b
b
∃
C
c
c
c
c
Datenbankinhalte entsprechen Belegungen von
Prädikaten einer Logik, Anfragen abgeleiteten
Prädikaten
STATUS
d
m
m
m
VL Datenbanken I – 7–37
Ein allgemeiner Kalkül
■
Ein allgemeiner Kalkül II
Motivation: mathematische Notation
■
{x2 | x ∈ IN ∧ x3 > 0 ∧ x3 < 1000}
■
VL Datenbanken I – 7–38
Anfrage hat die Form
Funktion f bezeichnet Ergebnisfunktion über x
wichtige Spezialfälle: Angabe einer Variable selber (f ist
hier die Identitätsfunktion) und Tupelkonstruktion
(Ergebnis vom Typ tuple of)
■ p
{f (x) | p(x)}
◆ x
Selektionsprädikat über freien Variablen x
Terme aus Variablen, Konstanten und
Funktionsanwendungen
◆ Prädikate der Datentypen, etwa ≤, <, >, ≥, ...
→ atomare Formeln über Termen
◆ Bezug zur aktuellen Datenbank →
Datenbankprädikate, z.B. Relationennamen im RM
◆ prädikatenlogischen Operatoren ∧, ∨, ¬, ∀, ∃
→ Formeln
◆
bezeichnet Menge von freien Variablen
x = {x1 : D1 , . . . , xn : Dn }
VL Datenbanken I – 7–39
VL Datenbanken I – 7–40
Ergebnisbestimmung einer Anfrage
Relationale Kalküle
x = {x1 : D1 , . . . , xn : Dn }
1. Bestimme aller Belegungen der freien Variablen in x, für
die das Prädikat p wahr wird.
■
Bereichskalkül: Variablen nehmen Werte elementarer
Datentypen (Bereiche) an
■
Tupelkalkül: Variablen variieren über Tupelwerte
(entsprechend den Zeilen einer Relation)
2. Wende Funktion f auf die durch diese Belegungen
gegebenen Werte an.
Unter welchen Umständen liefern Kalkülanfragen
endliche Ergebnisse?
→ Sicherheit von Anfragen
VL Datenbanken I – 7–41
Bereichskalkül
■
VL Datenbanken I – 7–42
Bereichskalkül II
Terme:
■
Konstanten, etwa 42 oder ’MZ-4’.
Variablen zu Datentypen, etwa x.
Die Datentypangabe erfolgt in der Regel implizit und
wird nicht explizit deklariert!
◆ Funktionsanwendung f (t1 , . . . , tn ): Funktion f , Terme
ti , etwa plus(12, x) bzw. in Infixnotation 12 + x.
■
Formeln wie üblich mit ∧, ∨, ¬, ∀ und ∃.
Atomare Formeln:
■
Anfragen: {x1 , . . . , xn | φ(x1 , . . . , xn )}
φ ist Formel über den in der Ergebnisliste aufgeführten
Variablen x1 bis xn . Das Ergebnis ist eine Menge von
Tupeln. Die Tupelkonstruktion erfolgt implizit aus den
Werten der Variablen in der Ergebnisliste.
◆
◆
◆
■
Atomare Formeln (fortg.):
◆
Prädikatanwendung Θ(t1 , . . . , tn ),
Θ ∈ {<, >, ≤, ≥, 6=, =, . . . } Datentypprädikat, Terme ti .
Zweistellige Prädikate wie üblich in Infix-Notation.
Beispiele: x = y , 42 > x oder 3 + 7 = 11.
VL Datenbanken I – 7–43
Prädikatanwendungen für Datenbankprädikate,
notiert als R(t1 , . . . , tn ) für einen Relationennamen R.
Voraussetzung: n muß die Stelligkeit der Relation R
sein und alle ti müssen vom passenden Typ sein
Beispiel: bestellt(’Maier’, x, 100)
VL Datenbanken I – 7–44
Sichere Anfragen
Basiskalkül
Einschränkung des Bereichskalküls:
■
Wertebereich: ganze Zahlen
■
Datentypprädikate werden wie bei der
Relationenalgebra auf Gleichheit und elementare
Vergleichsoperatoren eingeschränkt
■
■
Sichere Anfragen (auch semantisch sichere Anfragen):
Anfragen, die für jeden Datenbankzustand σ(R) ein
endliches Ergebnis liefern.
■
Beispiel für nicht sichere Anfrage:
{x, y | ¬R(x, y)}
Funktionsanwendungen sind nicht erlaubt; nur
Konstanten dürfen neben Bereichsvariablen als Terme
verwendet werden
Einfaches Beispiel für sichere Anfrage:
{x, y | R(x, y)}
VL Datenbanken I – 7–45
Sichere Anfragen II
■
VL Datenbanken I – 7–46
Syntaktisch sichere Anfragen
Weiteres Beispiel für sichere Anfrage:
■
Syntaktisch sichere Anfragen: Anfragen, die
syntaktischen Einschränkungen unterliegen, um die
semantische Sicherheit zu erzwingen.
■
Grundidee:
Jede freie Variable xi muß überall in φ(x1 , . . . )
durch positives Auftreten xi = t oder R(. . . , xi , . . . )
an endliche Bereiche gebunden werden.
■
Die Bindung an endliche Bereiche muß für die ganze
Bedingung, also insbesondere für alle Zweige einer
Disjunktion, gelten.
{x, y | y = 10 ∧ x > 0 ∧ x < 10}
Sicherheit folgt direkt aus den Regeln der Arithmetik.
Semantische Sicherheit ist im allgemeinen nicht
entscheidbar !
VL Datenbanken I – 7–47
VL Datenbanken I – 7–48
Relationen für Beispiele
Beispiele Bereichskalkül
„Alle (Namen von) Kunden in Magdeburg’".
Kunde(KName, Adresse, Konto),
{x | Kunde(x, y, z) ∧ y =0 MD0 }
bestellt(KName, WareBez, Anzahl)
■
Ware(WareBez, Preis, Vorrat)
Vereinfachte Notation: Ansonsten ungebundene
Variablen (hier y und z ) im Bedingungsteil existentiell mit
∃ gebunden. Vollständige Version:
{x | ∃y∃z Kunde(x, y, z) ∧ y =0 MD0 }
■
Einsparung von Bereichsvariablen, indem Konstanten
als Parameter des Prädikats eingesetzt werden:
{x | Kunde(x,0 MD0 , z)}
VL Datenbanken I – 7–49
Beispiele Bereichskalkül II
■
Beispiele Bereichskalkül II
Abkürzung für beliebige, unterschiedliche existentiell
gebundene Variablen ist _ Symbol:
0
„Städte mit mehr als zwei Kunden’".
{y | Kunde(x, y, z) ∧ Kunde(x0 , y, z 0 ) ∧ x 6= x0 }
0
{x | Kunde(x, y, _) ∧ y = MD }
■
VL Datenbanken I – 7–50
Verschiedene Auftreten des Symbols _ stehen hierbei
für paarweise verschiedene Variablen.
VL Datenbanken I – 7–51
■
Diese Anfrage zeigt eine Verbundbildung über das
zweite Attribut der Kunde-Relation
■
Verbundbildung kann einfach durch die Verwendung der
selben Bereichsvariablen als Parameter in
verschiedenen Relationsprädikaten erfolgen
VL Datenbanken I – 7–52
Beispiele Bereichskalkül III
Beispiele Bereichskalkül IV
„Wer hat Waren unter 1.- DM bestellt?’"
„Wer hat überhaupt etwas bestellt?’"
{x | Kunde(x, y, z) ∧ ∃w∃a(bestellt(x, w, a) ∧ a > 0)}
{x, w | Kunde(x, y, z) ∧ bestellt(x, w, a) ∧
Ware(w, p, v) ∧ a > 0 ∧ p < 1.00}
■
Verbund über drei Relationen
■
Einsatz einer existentiell gebundenen Unteranfrage
■
derartige Unteranfragen können aufgrund der Regeln
der Prädikatenlogik wie folgt aufgelöst werden:
{x | Kunde(x, y, z) ∧ (bestellt(x, w, a) ∧ a > 0)}
VL Datenbanken I – 7–53
VL Datenbanken I – 7–54
Beispiele Bereichskalkül V
Ausdrucksfähigkeit Bereichskalkül
„Wer hat nur Waren in großer Anzahl bestellt?’"
Bereichskalkül ist streng relational vollständig, d.h. zu jedem
Term τ der Relationenalgebra gibt es einen äquivalenten
(sicheren) Ausdruck η des Bereichskalküls.
{x | Kunde(x, y, z) ∧ ∀w∀a(bestellt(x, w, a) =⇒ a > 100)}
■
universell gebundene Teilformeln können nicht aufgelöst
werden
VL Datenbanken I – 7–55
VL Datenbanken I – 7–56
Umsetzung von Relationenoperationen
Gegeben: zwei Relationenschemata R(A1 , . . . , An ) und
S(B1 , . . . , Bm )
■
Vereinigung (für n = m).
R ∪ S ={x
ˆ 1 . . . xn | R(x1 , . . . , xn ) ∨ S(x1 , . . . , xn )}
■
Differenz (für n = m).
R − S ={x
ˆ 1 . . . xn | R(x1 , . . . , xn ) ∧ ¬S(x1 , . . . , xn )}
■
Umsetzung von Relationenoperationen II
■
Projektion.
πA (R)={y
ˆ 1 . . . yk | ∃x1 . . . ∃xn (R(x1 , . . . , xn ) ∧ y1 = xi1
∧ · · · ∧ yk = xik )}
Hierbei ist die Attributliste der Projektion wie folgt
gegeben: A = (Ai1 , . . . , Aik )
■
Natürlicher Verbund.
R ./ S =
ˆ
{x1 . . . xn xn+1 . . . xn+m−i | R(x1 , . . . , xn ) ∧
S(x1 , . . . , xi , xn+1 , . . . , xn+m−i )}
Selektion.
σφ (R)={x
ˆ 1 . . . xn | R(x1 , . . . , xn ) ∧ φ0 }
Die Formel φ0 wird hierbei aus φ gewonnen, indem
Variable xi an Stelle der Attributnamen Ai eingesetzt
werden.
Hierbei seien die ersten i Attribute von R und S die
Verbundattribute, also Aj = Bj für j = 1 . . . i.
VL Datenbanken I – 7–57
Tupelkalkül
■
VL Datenbanken I – 7–58
Der Basis-Tupelkalkül
Anfragen im Tupelkalkül werden analog zu denen des
Bereichskalküls aufgebaut, aber mit folgenden
Unterschieden:
Variablen sind tupelwertig
bedeutet „t ist in Relation R“ (alternative
Notation: t ∈ R)
◆ t.Ai bzw. t[i] ermöglichen Zugriff auf die i-te
Tupelkomponente (alternative Notation: t(i))
◆ Anfragen haben die Form
◆
◆ R(t)
{t | φ(t)}
t Tupelvariable, φ(t) spezielle Formel der Prädikatenlogik 1.
Ordnung
■
Atome des Basis-Tupelkalküls:
◆ s∈r
mit s Tupelvariable und r Relation
mit s1 , s2 Tupelvariablen und A, B Attribute;
s1 muß über A und s2 über B definiert sein
θ wie in Relationenalgebra: =, 6=, <, >, ≥, ≤
◆ s.Aθc mit s Tupelvariable, s ist über A definiert, und
c ∈ dom(A) (c hat also einen passenden Typ)
◆ s1 .Aθs2 .B
{u | φ(u)}
wobei u eine Tupelvariable ist.
■
Vereinfachte Notation: Beliebige Terme als Zielfunktion.
VL Datenbanken I – 7–59
VL Datenbanken I – 7–60
Der Basis-Tupelkalkül II
■
Erweiterungen in der Notation
Formeln des Basis-Tupelkalküls:
◆ Ein Atom ist eine Formel
◆ Sind φ und ψ Formeln, dann sind auch ¬φ, (φ), φ ∧ G
und φ ∨ ψ Formeln
◆ Ist φ(s) eine Formel und s eine freie (d.h. noch nicht
durch einen Quantor gebundene) Tupelvariable in
φ(s), so sind auch ∀s : φ(s) und ∃s : φ(s) Formeln.
■
Implizite Tupelbildung analog zum Bereichskalkül:
{u.A1 , v.B2 | R(u) ∧ S(v)}
Anfrage ist äquivalent zu:
{w | ∃u∃vR(u) ∧ S(v) ∧ u.A1 = w[1] ∧ v.B2 = w[2]}
■
Definition von Attributnamen in der Zielliste und
Verwendung von Termen in der Zielliste:
{u.Name, Jahresgehalt : u.Gehalt∗13 | Angestellte(u)}
VL Datenbanken I – 7–61
Beispiele Tupelkalkül
■
EER-Kalkül
Alle Kunden mit Namen ’Mueller’
{t | Kunde(t) ∧ t.KName = ’Mueller’}
■
VL Datenbanken I – 7–62
■
Anfragen sind Multimengenanfragen: {{· · · | . . .}}
■
Variablen werden positiv an endliche Bereiche
gebunden. Bindung an Bereiche in Deklarationen δ i
Adressen von Kunden mit Namen ’Mueller’
{{t1 , . . . , tn | δ1 ∧ · · · ∧ δk ∧ φ}}
{t.Adresse | Kunde(t) ∧ t.KName = ’Mueller’}
■
Namen und Adressen von Kunden, die Papier bestellt
haben
{t.KName, t.Adresse | Kunde(t)∧
∃b(bestellt(b) ∧ b.WName = ’Papier’
∧t.KName = b.KName)}
Beispiel für Deklaration: (a : ANGESTELLTE)
■
Anfragen als Bereiche → rekursiver Anfrageaufbau
■
Aggregatfunktionen wie Summenbildung,
Durchschnittswerte, Zählen als Funktionen:
AVG({{P reis(b) | (b : BUCH) ∧ Verlag(b) =0 Thomson0 }})
VL Datenbanken I – 7–63
VL Datenbanken I – 7–64
EER-Kalkül II
Formelaufbau
■
Vereinigung, Schnittmenge etc. auf Anfragetermen
■
Funktion bts (für bag-to-set): entfernt Duplikate aus
Multimengen
Anfragen
Anfragen
■
Konzepte des EER-Modells → Konstrukte des
EER-Kalküls:
Formeln
Formeln
Entity-Typen: Bereiche für Variablen
◆ Beziehungstypen: Prädikatsymbole oder Bereiche
◆ Attribute von Entity-Typen: Funktionen
◆
Atomare Formeln
Terme
a) Bereichskalkül
VL Datenbanken I – 7–65
Änderungsoperationen
■ u(d) := insert t into ri (Ri )
d 7−→
d0 := {r1 , . . . , ri ∪ {t}, . . . , rp } falls d0 ∈ DAT(S)
d
sonst
■ u(d) := delete t from ri (Ri )
d 7−→
d0 := {r1 , . . . , ri − {t}, . . . , rp } falls d0 ∈ DAT(S)
d
sonst
■ u(d) := replace t → t0 in ri (Ri )
d 7−→
d0 := {r1 , . . . , (ri − {t}) ∪ {t0 }, . . . , rp } falls d0 ∈ DAT(S)
d
sonst
VL Datenbanken I – 7–67
Atomare Formeln
Deklarationen
Bereiche
Terme
b) EER-Kalkül
VL Datenbanken I – 7–66

Documents pareils