2.3 Das Relationenkalkül
Bisher
Benutzung einer prozeduralen Anfragesprache
Explizite Beschreibung, wie das Ergebnis berechnet wird
Hoher Aufwand bei der Formulierung komplexer
Anfragen
Zugrundeliegende Idee beim Relationenkalkül
Deklarative Beschreibung der Ergebnisrelation ohne
dabei explizit eine Vorschrift für die Konstruktion der
Ergebnisrelation zu geben.
Zwei bekannte Kalküle
Tupelkalkül und Domänenkalkül
79
Anfragesprachen
Entwicklung einer Anfragesprache basierend auf
dem Relationenkalkül
Erheblich einfachere und kompaktere Formulierung
komplexer Anfragen.
SQL
Sprache
S
h iistt eine
i Mi
Mischung
h
zwischen
i h R
Relationale
l ti
l Al
Algebra
b
(RA) und dem Tupelkalkül (TK)
Anfragen, die auf einem Relationenkalkül basieren
Graphische Anfragesprache QBE (Query by Example)
Anfragesprache von Microsoft Access
Quel – Anfragesprache im Ingres-System
Datalog
Basiert auf Konzepten der Sprache Prolog
Unterstützung von Rekursion
80
Grundlagen
Prädikatenlogik
g erster Stufe
Konzept aus der mathematischen Logik
Übertragung
g g auf Datenbanken unter folgenden
g
Annahmen (Closed World Assumption):
Tupel in der Datenbank sind elementare Aussagen, die
81
wahr sind.
Anfragen sind Aussagen, die daraus hergeleitet werden
können.
können
Aussagen, die nicht in der Datenbank sind und nicht
hergeleitet
g
werden können,, sind falsch!
Das Tupelkalkül
Tupelkalkül
p
Variablen, die einem Tupel einer Relation entsprechen.
Tupelvariable
Einführungg einer Sprache
Syntax
Semantik
Interpretation der Syntax
82
Syntax des Tupelkalküls
Eine Formel setzt sich zusammen aus Atomen der
Form
r(t)
83
r ist eine Relation und t ist eine Tupelvariable mit t r.
t[A] = u[B]
t und u sind Tupelvariablen,
Tupelvariablen A und B sind Attribute
Attribute.
t[A] = c
t ist eine Tupelvariable,
p
, A ein Attribut und c eine
Konstante aus dom(A).
B i i l
Beispiele:
Personal(t), t[Fähigkeit] > 4, t[abtnr] = u[abtnr]
Zusammengesetzte Formeln
Eine Formel ist entweder
ein Atom
oder rekursiv durch folgende Ausdrücke definiert
(Ann.: f und g sind Formeln):
f g, f g, f, (f)
t: f(t),
f(t) t: f(t)
t sind (freie) Variablen in der Formel f
Beispiele
t[Fähigkeit] > 4
(t[pnr] = u[pnr]) t[Fähigkeit] > 4
PMZuteilung(t) (t[pnr] = u[pnr]) t[Fähigkeit] > 4
t:
t PMZuteilung(t)
PMZ t il
(t) (t[pnr]
(t[ ] = u[pnr])
[ ]) v[Fähigkeit]
[Fähi k it] > 4
84
Freie und gebundene Variablen
Informell
Durch Angabe eines Quantors direkt vor einer freien
Variablen wird diese gebunden.
Formale Definition
Das Auftreten einer Tupelvariablen in einem Atom ist stets
frei.
Für f := g und f := (g) sind alle freien Variablen von g auch
frei in f.
Für f := g h und f := g h sind die Variablen in f frei,, falls sie
in g oder h frei sind.
Sei t eine freie Variable in g. Dann wird durch f := t: g(t), f:=
t: g(
g(t)) t zu einer g
gebundenen Variable in f.
Beispiel
t: PMZuteilung(t) t[Fähigkeit] > 4
85
Ausdruck im Tupelkalkül
Definition
Ein Ausdruck des Tupelkalküls hat die Form
{t | f(t)}
wobei t die einzig freie Variable in der Formel f ist.
86
Substitution in einer Formel
Sei f eine Formel mit einer freien Variable x. Dann ist
f(t/x)
die Substitution der Tupelvariable x in f durch das Tupel t. In
jedem Atom
Atom, das ein freies Auftreten von x enthält
enthält, gehen wir
folgendermaßen vor:
87
r(x) wird ersetzt durch “wahr”, falls t r. Andernfalls durch “falsch”.
x[A] u[B] wird ersetzt durch c u[B] mit c = t[A] (Ann.: x s)
x[A] c wird ersetzt durch “wahr”, falls t[A] c gilt. Andernfalls durch
“falsch”.
Durch Substitution gewinnt man eine Formel, die nur noch die
Konstanten “wahr” und “falsch” sowie Atome mit gebundenen
Variablen enthält.
Beispiele
Beispiel
p
Ausgangsformel
f(t) := u: PMZuteilung(u) ˅ u[pnr] = t[pnr] ˅
u[Fähigkeit]
[Fähi k it] < t[Fähigkeit]
t[Fähi k it]
Die Variable u ist gebunden und die Variable t frei.
Ersetzen von t mit t[pnr] = 73 und t[Fähigkeit] = 5:
u: PMZuteilung(u) ˅ u[pnr] = 73 ˅ u[Fähigkeit] < 5
Beispiele
B i i l
Ausgangsformel
88
PMZuteilung(u) ˅ u[pnr] = 73 ˅ u[Fähigkeit] < 5
Die Variable u ist frei.
Ersetzen von u durch t mit t[pnr] = 51, t[mnr] = 93 und
t[Fähigkeit] = 2:
wahr ˅ falsch ˅ wahr
Interpretation einer Formel
Sei f eine Formel ohne freie Variablen. Die Interpretation I(f) ist
wie folgt definiert:
89
Sei f = “wahr”. Dann ist I(f) := true. Sei f = “falsch”. Dann ist I(f) :=
false.
Sei f = (g). Dann ist I(f) := I(g).
Sei f = g. Dann ist I(f) := true genau dann, falls I(g) = false.
Sei f = g h.
h Dann ist I(f) := true genau dann
dann, falls I(g) = true und I(h)
= true.
Sei f = g h. Dann ist I(f) := true genau dann, falls I(g) = true oder
I(h) = true.
t
Sei f = x: f(x). Dann ist I(f) := true, falls es mindestens ein Tupel t
gibt, so dass I(g(t/x)) = true ist. Andernfalls, I(f) := false
Sei f = x: f(x). Dann ist I(f) := true genau dann, falls für alle t
I(g(t/x))= true gilt. Andernfalls, I(f) := false.
Der Wert des Ausdrucks { x | f(x)
( ) } des Tupelkalküls
p
besteht aus
allen Tupeln t, die I(f(t/x)) = true erfüllen.
Beispiele
Anfragen
g
Finde alle Personalnummern von Angestellten, die an
einer Maschine ausgebildet sind.
{x | u: PMZuteilung(u) u[pnr] = x[pnr] }
Finde alle Personalnummern der Angestellten, die an
keiner Maschine genügend gut ausgebildet sind.
{ | u: PMZ
{x
PMZuteilung(u)
t il
( ) u[Fähigkeit]
[Fähi k it] > 4
u[pnr] = x[pnr] }
Alle Tupel mit dem
passenden Schema
90
Alle Tupel aus
PMZuteilung
Alle Tupel
All
T
l aus
PMZuteilung mit
u[pnr] = 701
Kurzschreibweisen
Einführungg von Kurzschreibweisen:
Relation r und Formel f:
t: r(f(t)) := t: r(t) f(t)
Relation r und Formel f:
t: r(f(t)) := t: r(t) f(t)
Formeln f,
f g:
f g := f g
Beispiel
Berechne die pnr der Angestellten, die an keiner Maschine
genügend gut ausgebildet sind.
{ u | t: PM-Zuteilung( u[pnr] = t[pnr]
v: PM-Zuteilung(v[pnr] = t[pnr] v[Fähigkeit] > 4)
)
}
91
Ausdrucksstärke der Sprache
Satz
Das Tupelkalkül (TK) ist ausdrucksstärker als die RA.
Beweisidee
Zeige
g für die Operatoren der relationalen Algebra,
g
dass
diese sich durch TK ausdrücken lassen.
Projektion, Filter, Vereinigung, Minus, Kartesisches
Produkt Umbenennung
Produkt,
Finde eine Anfrage, die sich in TK ausdrücken lässt,
aber nicht in RA.
{ t | PMZuteilung(t)}
92
Praktische Relevanz
Es können im TK Anfragen mit unendlich große Ergebnismenge
formuliert werden.
93
Benutzer sind an solchen Ergebnissen nicht interessiert.
Solche Anfragen sind nicht effizient zu berechnen.
berechnen
Leider ist das Problem, ob eine Anfrage eine endliche
Ergebnismenge liefert, nicht entscheidbar.
Sichere Ausdrücke
Syntaktische Einschränkung auf Anfragen mit endlicher
Ergebnismenge.
Diese Anfragen werden als sichere Ausdrücke bezeichnet.
Definition ist relativ komplex siehe das Buch „Datenmodelle
Datenmodelle
…“ von Vossen
Sichere Ausdrücke kann man durch Anbinden der Tupelvariablen an
Relationen erhalten
erhalten.
t: r(f(t))
t: r(f(t))
Dabei muss f ebenfalls eine sichere Formel sein.
Satz
94
Das TK eingeschränkt auf sichere Ausdrücke hat die gleiche
Mächtigkeit wie RA.
RA
2.4 Erweiterung der relationalen Algebra
Interessante Anfragen,
g , die leider nicht in RA
ausdrückbar sind.
Berechne zu jeder Maschine die Anzahl von Personen,
welche die Maschine bedienen können.
Liefere die Ergebnisse sortiert.
Was ist unser Problem?
In
I der
d Mengensemantik
M
tik gibt
ibt es keine
k i Ordnung.
Od
Verdichten der Datensätze ist nicht möglich.
Erhaltung von Duplikaten wird nicht untersützt.
untersützt
95
Anforderung für zusätzliche Funktionen
Unterstützungg für das Sortieren der Daten
Unterstützung von Folgen
Erhaltungg von Duplikaten
p
(z.
( B. die durch
Projektion entstehen)
Unterstützung von Multimengen (engl.: bags)
Verdichtung der Daten einer Relation durch
Aggregation
Zusätzliche Operatoren in der relationalen Algebra
96
M-Relationen
Informelle Vorgehensweise
g
In jeder Relation speichern wir uns zu jedem Tuepl noch zusätzlich
die Vielfachheit des Tupels ab.
Operationen der RA müssen noch erweitert
erweitert, so dass jetzt die
Multimengensemantik unterstützt wird.
Formale Definition
Sei V U (U ist das Universum der Attribute) mit dom(V) = |N. Zu
( ) eine
einem Relationenschema RS ist die M-Relation r = r(RS)
endliche Menge von totalen Abbildungen t mit
t :RS {V } dom( A) N
ARS
97
und t(A)
( ) dom(A)
( ) für
f alle A RS
S und t(V)
( ) N.
Im Folgenden bezeichnet MREL(RS) die Menge aller MRelationen über dem Schema RS
RS.
Kartesisches Produkt
Informell
Die Häufigkeit im Ergebnis ergibt sich durch das Produkt der
Häufigkeiten in den beiden M-Relationen.
Beispiel
Formale Definition
Seien r1 MREL(RS1), r2 MREL(RS2) zwei M-Relationen
mit RS1 RS2 = V. Die Ausgabe von r1 x r2 ist eine
((temporäre)
p
) Relation s mit
RELs = RS1 RS2
s = { t | t[RS1] r1[RS1] und t[RS2] r2[RS2] und
t[V] = r1[V]*r2[V]}
98
Summenvereinigung
Informell
Die Zeilen von zwei Relationen werden vereinigt und die
Häufigkeit ergibt sich aus der Summe der
Ei
Einzelhäufigkeiten
lhä fi k it
Beispiel
Formale Definition
Seien r1,r2 MREL(RS) zwei Relationen über dem
gleichen Schema RS. Die Ausgabe von r1 r2 ist eine
(temporäre) Relation s mit
RELs = RS
s = {t | t r1 oder t r2 und t[V] = r1[V] + r2[V] }
99
Multimengensemantik!
Verallgemeinerung der Projektion
Informell
Statt einer Projektion sollen beliebige Funktionen
erlaubt sein, die ein Tupel in ein anderes Tupel
üb füh
überführen
( Map-Operator
M O
t funktionaler
f kti
l Sprachen)
S
h )
„Formale“
F
l “ Definition
D fi iti
Sei RS ein Schema und r MREL(RS) eine M-Relation.
Weiterhin sei X ein Relationenschema und RS X
eine Funktion, die zu einem Tupel aus r ein Tupel mit
dem Schema X erzeugt. Dann gilt:
RS = X
uV
s = { t | t[X] = (u[RS]) mit u r und t[V] = t RS
u RS
s
100
}
Aggregation
Motivation
ot at o
Berechnung wichtiger Kennzahlen einer Multimenge
Summe (sum), Durchschnitt (avg), Anzahl (count),
Minimum (min) und Maximum (max) von Bedeutung.
Erweiterung der relationalen Algebra
Eine Aggregationsfunktion
f
agg:MREL(RS)
( S) D
berechnet zu einer Multi-Relation r MREL(RS) einen
Wert aus einem Wertebereich D.
Aggregationsfunktionen avgA(r), sumA(r), countA(r) liefern
einen numerischen Wert zu einem Attribut A RS.
Aggregationsfunktionen minA(r), maxA(r) den kleinsten
bzw. größten Wert zu dem Attribut A RS.
Die Operation count(r) liefert die Anzahl der Tupel in r.
101
Beispiele
Berechne die Anzahl der Tupel
p in der Relation
PMZuteilung.
count(PMZuteilung)
Berechne die Anzahl der Angestellten, die eine
Maschine bedienen können.
countpnr(PMZuteilung)
Berechne die durchschnittlichen Fähigkeiten der
Mit b it
Mitarbeiter
avgFähigkeit(PMZuteilung)
102
Gruppierung
Typischerweise
yp
werden Tabellen p
partitioniert und
für jede Partition ein Aggregat berechnet.
Eine Partition ist eine Relation, die das gleiche Schema
wie die Eingaberelation hat.
Sei X RS und r MREL(RS). Für zwei Tupel t1,t2 r mit
t1[X] = t2[X] gilt,
gilt dass diese in der gleichen Partition der
Relation liegen.
Zu einer Aggregation (über einem ausgezeichneten
103
Attribut) wird nun für jede Partition eine Kennzahl
berechnet. Diese Kennzahl wird zusammen mit den
Werten der Partitionierungsattribute in der
Ergebnisrelation eingetragen.
Symbol: X, A1 agg1, A2 agg2, …, An aggN(r)
Beispiele
Berechne für jjede Maschine die Anzahl der
Angestellten, welche die Maschine bedienen
können.
mnr, C count(PMZuteilung)
Berechne für jeden Angestellten seine
durchschnittliche Fähigkeiten eine Maschine zu
bedienen.
pnr, C avgFähigkeit(PMZuteilung)
(PMZ t il
)
Berechne
B
h den
d Notenspiegel.
N t
i
l
104
Zusammenfassung
Tupelkalkül
p
Prädikatenlogik 1. Stufe
Vergleich zu RA
deklarative Formulierung von Anfragen
TK ist ausdrucksstärker
TK eingeschränkt
i
h ä kt aus sichere
i h
Ausdrucke
A d k ist
i t gleichmächtig
l i h ä hti
Erweiterung der RA
Viele sinn
sinnvolle
olle Anfragen lassen sich nicht in RA
ausdrücken.
Aggregatberechnung
gg g
g
Sortieren
Unterstützung der Multimengensemantik
105
© Copyright 2025