Kapitel 4: Grundlagen von Anfragen

Werbung
Kapitel 4:
Grundlagen
von Anfragen
Klemens Böhm
Datenbankeinsatz: Grundlagen von Anfragen – 1
Grundlagen von Anfragen
Motivation
z
Anford.
z
AnfrageKalküle
Anforderungen an Anfragesprachen,
Anfrage-Kalküle.
Bereichskalkül
Sichere
Anfragen
Beispiele
Bereichskalkül
Ausdrucksfähigkeit
Tupelkalkül
Klemens Böhm
Datenbankeinsatz: Grundlagen von Anfragen – 2
Einführung (1)
Motivation
z
Anford.
AnfrageKalküle
Bereichskalkül
Sichere
Anfragen
Beispiele
Bereichskalkül
z
z
Anfrage:
Formulierung eines Informationsbedürfnisses
in hierfür vorgesehener formaler Sprache.
Bedeutet: Anfragen sind deklarativ.
Benutzer formuliert „Was will ich haben?“ und nicht
„Wie komme ich an das, was ich haben will?“.
Ausdrucksfähigkeit
Tupelkalkül
Klemens Böhm
Datenbankeinsatz: Grundlagen von Anfragen – 3
Einführung (2)
Motivation
Anford.
AnfrageKalküle
Bereichskalkül
Sichere
Anfragen
Beispiele
Bereichskalkül
Ausdrucksfähigkeit
z
Formale Sprache – es muß stets absolut klar sein,
was Anfrage bedeutet.
‹ Eine Möglichkeit,
allerdings mit Nachteilen behaftet –
Anfrage auf Algebra-Ausdruck abbilden,
‹ alternativ: Verwendung von Begrifflichkeiten
und Konzepten aus der Logik
zur exakten Beschreibung.
Tupelkalkül
Klemens Böhm
Datenbankeinsatz: Grundlagen von Anfragen – 4
Anforderungen an Anfragesprachen (1)
Motivation
Anford.
AnfrageKalküle
Bereichskalkül
Sichere
Anfragen
Beispiele
Bereichskalkül
Ausdrucksfähigkeit
Tupelkalkül
(Liste aus Buch von Heuer und Saake.)
z Ad-Hoc-Formulierung:
Der Benutzer soll eine Anfrage formulieren
können, ohne ein vollständiges Programm
schreiben zu müssen.
Meines Erachtens keine Eigenschaft der Sprache,
sondern der System-Umgebung.
z Deskriptivität
= Deklarativität.
Hartes Kriterium,
muß gemäß Definition 100%ig erfüllt sein.
z Abgeschlossenheit: Das Ergebnis ist wieder
eine Instanz des Datenmodells.
Es kann somit wieder als Eingabe
für die nächste Anfrage verwendet werden.
Klemens Böhm
Datenbankeinsatz: Grundlagen von Anfragen – 5
Anforderungen an Anfragesprachen (2)
Motivation
z
Anford.
AnfrageKalküle
Bereichskalkül
Sichere
Anfragen
Beispiele
Bereichskalkül
z
Ausdrucksfähigkeit
Tupelkalkül
z
Adäquatheit: Alle Konstrukte
des zugrundeliegenden Datenmodells
werden unterstützt.
Gegenbeispiel: Anfragesprache für OO-Modell,
in der man Methoden aus Schema
nicht verwenden kann.
Orthogonalität: Sprachkonstrukte sind
in ähnlichen Situationen auch ähnlich anwendbar.
Gegenbeispiel:
UNION in (früherer Version von) SQL.
Sicherheit: Keine syntaktisch korrekte Anfrage
darf in eine Endlosschleife geraten
oder ein unendliches Ergebnis liefern.
Klemens Böhm
Datenbankeinsatz: Grundlagen von Anfragen – 6
Anforderungen an Anfragesprachen (3)
Motivation
z
Anford.
AnfrageKalküle
Bereichskalkül
Sichere
Anfragen
Beispiele
Bereichskalkül
z
Eingeschränktheit: Die Anfragesprache
darf keine komplette Programmiersprache sein.
(Folgt u. a. aus Sicherheit.)
Vollständigkeit: Die Sprache muß mindestens
die Anfragen einer Standardsprache
ausdrücken können.
(Z. B. Relationenalgebra.)
Ausdrucksfähigkeit
Tupelkalkül
z
Klemens Böhm
Datenbankeinsatz: Grundlagen von Anfragen – 7
Anfrage-Kalküle (1)
Motivation
z
Anford.
AnfrageKalküle
Bereichskalkül
Sichere
Anfragen
z
Beispiele
Bereichskalkül
Ausdrucksfähigkeit
Tupelkalkül
z
Logikbasierter Ansatz:
Relationeninhalte entsprechen Belegungen
von Prädikaten einer Logik,
Anfragen abgeleiteten Prädikaten.
Kalkül: Menge rein ‚mechanisch‘
anzuwendender syntaktischer
Umformungsregeln.
Ziel: Einsatz eines derartigen Kalküls
zur Auswertung von Datenbank-Anfragen.
Klemens Böhm
Datenbankeinsatz: Grundlagen von Anfragen – 8
Anfrage-Kalküle (2)
Motivation
z
Beispiel:
Anford.
Kunde KName
AnfrageKalküle
Klemens
Michael
Uwe
Bereichskalkül
Adresse
MD
ZH
M
Konto
12345
23456
34567
Sichere
Anfragen
Beispiele
Bereichskalkül
Ausdrucksfähigkeit
‹
{x|∃y∃z: Kunde(x, y, z) ∧ y='MD'}
‹ Welche
Belegungen machen Aussage wahr?
Tupelkalkül
Klemens Böhm
Datenbankeinsatz: Grundlagen von Anfragen – 9
Ein allgemeiner Kalkül (1)
Motivation
z
Anford.
AnfrageKalküle
Bereichskalkül
z
Sichere
Anfragen
Beispiele
Bereichskalkül
Ausdrucksfähigkeit
z
Tupelkalkül
z
Motivation: Mathematische Notation
für explizite Mengenkonstruktion.
{x2|x∈N ∧ x3>0 ∧ x3<1000}
Drei Bestandteile:
‹ Angabe der Menge, auf die wir uns beziehen,
‹ Bedingungen,
‹ Berechnung des Ergebnisses.
Anfrage hat die Form {f(x)|p(x)};
x bezeichnet Menge von freien Variablen
x={x1: D1, ..., xn: Dn}
Im Bedingungsteil in unserem speziellen Fall
Bezugnahme auf Datenbank-Objekte.
Klemens Böhm
Datenbankeinsatz: Grundlagen von Anfragen – 10
Ein allgemeiner Kalkül (2)
Motivation
Anford.
AnfrageKalküle
Bereichskalkül
z
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).
Sichere
Anfragen
Beispiele
Bereichskalkül
Ausdrucksfähigkeit
Tupelkalkül
Klemens Böhm
Datenbankeinsatz: Grundlagen von Anfragen – 11
Ein allgemeiner Kalkül (3)
Motivation
Anford.
AnfrageKalküle
Bereichskalkül
Sichere
Anfragen
Beispiele
Bereichskalkül
Ausdrucksfähigkeit
Tupelkalkül
z
p 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ädikatenlogische Operatoren ∧, ∨, ¬, ∀, ∃
→ Formeln.
Klemens Böhm
Datenbankeinsatz: Grundlagen von Anfragen – 12
Ergebnisbestimmung einer Anfrage
Motivation
1.
Anford.
AnfrageKalküle
Bereichskalkül
Sichere
Anfragen
2.
Bestimme aller Belegungen
der freien Variablen in x ={x1: D1, ..., xn: Dn},
für die das Prädikat p wahr wird.
Wende Funktion f auf die
durch diese Belegungen gegebenen Werte an.
Beispiele
Bereichskalkül
Ausdrucksfähigkeit
Tupelkalkül
Klemens Böhm
Datenbankeinsatz: Grundlagen von Anfragen – 13
Sicherheit von Anfragen
Motivation
z
Anford.
AnfrageKalküle
Bereichskalkül
Sichere
Anfragen
Beispiele
Bereichskalkül
Ausdrucksfähigkeit
z
Unter welchen Umständen liefern Kalkülanfragen
endliche Ergebnisse?
Beispiel: Inverses einer Datenbank-Relation.
{x|∃y∃z: ¬Kunde(x, y, z)}
z
z
I. a. abhängig vom Inhalt der Datenbank,
ob Ergebnis endlich oder nicht.
Sicherheit von Anfragen –
Ergebnis endlich,
unabhängig vom Datenbank-Inhalt.
Tupelkalkül
Klemens Böhm
Datenbankeinsatz: Grundlagen von Anfragen – 14
Relationale Kalküle
Motivation
z
Anford.
AnfrageKalküle
Bereichskalkül
Sichere
Anfragen
z
Bereichskalkül: Variablen nehmen Werte
elementarer Datentypen (Bereiche) an.
Domain Calculus.
Tupelkalkül: Variablen variieren über Tupelwerte
(entsprechend den Zeilen einer Relation).
Beispiele
Bereichskalkül
Ausdrucksfähigkeit
Tupelkalkül
z
Klemens Böhm
Datenbankeinsatz: Grundlagen von Anfragen – 15
Bereichskalkül (1)
Motivation
Anford.
AnfrageKalküle
Bereichskalkül
Sichere
Anfragen
Beispiele
Bereichskalkül
z
Terme:
‹ Konstanten, etwa 42 oder 'MD'.
‹ Variablen zu Datentypen, etwa x.
‹ Die Datentypangabe erfolgt in der Regel implizit
und wird nicht explizit deklariert.
‹ Beispiel von vorhin:
– Kunde(KName, Adresse, Konto)
– {x|∃y∃z: Kunde(x, y, z) ∧ y='MD'}
Ausdrucksfähigkeit
Tupelkalkül
– x hat Typ der ersten Spalte
der Kunde-Relation.
‹ Funktionsanwendung f(t1, ..., tn):
Funktion f, Terme ti, etwa plus(12, x),
bzw. in Infixnotation 12+x.
Klemens Böhm
Datenbankeinsatz: Grundlagen von Anfragen – 16
Bereichskalkül (2)
Motivation
Anford.
AnfrageKalküle
Bereichskalkül
Sichere
Anfragen
Beispiele
Bereichskalkül
Ausdrucksfähigkeit
Tupelkalkül
z
Atomare Formeln:
‹ Prädikatanwendung θ(t1, ..., tn),
θ∈{<, >, ≤, ≥, ≠, =, ...} Datentypprädikat,
Terme ti. Zweistellige Prädikate wie üblich
in Infix-Notation.
Beispiele: x=y, 42>x, 3+7=11; y='MD'
‹ 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: Kunde(x, y, z),
Kunde(x, 'MD', z).
Klemens Böhm
Datenbankeinsatz: Grundlagen von Anfragen – 17
Bereichskalkül (3)
Motivation
z
Anford.
z
AnfrageKalküle
Bereichskalkül
Sichere
Anfragen
Beispiele
Bereichskalkül
Ausdrucksfähigkeit
Tupelkalkül
Formeln wie üblich mit ∧, ∨, ¬, ∃, ∀.
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.
‹ Tupelkonstruktion erfolgt implizit
aus den Werten der Variablen
in der Ergebnisliste.
Beispiele:
‹ {x|∃y∃z: Kunde(x, y, z) ∧ y='MD'}
‹ {x, z|∃y: Kunde(x, y, z) ∧ y='MD'}
Klemens Böhm
Datenbankeinsatz: Grundlagen von Anfragen – 18
Basiskalkül
Motivation
Anford.
AnfrageKalküle
Bereichskalkül
Sichere
Anfragen
Beispiele
Bereichskalkül
Ausdrucksfähigkeit
Tupelkalkül
Basiskalkül – Einschränkung des Bereichskalküls,
für theoretische Untersuchungen:
z Wertebereich: ganze Zahlen,
z Datentypprädikate werden
wie bei der Relationenalgebra auf Gleichheit
und elementare Vergleichsoperatoren
eingeschränkt,
z Funktionsanwendungen sind nicht erlaubt;
nur Konstanten dürfen neben Bereichsvariablen
als Terme verwendet werden.
Klemens Böhm
Datenbankeinsatz: Grundlagen von Anfragen – 19
Sichere Anfragen (1)
Motivation
z
Anford.
AnfrageKalküle
Bereichskalkül
Sichere
Anfragen
Beispiele
Bereichskalkül
Ausdrucksfähigkeit
Tupelkalkül
z
z
z
Sichere Anfragen:
Anfragen, die für jeden Datenbankzustand σ(R)
ein endliches Ergebnis liefern.
Beispiel für nicht sichere Anfrage:
{x, y |¬R(x, y)}
Beispiel für sichere Anfrage:
{x, y |R(x, y)}
Sichere Anfragen = semantisch sichere Anfragen;
im Gegensatz dazu: Syntaktisch sichere Anfragen,
kommt gleich.
Klemens Böhm
Datenbankeinsatz: Grundlagen von Anfragen – 20
Sichere Anfragen (2)
Motivation
z
Anford.
AnfrageKalküle
z
Bereichskalkül
Sichere
Anfragen
Beispiele
Bereichskalkül
z
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.
Ausdrucksfähigkeit
Tupelkalkül
Klemens Böhm
Datenbankeinsatz: Grundlagen von Anfragen – 21
Syntaktisch sichere Anfragen
Motivation
z
Anford.
AnfrageKalküle
Bereichskalkül
z
Sichere
Anfragen
Beispiele
Bereichskalkül
Ausdrucksfähigkeit
z
Tupelkalkül
z
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.
Beispiel:
{x|(∃y∃z: (Kunde(x, y, z) ∧ y='MD'))
∨ (x>'JL')}
Klemens Böhm
Datenbankeinsatz: Grundlagen von Anfragen – 22
Relationen für Beispiele
Motivation
Anford.
AnfrageKalküle
Kunde(KName, Adresse, Konto)
bestellt(KName, WareBez, Anzahl)
Ware(WareBez, Preis, Vorrat)
Bereichskalkül
Sichere
Anfragen
Beispiele
Bereichskalkül
Ausdrucksfähigkeit
Tupelkalkül
Klemens Böhm
Datenbankeinsatz: Grundlagen von Anfragen – 23
Beispiele Bereichskalkül (1)
Motivation
z
Anford.
AnfrageKalküle
Bereichskalkül
z
Sichere
Anfragen
Beispiele
Bereichskalkül
Ausdrucksfähigkeit
Tupelkalkül
z
„Alle (Namen von) Kunden in Magdeburg“.
{x|Kunde(x, y, z) ∧ y='MD'}
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='MD'}
Einsparung von Bereichsvariablen,
indem Konstanten als Parameter des Prädikats
eingesetzt werden:
{x|Kunde(x, 'MD', z)}
Klemens Böhm
Datenbankeinsatz: Grundlagen von Anfragen – 24
Beispiele Bereichskalkül (2)
Motivation
z
Anford.
AnfrageKalküle
Bereichskalkül
Sichere
Anfragen
Beispiele
Bereichskalkül
z
Abkürzung für beliebige, unterschiedliche
existentiell gebundene Variablen ist _ Symbol:
{x|Kunde(x, y, _) ∧ y='MD'}
Verschiedene Auftreten des Symbols _
stehen hierbei
für paarweise verschiedene Variablen.
Ausdrucksfähigkeit
Tupelkalkül
Klemens Böhm
Datenbankeinsatz: Grundlagen von Anfragen – 25
Beispiele Bereichskalkül (3)
Motivation
z
Anford.
AnfrageKalküle
Bereichskalkül
Sichere
Anfragen
Beispiele
Bereichskalkül
Ausdrucksfähigkeit
z
z
„Städte mit zwei oder mehr Kunden“.
{y|Kunde(x, y, z) ∧ Kunde(x', y, z')
∧ x≠x'}
Diese Anfrage zeigt eine Verbundbildung
über das zweite Attribut der Kunde-Relation.
Verbundbildung kann einfach
durch Verwendung derselben Bereichsvariablen
als Parameter in verschiedenen Relationsprädikaten erfolgen.
Tupelkalkül
Klemens Böhm
Datenbankeinsatz: Grundlagen von Anfragen – 26
Beispiele Bereichskalkül (4)
Motivation
z
Kunde(KName, Adresse, Konto)
bestellt(KName, WareBez, Anzahl)
Ware(WareBez, Preis, Vorrat)
z
„Wer hat Waren unter 1.-- EUR bestellt?“
{x, w|Kunde(x, y, z)
∧ bestellt(x, w, a) ∧ Ware(w, p, v)
∧ a>0 ∧ p<1.00}
Verbund über drei Relationen.
Anford.
AnfrageKalküle
Bereichskalkül
Sichere
Anfragen
Beispiele
Bereichskalkül
Ausdrucksfähigkeit
Tupelkalkül
z
Klemens Böhm
Datenbankeinsatz: Grundlagen von Anfragen – 27
Beispiele Bereichskalkül (5)
Motivation
z
Anford.
{x|Kunde(x, y, z)
∧ ∃w∃a: (bestellt(x, w, a) ∧ a>0)}
AnfrageKalküle
Bereichskalkül
Sichere
Anfragen
Beispiele
Bereichskalkül
Ausdrucksfähigkeit
Tupelkalkül
„Wer hat überhaupt etwas bestellt?“
z
z
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}
Klemens Böhm
Datenbankeinsatz: Grundlagen von Anfragen – 28
Beispiele Bereichskalkül (6)
Motivation
z
Anford.
AnfrageKalküle
Bereichskalkül
Sichere
Anfragen
z
„Wer hat nur Waren in großer Anzahl bestellt?“
{x|Kunde(x, y, z)
∧ ∀w∀a(bestellt(x, w, a) ⇒ a>1000)}
Universell gebundene Teilformeln
können nicht aufgelöst werden.
Beispiele
Bereichskalkül
Ausdrucksfähigkeit
Tupelkalkül
z
Klemens Böhm
Datenbankeinsatz: Grundlagen von Anfragen – 29
Sicherheit von Anfragen
Motivation
(Folie von vorhin.)
Anford.
z
AnfrageKalküle
Bereichskalkül
Sichere
Anfragen
Beispiele
Bereichskalkül
Ausdrucksfähigkeit
Tupelkalkül
z
Unter welchen Umständen liefern Kalkülanfragen
endliche Ergebnisse?
Beispiel: Inverses einer Datenbank-Relation.
{x|∃y∃z: ¬Kunde(x, y, z)}
z
z
I. a. abhängig vom Inhalt der Datenbank,
ob Ergebnis endlich oder nicht.
Geben Sie
Sicherheit von Anfragen –
Beispiel hierfür
Ergebnis endlich,
an.
unabhängig vom Datenbank-Inhalt.
Klemens Böhm
Datenbankeinsatz: Grundlagen von Anfragen – 30
Ausdrucksfähigkeit Bereichskalkül
Motivation
Anford.
AnfrageKalküle
Bereichskalkül
z
Bereichskalkül ist streng relational vollständig,
d. h. zu jedem Term τ der Relationenalgebra
gibt es einen äquivalenten (sicheren) Ausdruck η
des Bereichskalküls.
Sichere
Anfragen
Beispiele
Bereichskalkül
Ausdrucksfähigkeit
Tupelkalkül
Klemens Böhm
Datenbankeinsatz: Grundlagen von Anfragen – 31
Umsetzung
von Relationenoperationen (1)
Motivation
Anford.
AnfrageKalküle
Bereichskalkül
Sichere
Anfragen
Beispiele
Bereichskalkül
Ausdrucksfähigkeit
Tupelkalkül
z
Gegeben: zwei Relationenschemata R(A1, ..., An)
und S(B1, ..., Bm).
‹ Vereinigung (für n=m).
R∪S ≡ {x1 ... xn|R(x1, ..., xn) ∨ S(x1, ..., xn)}
‹ Differenz (für n=m).
R–S ≡ {x1 ... xn|R(x1, ..., xn) ∧ ¬S(x1, ..., xn)}
Ist das sicher?
Wenn ja, syntaktisch oder semantisch sicher?
Klemens Böhm
Datenbankeinsatz: Grundlagen von Anfragen – 32
Umsetzung
von Relationenoperationen (2)
Motivation
Anford.
AnfrageKalküle
Bereichskalkül
Sichere
Anfragen
Beispiele
Bereichskalkül
z
Gegeben: zwei Relationenschemata R(A1, ..., An)
und S(B1, ..., Bm). (Forts.)
‹ Natürlicher Verbund.
R S ≡ {x1 ... xn xn+1 ... xn+m-i|R(x1, ..., xn) ∧
S(x1, ..., xi, xn+1, ..., xn+m-i)}
Hierbei seien die ersten i Attribute von R und S
die Verbundattribute, also Aj = Bj für j = 1 ... i.
Ausdrucksfähigkeit
Tupelkalkül
Klemens Böhm
Datenbankeinsatz: Grundlagen von Anfragen – 33
Umsetzung
von Relationenoperationen (2)
Motivation
Anford.
Ausleih
AnfrageKalküle
Bereichskalkül
Sichere
Anfragen
Invnr
4711
1201
0007
4712
Name
Meyer
Schulz
Müller
Meyer
i=1, n=2, m=4
Beispiele
Bereichskalkül
Ausdrucksfähigkeit
Buch
Tupelkalkül
Klemens Böhm
Invnr
0007
1201
4711
4712
4717
Titel
Dr. No
Objektbanken
Datenbanken
Datenbanken
Pascal
ISBN
3-125
3-111
3-765
3-891
3-999
Autor
James Bond
Heuer
Vossen
Ullman
Wirth
Datenbankeinsatz: Grundlagen von Anfragen – 34
Umsetzung
von Relationenoperationen (3)
Motivation
Anford.
z
AnfrageKalküle
Bereichskalkül
Sichere
Anfragen
Beispiele
Bereichskalkül
Ausdrucksfähigkeit
Tupelkalkül
z
Projektion.
πA(R)≡{y1 ... yk|∃x1 ... ∃xn(R(x1, ..., xn)
∧ y1=xi1 ∧ ... ∧ yk=xik)}
Attributliste der Projektion
ist wie folgt gegeben: A=(Ai1, ..., Aik)
Beispiel:
Buch
Invnr Titel ISBN Autor
π{ISBN, Titel}(Buch)≡{y1 y2|∃x1 …∃xn(Buch(x1, ..., xn)
∧ y1=x3 ∧ y2=x2)}
Klemens Böhm
Datenbankeinsatz: Grundlagen von Anfragen – 35
Umsetzung
von Relationenoperationen (3)
Motivation
Anford.
z
AnfrageKalküle
Bereichskalkül
Sichere
Anfragen
Beispiele
Bereichskalkül
Ausdrucksfähigkeit
z
Selektion.
σϕ(R)≡{x1 ... xn|R(x1, ..., xn) ∧ φ‘}
Die Formel φ‘ wird aus φ gewonnen,
indem Variable xi an Stelle der Attributnamen Ai
eingesetzt werden.
Beispiel:
σTitel='Tante Julia'(Buch)
≡{x1 ... x4|Buch(x1, ..., x4) ∧ x2= 'Tante Julia'}
Tupelkalkül
Klemens Böhm
Datenbankeinsatz: Grundlagen von Anfragen – 36
Änderungsoperationen (1)
Motivation
z
Anford.
AnfrageKalküle
Bereichskalkül
Sichere
Anfragen
z
Beispiele
Bereichskalkül
Ausdrucksfähigkeit
Tupelkalkül
z
u(d) := insert t into ri(Ri)
⎧d' := {r1,..., ri ∪ {t},..., rp } falls d'∈ SAT(S)
da ⎨
d
sonst
⎩
u(d) := delete t from ri(Ri)
⎧d' := {r1,..., ri − {t},..., rp } falls d'∈ SAT(S)
da ⎨
d
sonst
⎩
u(d) := replace t→t' in ri(Ri)
⎧d' := {r1,..., (ri − {t}) ∪ {t'},..., rp } falls d'∈ SAT(S)
da ⎨
d
sonst
⎩
Klemens Böhm
Datenbankeinsatz: Grundlagen von Anfragen – 37
Änderungsoperationen (2)
Motivation
Anford.
AnfrageKalküle
Bereichskalkül
z
Erläuterungen:
‹ Tupel war Abbildung für jede Spalte der Relation.
‹ SAT – Menge aller gültigen Datenbanken
(bezüglich vorliegender Integritätsbedingungen).
Sichere
Anfragen
Beispiele
Bereichskalkül
Ausdrucksfähigkeit
Tupelkalkül
Klemens Böhm
Datenbankeinsatz: Grundlagen von Anfragen – 38
Tupelkalkül (1)
Motivation
z
Anford.
AnfrageKalküle
z
Bereichskalkül
Sichere
Anfragen
Beispiele
Bereichskalkül
Ausdrucksfähigkeit
z
Tupelkalkül
z
Anfragen haben ‚im Prinzip‘
gleichen Aufbau wie im Bereichskalkül.
Unterschiede:
‹ Variablen t sind tupelwertig.
‹ R(t) bzw. t∈R bedeuten „t ist in Relation R“.
‹ t.Ai bzw. t[i] bzw. t(i) –
Zugriff auf i-te Tupelkomponente.
Ausdruck des Basis-Tupelkalküls
hat die Form {t|ϕ(t)}.
Beispiel:
{t| Kunde(t) ∧ ∃b(bestellt(b)
∧ b.WName='Papier' ∧ b.KName = t.KName)}
Klemens Böhm
Datenbankeinsatz: Grundlagen von Anfragen – 39
Tupelkalkül (2)
Motivation
Anford.
AnfrageKalküle
Bereichskalkül
Sichere
Anfragen
z
Konstruktion neuer Tupel,
wenn Struktur der Ergebnistupel nicht bereits auftritt.
Beispiel:
{t.KName, t.Adresse|
Kunde(t) ∧ ∃b(bestellt(b)
∧ b.WName='Papier' ∧ b.KName = t.KName)}
Beispiele
Bereichskalkül
Ausdrucksfähigkeit
Tupelkalkül
Klemens Böhm
Datenbankeinsatz: Grundlagen von Anfragen – 40
Mögliche Prüfungsfragen
z
z
z
z
z
z
<Die einzelnen Anforderungen an
Anfragesprachen erklären können.>
<Diverse Anfragen im Bereichs- bzw. Tupelkalkül
formulieren können.>
Wie sind Anfragen im Bereichskalkül aufgebaut?
Was bedeutet Sicherheit?
Dto. syntaktische Sicherheit?
Was ist die Motivation dafür,
syntaktische Sicherheit einzuführen?
Wie ausdrucksmächtig ist der Bereichskalkül?
Wie zeigt man das?
Klemens Böhm
Datenbankeinsatz: Grundlagen von Anfragen – 41
Herunterladen