6. Grundlagen von Anfragen
■ Kriterien für Anfragesprachen
■ Anfragealgebren
■ Anfrage-Kalküle
■ Änderungsoperationen
VL Datenbanken I – 6–1
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 – 6–2
Einführung II
■ 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)
Kriterien für Anfragesprachen
■ 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 – 6–4
Kriterien für Anfragesprachen II
■ 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), nAnzahl der Tupel einer Relation).
VL Datenbanken I – 6–5
Kriterien für Anfragesprachen III
■ 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.
Anfragealgebren
■ Mathematik: Algebra definiert durch Wertebereich und auf diesem definierte Operatoren
■ für Datenbankanfragen: Inhalte der Datenbank sind Werte, und Operatoren definieren Funktionen zum Berechnen von Anfrageergebnissen
◆ Relationenalgebra
◆ NF2-Algebra
◆ Andere Algebra-Erweiterungen
VL Datenbanken I – 6–7
Relationenalgebra
■ Spalten ausblenden: Projektion, Zeichenπ; in [. . . ]:
welche Spalten behalten; in (. . . ): auf welche Relation anwenden
■ 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
VL Datenbanken I – 6–8
Relationenalgebra II
■ 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∪,−)
Laufendes Beispiel
Ausleih Invnr Name 4711 Meyer 1201 Schulz 0007 Müller 4712 Meyer Buch Invnr Titel ISBN Autor
0007 Dr. No 3-125 James Bond 1201 Objektbanken 3-111 Heuer 4711 Datenbanken 3-765 Vossen 4712 Datenbanken 3-891 Ullman 4717 Pascal 3-999 Wirth
VL Datenbanken I – 6–10
Projektion
■ Syntax
π[attributmenge] (relation)
■ Semantik
πX(r) :={t(X)|t∈r}
fürr(R)undX ⊆RAttributmenge inR.
VL Datenbanken I – 6–11
Projektion II
■ Beispiel 1: Projektion auf ein Attribut π[Name] (Ausleih) ergibt als Ergebnisrelation
Name Meyer Schulz Müller
■ Doppelte Ergebnistupel eliminiert
Projektion III
■ Beispiel 2: Projektion auf Attributmenge π [Invnr, ISBN] (Buch) ergibt
Invnr ISBN 0007 3-125 1201 3-111 4711 3-765 4712 3-891 4717 3-999
VL Datenbanken I – 6–13
Projektion IV
■ einfache Optimierungsregel: bei vielen Projektionen hintereinander reicht die zuletzt ausgeführte auch allein
π [Invnr] (π [Invnr, ISBN] (Buch)) ergibt optimiert
π [Invnr] (Buch)
VL Datenbanken I – 6–14
Selektion
■ Syntax
σ [bedingung] (relation)
■ Semantik
σF(r) :={t|t∈r∧F(t) =true}
Selektionsbedingungen
■ F Konstanten-Selektion
Attribut θ Konstante boolesches Prädikatθist=oder6=, bei linear geordneten Wertebereichen auch≤,<,≥oder>
■ F Attribut-Selektion
Attribut1 θ Attribut2
■ F logische Verknüpfung mehrerer Konstanten- oder Attribut-Selektionen mit∧,∨oder¬
VL Datenbanken I – 6–16
Selektion II
■ Beispiel
σ [Name ≤ ‘N’] (Ausleih) ergibt
Invnr Name 4711 Meyer 0007 Müller 4712 Meyer
VL Datenbanken I – 6–17
Selektion III
■ einfache Optimierungsregeln
◆ Selektionen lassen sich in der Reihenfolge beliebig vertauschen
◆ Manchmal lassen sich Projektion und Selektion vertauschen;
Voraussetzung: Selektionsattribute kommen in Projektionsliste vor
Verbund
■ Syntax des (natürlichen) Verbundes (engl.: natural join) Relation1 ./ Relation2
■ 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 – 6–19
Verbund: Beispiel
Ausleih ./ Buch ergibt
Name Invnr Titel ISBN Autor Müller 0007 Mr. No 3-125 James Bond Schulz 1201 Objektbanken 3-111 Heuer Meyer 4711 Datenbanken 3-765 Vossen Meyer 4712 Datenbanken 3-891 Ullman
■ 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 – 6–20
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
Eigenschaften Verbund
■ ausR1∩R2={}folgtr1./ 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=1ri
VL Datenbanken I – 6–22
Mengenoperationen und Umbenennung
Buch1 Autor1 James Bond Heuer Vossen Ullman Wirth
Buch2 Autor2 Witt Vossen Silberschatz Meier Wirth
■ Umbenennung
β [neu ← alt] (relation) ändert Attributnamen vonaltinneu
β [Autor1 ← Autor2] (Buch2) Durch Umbenennung nun Vereinigung, Differenz und Durchschnitt möglich
VL Datenbanken I – 6–23
Mengenoperationen: Vereiningung
relation1 ∪ relation2 Beispiel:
Buch1 ∪ β [Autor1 ← Autor2] (Buch2) Autor1
James Bond Heuer Vossen Ullman Wirth Witt
Silberschatz Meier
Mengenoperationen: Differenz
relation1 − relation2 Beispiel:
Buch1 − β [Autor1 ← Autor2] (Buch2) Autor1
James Bond Heuer Ullman
VL Datenbanken I – 6–25
Mengenoperationen: Durchschnitt
relation1 ∩ relation2 Beispiel:
Buch1 ∩ β [Autor1 ← Autor2] (Buch2) Autor1
Vossen Wirth
VL Datenbanken I – 6–26
Mengenoperationen, Umbenennung I
Umbenennung ermöglicht
■ 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),
■ Mengenoperationen
Mengenoperationen, Umbenennung II
Formal fürr1(R)undr2(R)
■ UmbenennungβB←A(r) :={t0| ∃t∈r:t0(R−A) = t(R−A)∧t0(B) =t(A)}
■ Vereinigungr1∪r2:={t|t∈r1∨t∈r2}
■ Durchschnittr1∩r2:={t|t∈r1∧t∈r2}
■ Differenzr1−r2:={t|t∈r1∧t6∈r2}
Durchschnitt∩wegenr1∩r2=r1−(r1−r2)überflüssig
VL Datenbanken I – 6–28
Unabhängigkeit und Vollständigkeit
■ Minimale Relationenalgebra:
Ω =π,σ,./,β,∪und−
■ unabhängig: kein Operator kann weggelassen werden ohne Vollständigkeit zu verlieren
■ andere unabhängige Menge:./undβ durch×ersetzen
■ Relationale Vollständigkeit: jede andere Menge von Operationen genauso mächtig wieΩ
■ Strenge relationale Vollständigkeit: zu jedem Ausdruck mit Operatoren ausΩgibt es einen Ausdruck auch mit der anderen Menge von Operationen
VL Datenbanken I – 6–29
Problem: Quantoren
■ Allquantor in Relationenalgebra ausdrücken, obwohl in Selektionsbedingungen nicht erlaubt
■ Division (kann ausΩhergeleitet werden)
■ r1(R1)undr2(R2)gegeben mitR2⊆R1,R0=R1−R2. Dann ist
r0(R0) = {t| ∀t2∈r2∃t1∈r1:t1(R0) =t∧t1(R2) =t2}
= r1÷r2
■ Division vonr1durchr2
r1÷r2=πR0(r1)−πR0((πR0(r1)./ r2)−r1)
Division: Beispiel
r1
PILOT FLUGZ.
Snoopy 707
Snoopy 727
Snoopy 747
Meyer 707
Meyer 727
Müller 707
Müller 727
Müller 747
Müller 777
Lüdenscheid 727 r2
FLUGZ.
707 727 747
r3
FLUGZ.
707
r1÷r2ergibt r0
PILOT Snoopy Müller
r1÷r3ergibt
r0
PILOT Snoopy Meyer Müller
VL Datenbanken I – 6–31
NF
2-Algebra
■ ∪,−, π, ./zunächst wie in Relationenalgebra
■ σ-Bedingungen erweitern um:
◆ Relationen als Operanden (statt nur Konstanten von Standard-Datentypen)
◆ Mengenvergleiche, wie etwaθ:=,⊆,⊂,⊃,⊇
■ rekursiv aufgebaute Operationsparameter, etwaπundσ auch innerhalb von Projektionslisten und
Selektionsbedingungen anwendbar
■ zusätzliche Operationenν(Nestung) undµ(Entnestung)
VL Datenbanken I – 6–32
Nestung und Entnestung
A B C 1 2 7 1 3 6 1 4 5 2 1 1
−→
νB,C;D(r)
←−
µD(r0)
A D
B C 2 7 1 3 6 4 5 2 1 1 Nestung nicht allgemein die Inverse der Entnestung:
A B C 1 2 7 1 3 6 1 4 5 2 1 1
6−→
νB,C;D(r)
←−
µD(r0)
A D
B C 1 2 7
3 6 1 4 5 2 1 1
Spezielle NF
2-Algebren
■ 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 – 6–34
Andere Algebra-Erweiterungen
■ Nullwerte
■ Operationen auf Wertebereichen (Spaltenerweiterung, abgeleitete Attribute)
■ Gruppierung
■ . . .
VL Datenbanken I – 6–35
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:
Datenbankinhalte entsprechen Belegungen von Prädikaten einer Logik, Anfragen abgeleiteten Prädikaten
Ein allgemeiner Kalkül
■ Motivation: mathematische Notation
{x2|x∈IN∧x3>0∧x3<1000}
■ Anfrage hat die Form
{f(x)|p(x)}
◆ xbezeichnet Menge von freien Variablen x={x1:D1, . . . , xn:Dn}
VL Datenbanken I – 6–37
Ein allgemeiner Kalkül II
■ Funktionf bezeichnet Ergebnisfunktion überx
wichtige Spezialfälle: Angabe einer Variable selber (f ist hier die Identitätsfunktion) und Tupelkonstruktion
(Ergebnis vom Typ tuple of)
■ pSelektionsprädikat über freien Variablenx
◆ 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
VL Datenbanken I – 6–38
Ergebnisbestimmung einer Anfrage
x={x1:D1, . . . , xn:Dn}
1. Bestimme aller Belegungen der freien Variablen inx, für die das Prädikatpwahr wird.
2. Wende Funktionf auf die durch diese Belegungen gegebenen Werte an.
Unter welchen Umständen liefern Kalkülanfragen endliche Ergebnisse?
→Sicherheit von Anfragen
Relationale Kalküle
■ Bereichskalkül: Variablen nehmen Werte elementarer Datentypen (Bereiche) an
■ Tupelkalkül: Variablen variieren über Tupelwerte (entsprechend den Zeilen einer Relation)
VL Datenbanken I – 6–40
Bereichskalkül
■ Terme:
◆ Konstanten, etwa42oder’MZ-4’.
◆ Variablen zu Datentypen, etwax.
Die Datentypangabe erfolgt in der Regel implizit und wird nicht explizit deklariert!
◆ Funktionsanwendungf(t1, . . . , tn): Funktionf, Terme ti, etwaplus(12, x)bzw. in Infixnotation12 +x.
■ Atomare Formeln:
◆ PrädikatanwendungΘ(t1, . . . , tn),
Θ∈ {<, >,≤,≥,6=,=, . . .}Datentypprädikat, Termeti. Zweistellige Prädikate wie üblich in Infix-Notation.
Beispiele:x=y,42> xoder3 + 7 = 11.
VL Datenbanken I – 6–41
Bereichskalkül II
■ Atomare Formeln (fortg.):
◆ Prädikatanwendungen für Datenbankprädikate, notiert alsR(t1, . . . , tn)für einen RelationennamenR. Voraussetzung:nmuß die Stelligkeit der RelationR sein und alletimüssen vom passenden Typ sein Beispiel:bestellt(’Maier’, x,100)
■ Formeln wie üblich mit∧,∨,¬,∀und∃.
■ Anfragen:{x1, . . . , xn|φ(x1, . . . , xn)}
φist Formel über den in der Ergebnisliste aufgeführten Variablenx1bisxn. Das Ergebnis ist eine Menge von Tupeln. Die Tupelkonstruktion erfolgt implizit aus den Werten der Variablen in der Ergebnisliste.
Basiskalkül
Einschränkung des Bereichskalküls:
■ Wertebereich: ganze Zahlen
■ Datentypprädikate werden wie bei der
Relationenalgebra auf Gleichheit und elementare Vergleichsoperatoren eingeschränkt
■ Funktionsanwendungen sind nicht erlaubt; nur
Konstanten dürfen neben Bereichsvariablen als Terme verwendet werden
VL Datenbanken I – 6–43
Sichere Anfragen
■ 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)}
Einfaches Beispiel für sichere Anfrage:
{x, y|R(x, y)}
VL Datenbanken I – 6–44
Sichere Anfragen II
■ Weiteres Beispiel für sichere Anfrage:
{x, y|y= 10∧x >0∧x <10}
Sicherheit folgt direkt aus den Regeln der Arithmetik.
Semantische Sicherheit ist im allgemeinen nicht entscheidbar !
Syntaktisch sichere Anfragen
■ Syntaktisch sichere Anfragen: Anfragen, die
syntaktischen Einschränkungen unterliegen, um die semantische Sicherheit zu erzwingen.
■ Grundidee:
Jede freie Variableximuß überall inφ(x1, . . .) durch positives Auftretenxi=toderR(. . . , 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.
VL Datenbanken I – 6–46
Relationen für Beispiele
Kunde(KName,Adresse,Konto), bestellt(KName,WareBez,Anzahl)
Ware(WareBez,Preis,Vorrat)
VL Datenbanken I – 6–47
Beispiele Bereichskalkül
„Alle (Namen von) Kunden in Magdeburg’".
{x|Kunde(x, y, z)∧y=0MD0}
■ Vereinfachte Notation: Ansonsten ungebundene
Variablen (hieryundz) im Bedingungsteil existentiell mit
∃gebunden. Vollständige Version:
{x| ∃y∃zKunde(x, y, z)∧y=0MD0}
■ Einsparung von Bereichsvariablen, indem Konstanten als Parameter des Prädikats eingesetzt werden:
{x|Kunde(x,0MD0, z)}
Beispiele Bereichskalkül II
■ Abkürzung für beliebige, unterschiedliche existentiell gebundene Variablen ist _ Symbol:
{x|Kunde(x, y,_)∧y=0MD0}
■ Verschiedene Auftreten des Symbols _ stehen hierbei für paarweise verschiedene Variablen.
VL Datenbanken I – 6–49
Beispiele Bereichskalkül II
„Städte mit mehr als zwei Kunden’".
{y|Kunde(x, y, z)∧Kunde(x0, y, z0)∧x6=x0}
■ Diese Anfrage zeigt eine Verbundbildung über das zweite Attribut derKunde-Relation
■ Verbundbildung kann einfach durch die Verwendung der selben Bereichsvariablen als Parameter in
verschiedenen Relationsprädikaten erfolgen
VL Datenbanken I – 6–50
Beispiele Bereichskalkül III
„Wer hat Waren unter 1.- DM bestellt?’"
{x, w|Kunde(x, y, z)∧bestellt(x, w, a)∧ Ware(w, p, v)∧a >0∧p <1.00}
■ Verbund über drei Relationen
Beispiele Bereichskalkül IV
„Wer hat überhaupt etwas bestellt?’"
{x|Kunde(x, y, z)∧ ∃w∃a(bestellt(x, w, a)∧a >0)}
■ 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 – 6–52
Beispiele Bereichskalkül V
„Wer hat nur Waren in großer Anzahl bestellt?’"
{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 – 6–53
Ausdrucksfähigkeit Bereichskalkül
Bereichskalkül ist streng relational vollständig, d.h. zu jedem Termτ der Relationenalgebra gibt es einen äquivalenten (sicheren) Ausdruckηdes Bereichskalküls.
Umsetzung von Relationenoperationen
Gegeben: zwei RelationenschemataR(A1, . . . , An)und S(B1, . . . , Bm)
■ Vereinigung (fürn=m).
R∪S={xˆ 1. . . xn|R(x1, . . . , xn)∨S(x1, . . . , xn)}
■ Differenz (fürn=m).
R−S={xˆ 1. . . xn|R(x1, . . . , xn)∧ ¬S(x1, . . . , xn)}
■ Natürlicher Verbund.
R ./ S=ˆ {x1. . . xnxn+1. . . xn+m−i|R(x1, . . . , xn)∧ S(x1, . . . , xi, xn+1, . . . , xn+m−i)}
Hierbei seien die ersteniAttribute vonRundSdie Verbundattribute, alsoAj=Bj fürj= 1. . . i.
VL Datenbanken I – 6–55
Umsetzung von Relationenoperationen II
■ Projektion.
πA(R) ˆ={y1. . . yk| ∃x1. . .∃xn(R(x1, . . . , xn)∧y1=xi1
∧ · · · ∧yk=xik)}
Hierbei ist die Attributliste der Projektion wie folgt gegeben:A= (Ai1, . . . , Aik)
■ Selektion.
σφ(R) ˆ={x1. . . xn|R(x1, . . . , xn)∧φ0} Die Formelφ0wird hierbei ausφgewonnen, indem Variablexian Stelle der AttributnamenAieingesetzt werden.
VL Datenbanken I – 6–56
Änderungsoperationen
■ u(d) :=inserttintori(Ri)
d7−→
d0:={r1, . . . , ri∪ {t}, . . . , rp} fallsd0∈DAT(S)
d sonst
■ u(d) :=deletetfromri(Ri)
d7−→
d0:={r1, . . . , ri− {t}, . . . , rp} fallsd0∈DAT(S)
d sonst
■ u(d) :=replacet→t0inri(Ri) d7−→
d0:={r1, . . . ,(ri− {t})∪ {t0}, . . . , rp} fallsd0∈DAT(S)
d sonst