Tupelkalkul und Erweiterungen der RA

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
ARS

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
uV 
 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