Informationssysteme - Sommersemester 2016

Werbung
Informationssysteme
Sommersemester 2016
Prof. Dr.-Ing. Sebastian Michel
TU Kaiserslautern
[email protected]
Anfragesprachen
Konjunktive Anfragen
Formulierung und einfache Auswertung von
Anfragen
Prof. Dr.-Ing. S. Michel
TU Kaiserslautern
Informationssysteme, SS 2016
2 / 43
Anfragesprachen
Konjunktive Anfragen
Übersicht
Inhalte der nächsten Vorlesungen:
ˆ Konjunktive regelbasierte Anfragen:
ans(xna ) ← P rof essoren(xpn , xna , ’C4’, xra )
ˆ Relationenkalküle: {t.name |t ∈ P rof essoren ∧ t.rang = ’C4’}
ˆ Relationale Algebra: πname (σrang=’C4’ (P rof essoren))
ˆ SQL: SELECT name FROM Professoren WHERE rang=’C4’
Prof. Dr.-Ing. S. Michel
TU Kaiserslautern
Informationssysteme, SS 2016
3 / 43
Anfragesprachen
Konjunktive Anfragen
Wir betrachten die Datenbank
CINEMA
= {Movies, Location, Pariscope}
wobei die Relationen Movies, Location und Pariscope die folgenden
Schemata haben:
sch(M ovies)
= {Title, Director, Actor}
sch(Location)
= {Theater, Address, Phone Number}
sch(P ariscope) = {Theater, Title, Schedule}
Beispiele und Notationen folgen weitestgehend dem Buch “Foundations of
Databases” S.Abiteboul, R. Hull und V. Vianu. PDF ist verfügbar unter
http://webdam.inria.fr/Alice/.
Prof. Dr.-Ing. S. Michel
TU Kaiserslautern
Informationssysteme, SS 2016
4 / 43
Anfragesprachen
Title
Movies
Director
Immer Ärger mit Harry
Immer Ärger mit Harry
Immer Ärger mit Harry
Immer Ärger mit Harry
.....
Schreie und Flüstern
Schreie und Flüstern
Schreie und Flüstern
Schreie und Flüstern
Prof. Dr.-Ing. S. Michel
Hitchcock
Hitchcock
Hitchcock
Hitchcock
....
Bergman
Bergman
Bergman
Bergman
Konjunktive Anfragen
Actor
Gwenn
Forsythe
MacLaine
Hitchcock
....
Andersson
Sylwan
Thulin
Ullman
TU Kaiserslautern
Informationssysteme, SS 2016
5 / 43
Anfragesprachen
Theater
Gaumont Opéra
Saint André des Arts
Le Champo
....
Georges V
Les 7 Montparnassiens
Prof. Dr.-Ing. S. Michel
Konjunktive Anfragen
Location
Address
31 bd. des Italiens
30 rue Saint André des Arts
51 rue des Ecoles
....
144 av. des Champs-Elysées
98 bd. du Montparnassiens
TU Kaiserslautern
Phone Number
47 42 60 33
43 26 48 18
43 54 51 60
...
45 62 41 46
43 20 32 20
Informationssysteme, SS 2016
6 / 43
Anfragesprachen
Theater
Gaumont Opéra
Saint André des Arts
Georges V
....
Les 7 Montparnassiens
Prof. Dr.-Ing. S. Michel
Konjunktive Anfragen
Pariscope
Title
Schreie und Flüstern
Immer Ärger mit Harry
Schreie und Flüstern
....
Schreie und Flüstern
TU Kaiserslautern
Schedule
20:30
20:15
22:15
....
20:45
Informationssysteme, SS 2016
7 / 43
Anfragesprachen
Konjunktive Anfragen
Anfragen
ˆ Wer ist der Regisseur von ’Schreie und Flüstern’ ?
ˆ In welchem Theater läuft ’Schreie und Flüstern’ ?
ˆ Was ist die Adresse und die Telefonnummer des Theaters ’Le
Champo’ ?
Prof. Dr.-Ing. S. Michel
TU Kaiserslautern
Informationssysteme, SS 2016
8 / 43
Anfragesprachen
Konjunktive Anfragen
Gib Namen und Adressen der Theater aus, die einen Bergman-Film
spielen.
Zur Erinnerung:
sch(M ovies)
sch(Location)
sch(P ariscope)
= {Title, Director, Actor}
= {Theater, Address, Phone Number}
= {Theater, Title, Schedule}
Kann wie folgt berechnet werden:
Falls es jeweils Tupel r1, r2, r3 aus den Relationen
Movies, Pariscope, Location gibt, so dass
der Regisseur in r1 ’Bergman’ ist
und die Titel der Tupel r1 und r2 gleich sind
und die Theater in Tupel r2 und r3 gleich sind
dann möchten wir Theater und Addresse von Tupel r3.
Prof. Dr.-Ing. S. Michel
TU Kaiserslautern
Informationssysteme, SS 2016
9 / 43
Anfragesprachen
Konjunktive Anfragen
Falls es jeweils in den Relationen Movies, Pariscope und Location Tupel
hxti , ’Bergman’, xac i, hxth , xti , xs i und hxth , xad , xs i gibt dann nehme
das Tupel hTheater : xth , Address : xad i in die Antwort auf.
xti , xth etc. sind Variablen.
Wir können die Anfrage umschreiben als
ans(xth , xad ) ← Movies(xti , ’Bergman’, xac ), Pariscope(xth , xti , xs ),
Location(xth , xad , xp )
wobei ans (für Answer/Antwort) eine Relation über {Theater, Address} ist
Prof. Dr.-Ing. S. Michel
TU Kaiserslautern
Informationssysteme, SS 2016
10 / 43
Anfragesprachen
Konjunktive Anfragen
Kopf (Head) und Rumpf (Body)
Der Ausdruck links von ← wird als Kopf bezeichnet. Der Ausdruck rechts
von ← heisst Rumpf.
ans(xth , xad ) ← Movies(xti , ’Bergman’, xac ), Pariscope(xth , xti , xs ),
Location(xth , xad , xp )
Der obige Ausdruck kann noch vereinfacht werden als
ans(xth , xad ) ← Movies(xti , ’Bergman’,
Location(xth , xad , )
wobei das Zeichen
ein Mal auftreten.
), Pariscope(xth , xti , ),
benutzt wird, um alle Variablen zu ersetzen, die nur
Prof. Dr.-Ing. S. Michel
TU Kaiserslautern
Informationssysteme, SS 2016
11 / 43
Anfragesprachen
Konjunktive Anfragen
Regelbasierte Konjunktive Anfrage
Sei R ein Datenbankschema. Eine regelbasierte konjunktive Anfrage
über R hat die Form
ans(u) ← R1 (u1 ), . . . , Rn (un )
ˆ u, u1 , . . . un sind Tupel
ˆ Notation: falls v =< x1 , ..., xm > dann schreiben wir R(v) anstelle
von R(x1 , . . . , xm )
ˆ ui muss Stelligkeit (arity) passend zu Ri haben.
ˆ Jede Variable aus u muss mindestens ein Mal in einem der u1 , . . . , un
auftreten.
Prof. Dr.-Ing. S. Michel
TU Kaiserslautern
Informationssysteme, SS 2016
12 / 43
Anfragesprachen
Konjunktive Anfragen
Semantik von Regelbasierten Konjunktiven Anfragen
Betrachtet man eine Instanz einer Datenbank, also Ausprägungen von
Tupeln in den einzelnen Relationen, dann kann man sich eine Regel so
vorstellen, dass wenn man eine gültige Belegung des Rumpfes gefunden
hat, der Kopf der Regel das Ergebnis darstellt.
Betrachten wir wieder Anfrage q als
ans(u) ← R1 (u1 ), . . . , Rn (un )
und eine Instanz (Ausprägung) I der Datenbank R. Das Abbild von I
unter Anfrage q ist
q(I) = {ν(u) | ν ist eine Belegung der Variablen aus q
und ν(ui ) ∈ I(Ri ), ∀i ∈ [1, n]}
Prof. Dr.-Ing. S. Michel
TU Kaiserslautern
Informationssysteme, SS 2016
13 / 43
Anfragesprachen
Konjunktive Anfragen
Belegung von Variablen: Beispiel
ans(xth , xad ) ← Movies(xti , ’Bergman’, xac ), Pariscope(xth , xti , xs ),
Location(xth , xad , xp )
Betrachten wir folgende Belegung der Variablen:
ν(xti ) = ’Schreie und Flüstern’
ν(xac ) = ’Ullman’
ν(xth ) = ’Gaumont Opera’
ν(xs ) = ’20:30’
ν(xad ) = ’31 bd. des Italiens’
ν(xp ) = ’47 42 60 33’
Dies ist eine gültige Belegung, da Tupel (ν(xti ),“Bergman”,ν(xac )) =
(“Schreie und Flüstern”,“Bergman”,“Ullman”) ∈ I(M ovies), für unsere
Beispiel Ausprägung I, analog für die beiden anderen Relationen bzw.
Tupel.
Prof. Dr.-Ing. S. Michel
TU Kaiserslautern
Informationssysteme, SS 2016
14 / 43
Anfragesprachen
Konjunktive Anfragen
Weitere Beispiele
Finde Name und Personalnummer aller C4 Professoren:
ans(xna , xpn ) ← P rof essoren(xpn , xna , ’C4’, xra )
Welche Vorlesungen bietet Prof. Sokrates an?
ans(xti ) ←P rof essoren(xpn , ’Sokrates’, xrg , xra ),
V orlesungen(xvn , xti , xsw ), lesen(xpn , xvn )
Prof. Dr.-Ing. S. Michel
TU Kaiserslautern
Informationssysteme, SS 2016
15 / 43
Anfragesprachen
Konjunktive Anfragen
Intensionale vs. Extensionale Relationen
Wir berechnen durch die Erstellung von Anfragen nicht nur Ergebnisse,
sondern definieren dabei implizit auch neue Relationen, z.B. die neue
Relation C4P rof s, die alle Professoren mit Rang C4 enthält:
C4P rof s(xpn ,xna , xra ) ← P rof essoren(xpn , xna , ’C4’, xra )
Man unterscheidet zwischen Relationen, die ursprünglich in der Datenbank
vorhanden sind, den sogenannten extensionalen Relationen, und
Relationen, die durch Regeln definiert werden, den sogenannten
intensionalen Relationen.
Prof. Dr.-Ing. S. Michel
TU Kaiserslautern
Informationssysteme, SS 2016
16 / 43
Anfragesprachen
Konjunktive Anfragen
Auswertung (aka. Berechnung) der Anfrage
Naive brute-force Methode zur Berechnung der Anfrageergebnisse:
ˆ Betrachtung aller möglichen Belegung anhand der in den Relationen
auftretenden Werte.
ˆ Für jede dieser Belegungen schauen ob es eine gültige Belegung ist.
Diese Vorgehensweise ist natürlich sehr teuer. Z.B. für
M ovies(x1 ,’Bergman’,x2 ) machen nur Belegungen Sinn, die für dieses
Tupel mit x1 und x2 aus M ovies den Regisseur gleich ’Bergman’ haben.
Idealerweise kann man mit sogenannten Indexen die Auswahl die Suche
nach geeigneten Tupeln beschleunigen.
Dazu kommen wir später im Abschnitt über Anfrageverarbeitung und
Indexstrukturen.
Prof. Dr.-Ing. S. Michel
TU Kaiserslautern
Informationssysteme, SS 2016
17 / 43
Anfragesprachen
Konjunktive Anfragen
Monotonie
ˆ Monotonie: Eine Anfrage q über R ist monoton wenn für jede
Ausprägungen (Instanzen) I, J über R, gilt: Falls I ⊆ J dann
q(I) ⊆ q(J).
ˆ D.h. wenn neue Tupel zu den Relationen hinzukommen fallen keine
Ergebnistupel weg.
Konjunktive Anfragen sind monoton
Welche Anfragen sind somit nicht möglich?
Prof. Dr.-Ing. S. Michel
TU Kaiserslautern
Informationssysteme, SS 2016
18 / 43
Anfragesprachen
Konjunktive Anfragen
Anfragen im konjunktiven Kalkül
Gegeben eine konjunktive regelbasierte Anfrage
ans(e1 , . . . , em ) ← R1 (u1 ), . . . , Rn (un )
Die dazu äquivalente Anfrage im konjunktiven Kalkül ist
{e1 , . . . , em | ∃x1 , . . . , xk (R1 (u1 ) ∧ . . . ∧ Rn (un ))}
Die Variablen x1 , x2 , . . . xk sind die Variablen, die im Rumpf aber nicht im
Kopf der regelbasierten Anfrage auftreten.
Prof. Dr.-Ing. S. Michel
TU Kaiserslautern
Informationssysteme, SS 2016
19 / 43
Anfragesprachen
Konjunktive Anfragen
Anfragen im konjunktiven Kalkül: Beispiel
ans(xth , xad ) ← M ovies(xti , ’Bergman’, xac ),
P ariscope(xth , xti , xs ),
Location(xth , xad , xp )
ans := {xth , xad | ∃ xti ∃ xac ∃ xs ∃ xp (M ovies(xti ,’Bergman’, xac ) ∧
P ariscope(xth , xti , xs ) ∧
Location(xth , xad , xp ))}
Prof. Dr.-Ing. S. Michel
TU Kaiserslautern
Informationssysteme, SS 2016
20 / 43
Anfragesprachen
Konjunktive Anfragen
Sei R ein Datenbankschema. Eine Formel über R im konjunktiven Kalkül
ist ein Ausdruck, der eine der folgenden Formen besitzt:
(a) ein Atom über R der Form Ri (ui )
(b) (φ ∧ ψ), mit Formeln φ und ψ über R; oder
(c) ∃xφ, wobei x eine Variable ist und φ ist eine Formel über R.
Freie Variablen:
Ein Auftreten einer Variablen x in einer Formel φ ist frei falls
(i) φ ist ein Atom; oder
(ii) φ = (ψ ∧ ξ) und das Auftreten von x ist frei in ψ oder ξ; oder
(iii) φ = ∃yψ, x und y sind verschiedene Variablen, und das Auftreten von
x ist frei in ψ
Falls eine Variable nicht frei ist so nennen wir sie gebunden.
Prof. Dr.-Ing. S. Michel
TU Kaiserslautern
Informationssysteme, SS 2016
21 / 43
Anfragesprachen
Konjunktive Anfragen
Anfragen im konjunktiven Kalkül
Eine Anfrage im konjunktiven Kalkül über Datenbankschema R ist ein
Ausdruck der Form
{e1 , ..., em | φ}
wobei φ eine Formel des konjunktiven Kalküls ist und die Variablen
e1 , . . . ,em und sind identisch zur Menge der freien Variablen in φ.
Theorem
Regelbasierte konjunktive Anfragen und Anfragen im konjunktiven Kalkül
sind äquivalent.
Prof. Dr.-Ing. S. Michel
TU Kaiserslautern
Informationssysteme, SS 2016
22 / 43
Anfragesprachen
Konjunktive Anfragen
Gleichheit bzw. Vergleichsoperatoren
ans(xth , xad ) ← M ovies(xti , xd , xac ), xd = ’Bergman’,
P ariscope(xth , xti , xs ),
Location(xth , xad , xp )
ist identisch zu
ans(xth , xad ) ← M ovies(xti , ’Bergman’, xac ),
P ariscope(xth , xti , xs ),
Location(xth , xad , xp )
Ebenfalls möglich Vergleichsoperatoren, z.B.
ans(xma ) ← Studenten(xma , xna , xse ),xse ≥ 12
Prof. Dr.-Ing. S. Michel
TU Kaiserslautern
Informationssysteme, SS 2016
23 / 43
Anfragesprachen
Konjunktive Anfragen
Anfrage-Programm
Wie erwähnt, kann konzeptionell eine Anfrage so aufgefasst werden, dass
sie eine neue Relation erzeugt, die dann in nachfolgenden Anfragen
benutzt werden kann.
Ein konjunktives Anfrage-Programm ist eine Sequenz von Regeln in der
Form
S1 (u1 ) ← body1
S2 (u2 ) ← body2
···
Sm (um ) ← bodym
Rekursion sei nicht zugelassen.
Prof. Dr.-Ing. S. Michel
TU Kaiserslautern
Informationssysteme, SS 2016
24 / 43
Anfragesprachen
Konjunktive Anfragen
Beispiel
S1 (x, z) ← Q(x, y),R(y, z,w)
S2 (x, y, z) ← S1 (x,w),R(w, y, v), S1 (v, z)
S3 (x, z) ← S2 (x, u, v), Q(v, z)
Q
1
2
2
2
1
2
1
2
3
4
R
1
3
1
4
S1
1
1
2
1
Prof. Dr.-Ing. S. Michel
1
2
2
3
1
3
TU Kaiserslautern
1
1
2
2
S2
1
1
1
1
S3
1
3
1
3
1
2
Informationssysteme, SS 2016
2
2
25 / 43
Anfragesprachen
Konjunktive Anfragen
Beispiel
S1 (x, z) ← Q(x, y),R(y, z,w)
S2 (x, y, z) ← S1 (x,w),R(w, y, v), S1 (v, z)
S3 (x, z) ← S2 (x, u, v), Q(v, z)
Wir können für die ersten beiden Zeilen auch schreiben als
S2 (x, y, z) ← Q(x1 , y1 ),R(y1 , z1 ,w1 ), x = x1 ,w = z1 ,
R(w, y, v),Q(x2 , y2 ),R(y2 , z2 ,w2 ), v = x2 , z = z2
bzw. ohne Gleichheits-Operator
S2 (x, y, z) ← Q(x, y1 ),R(y1 ,w,w1 ),
R(w, y, v), Q(v, y2 ),R(y2 , z,w2 )
Prof. Dr.-Ing. S. Michel
TU Kaiserslautern
Informationssysteme, SS 2016
26 / 43
Anfragesprachen
Konjunktive Anfragen
Sichten (Englisch: Views)
M arilyn(xt ) ← M ovies(xt , xd , ’Monroe’)
ChampoInf o(xt , xs , xp ) ← P ariscope(’Le Champo’, xt , xs ),
Location(’Le Champo’, xa , xp )
Versuchen wir damit die folgende Anfrage auszudrücken: “Welche Titel
in M arilyn werden im Le Champo um 21:00 Uhr gespielt?”
ans(xt ) ← M arilyn(xt ), ChampoInf o(xt , ’21:00’, xp )
Falls diese Sichten nur virtuell sind (also nicht wirklich
materialisiert/ausgeprägt) so wird die Anfrage doch ausgeführt via
ans(xt ) ← M ovies(xt , xd , ’Monroe’),
P ariscope(’Le Champo’, xt , ’21:00’),
Location(’Le Champo’, xa , xp )
Prof. Dr.-Ing. S. Michel
TU Kaiserslautern
Informationssysteme, SS 2016
27 / 43
Anfragesprachen
Konjunktive Anfragen
Views (2)
Eine alternative Formulierung:
M arilyn := {xt | ∃ xd (M ovies(xt , xd ,’Monroe’))};
ChampoInf o := {xt , xs , xp | ∃xa (P ariscope(’Le Champo’, xt , xs )
∧Location(’Le Champo’, xa , xp ))};
ans := {xt | M arilyn(xt )
∧ ∃ xp (ChampoInf o(xt , ’21:00’, xp ))}
Prof. Dr.-Ing. S. Michel
TU Kaiserslautern
Informationssysteme, SS 2016
28 / 43
Anfragesprachen
Konjunktive Anfragen
Was ist mit Negation?
Lassen wir nun Literale Li der Form R(v) oder ¬R(v) zu, d.h. wir haben
Regeln
q : S(u) ← L1 , . . . , Ln
wobei R der Name einer Relation ist, v ist ein Tupel der passenden
Stelligkeit und S tritt nicht im Rumpf der Regel auf (also: nicht rekursiv).
Prof. Dr.-Ing. S. Michel
TU Kaiserslautern
Informationssysteme, SS 2016
29 / 43
Anfragesprachen
Konjunktive Anfragen
“In welchen Hitchcock Filmen hat Hitchcock nicht mitgespielt?”
ans ← M ovies(x, ’Hitchcock’, z),
¬M ovies(x, ’Hitchcock’, ’Hitchcock’)
Was muss in der Datenbank gelten, damit diese Anfrage korrekt ist?
Prof. Dr.-Ing. S. Michel
TU Kaiserslautern
Informationssysteme, SS 2016
30 / 43
Anfragesprachen
Konjunktive Anfragen
Gib alle Filme aus, bei denen nur Schauspieler mitgewirkt haben,
”
die mal unter Hitchcock Regie gespielt haben.“
Hitch−actor(z) ← M ovies(x, ’Hitchcock’, z)
not−ans(x) ← M ovies(x,y,z), ¬Hitch−actor(z)
ans(x) ← M ovies(x,y,z), ¬not−ans(x)
Prof. Dr.-Ing. S. Michel
TU Kaiserslautern
Informationssysteme, SS 2016
31 / 43
Anfragesprachen
Relationenkalkül
Relationenkalküle: Das Domänenkalkül
Wenn wir zum konjunktiven Kalkül die Negation hinzunehmen, erhalten
wir ein Relationenkalkül, nämlich das Domänenkalkül. Es gibt auch
noch ein weiteres Relationenkalkül, das Tupelkalkül, welches wir uns
später ansehen.
Wir erlauben nun auch gleich noch weitere Vergleichsoperatoren, haben
also Basis-Formeln (Atome) der Form R(u) mit Relation R und Tupel u
über Domänenvariablen und Konstanten, sowie Atome der Form e = e0 ,
e 6= e0 , e ≥ e0 etc. für Domänenvariablen oder Konstanten e und e0 .
Alle Atome sind Formeln. Darauf basierend haben wir Formeln der Form
ˆ
ˆ
ˆ
ˆ
ˆ
(φ ∧ ψ) für Formeln ψ und φ
(φ ∨ ψ) für Formeln ψ und φ
¬φ für Formeln φ
∃xφ für Variable x und Formel φ
∀xφ für Variable x und Formel φ
Prof. Dr.-Ing. S. Michel
TU Kaiserslautern
Informationssysteme, SS 2016
32 / 43
Anfragesprachen
Relationenkalkül
“In welchen Hitchcock Filmen hat Hitchcock nicht mitgespielt?”
{xt
| ∃xa M ovies(xt , ’Hitchcock’, xa )
∧¬M ovies(xt , ’Hitchcock’, ’Hitchcock’)}
“Gib alle Filme aus, bei denen nur Schauspieler mitgewirkt haben,
die mal unter Hitchcock Regie gespielt haben.”
{xt | ∃xd , xa M ovies(xt , xd , xa )
∧∀ya (∃yd M ovies(xt , yd , ya )
⇒ ∃zt M ovies(zt , ’Hitchock’, ya ))}
Prof. Dr.-Ing. S. Michel
TU Kaiserslautern
Informationssysteme, SS 2016
33 / 43
Anfragesprachen
Relationenkalkül
Das Relationale Tupelkalkül
Das bislang betrachtetete Relationen Kalkül wird auch als relationales
Domänenkalkül bezeichnet, da dort Domänenvariablen an die Domänen
der einzelnen Attribute (Spalten) der Relationen gebunden werden.
Eine Anfrage im relationalen Tupelkalkül hat die Form
{t | P (t)}
wobei t eine Tupelvariable ist und P (t) ein Prädikat (eine Formel).
P (t) muss erfüllt sein damit t Teil des Ergebnis ist.
{t.title | ∃ s ∈ M ovies (t.title = s.title ∧ s.director = ‘Hitchcock’
∧¬∃u ∈ M ovies (u.title = s.title ∧ u.actor = ‘Hitchcock’))}
Prof. Dr.-Ing. S. Michel
TU Kaiserslautern
Informationssysteme, SS 2016
34 / 43
Anfragesprachen
Relationenkalkül
Das Relationale Tupelkalkül: Definition
Formeln des Tupelkalküls bestehen aus Atomen der Form t ∈ R, mit
Tupelvariabel t und Relation R, der Form t.x = t.y, t.x > t.y, etc. für
Tupelvariablen t und s und Attributnamen x und y, sowie der Form
t.x = c und t.x > c etc. für Konstanten c.
Alle Atome sind Formeln und dann haben wir noch Formeln der Form
ˆ (φ ∧ ψ) für Formeln ψ und φ
ˆ (φ ∨ ψ) für Formeln ψ und φ
ˆ ¬φ für Formeln φ
ˆ ∃xφ für Variable x und Formel φ
ˆ ∀xφ für Variable x und Formel φ
Prof. Dr.-Ing. S. Michel
TU Kaiserslautern
Informationssysteme, SS 2016
35 / 43
Anfragesprachen
Relationenkalkül
Beispiele
ˆ C4-Professoren:
{p | p ∈ P rof essoren ∧ p.Rang = C4}
ˆ Paare von Professoren (Name) und Assistenten (PersNr):
{p.N ame, a.P ersN r | p ∈ P rof essoren ∧ a ∈ Assistenten
∧p.P ersN r = a.Boss}
ˆ Studenten mit mindestens einer Vorlesung von Prof. Curie:
{s|s ∈ Studenten
∧ ∃ h ∈ hören (s.M atrN r = h.M atrN r
∧ ∃ v ∈ V orlesungen (h.V orlN r = v.V orlN r
∧ ∃ p ∈ P rof essoren (p.P ersN r = v.gelesenV on
∧ p.N ame = ‘Curie‘)))}
Prof. Dr.-Ing. S. Michel
TU Kaiserslautern
Informationssysteme, SS 2016
36 / 43
Anfragesprachen
Relationenkalkül
.... in SQL ... ist es sehr ähnlich:
Studenten mit mindestens einer Vorlesung von Prof. Curie:
SELECT s.*
FROM Studenten s
WHERE EXISTS (
SELECT h.*
FROM hören h
WHERE h.MatrNr=s.MatrNr AND EXISTS (
SELECT *
FROM Vorlesungen v
WHERE v.VorlNr=h.VorlNr AND EXISTS (
SELECT *
FROM Professoren p
WHERE p.Name=’Curie’ AND p.PersNr=v.gelesenVon)))
Prof. Dr.-Ing. S. Michel
TU Kaiserslautern
Informationssysteme, SS 2016
37 / 43
Anfragesprachen
Relationenkalkül
Sicherheit von Anfragen
ˆ Einschränkung auf Anfragen mit endlichem Ergebnis.
ˆ Zum Beispiel ist die Anfrage
{n|¬(n ∈ P rof essoren)}
nicht sicher.
ˆ Das Ergebnis ist unendlich.
ˆ Bedingung: Ergebnis des Ausdrucks muss Teilmenge der
Domäne der Formel sein.
ˆ Die Domäne einer Formel enthält
ˆ alle in der Formel vorkommenden Konstanten
ˆ alle Attributwerte von Relationen, die in der Formel referenziert werden
Prof. Dr.-Ing. S. Michel
TU Kaiserslautern
Informationssysteme, SS 2016
38 / 43
Anfragesprachen
Relationenkalkül
Unsichere Anfragen im Domänenkalkül
{x | ¬M ovies(’Schreie und Flüstern’, ’Bergman’, x)}
{xpn , xna , xrg , xra | ¬P rof essoren(xpn , xna , xrg , xra )}
{x, y
| M ovies(’Schreie und Flüstern’, ’Bergman’, x)
∨M ovies(y, ’Bergman’, ’Ullman’)}
Wieso sind diese Anfragen unsicher?
Prof. Dr.-Ing. S. Michel
TU Kaiserslautern
Informationssysteme, SS 2016
39 / 43
Anfragesprachen
Relationenkalkül
Sicherheit des Domänenkalküls
ˆ Sicherheit ist analog zum Tupelkalkül, aber etwas komplizierter, da
Variablen nicht an Tupel einer Relation sondern an einzelne Domänen
gebunden sind.
ˆ Zum Beispiel ist
{xpn , xna , xrg , xra | ¬(P rof essoren(xpn , xna , xrg , xra ))}
nicht sicher.
ˆ Ein Ausdruck
{x1 , x2 , ..., xn | P (x1 , x2 , ..., x3 )}
ist sicher, falls folgende drei Bedingungen gelten:
Prof. Dr.-Ing. S. Michel
TU Kaiserslautern
Informationssysteme, SS 2016
40 / 43
Anfragesprachen
Relationenkalkül
{x1 , x2 , ..., xn |P (x1 , x2 , ..., x3 )} sicher falls ....
1. Falls Tupel (c1 , c2 , ..., cn ) mit Konstanten ci im Ergebnis enthalten
ist, so muss jedes ci (1 ≤ i ≤ n) in der Domäne von P enthalten sein.
2. Für jede existenz-quantifizierte Teilformel ∃x(P1 (x)) muss gelten,
dass P1 nur für Elemente aus der Domäne erfüllbar sein kann – oder
evtl. für gar keine.
Das heisst: Wenn für eine Konstante c das Prädikat P1 (c) erfüllt ist,
so muss c in der Domäne von P1 enthalten sein.
3. Für jede universal-quantifizierte Teilformel ∀x(P1 (x)) muss
gelten, dass sie dann und nur dann erfüllt ist, wenn P1 (x) für alle
Werte der Domäne von P1 erfüllt ist.
Das heisst: P1 (d) muss für alle d, die nicht in der Domäne von P1
enthalten sind, auf jeden Fall erfüllt sein.
Prof. Dr.-Ing. S. Michel
TU Kaiserslautern
Informationssysteme, SS 2016
41 / 43
Anfragesprachen
Relationenkalkül
Zusammenfassung
ˆ Konjunktive regelbasierte Anfragen und Kalküle, als regel- bzw.
logikbasierte Möglichkeit Anfragen zu erstellen
ˆ Dabei geben diese Anfragen vor wie Ergebnistupel aussehen sollen
bzw. wie sie zusammengehören, aber nicht wie das Ergebnis
tatsächlich berechnet werden soll.
ˆ Sogenannte deklarative Anfragen.
ˆ Domänenkalkül und Tupelkalkül gleich ausdrucksstark
(mächtig).
ˆ Wie bereits erwähnt, ist auch SQL deklarativ und durch das
relationale Tupelkalkül inspiriert.
ˆ Wir betrachten nun die relationale Algebra.
ˆ Und danach SQL.
Prof. Dr.-Ing. S. Michel
TU Kaiserslautern
Informationssysteme, SS 2016
42 / 43
Anfragesprachen
Relationenkalkül
Übersicht
ˆ Konjunktive regelbasierte Anfragen:
ans(xna ) ← P rof essoren(xpn , xna , ’C4’, xra )
ˆ Relationenkalküle: {t.name |t ∈ P rof essoren ∧ t.rang = ’C4’}
ˆ Relationale Algebra: πname (σrang=’C4’ (P rof essoren))
ˆ SQL: SELECT name FROM Professoren WHERE rang=’C4’
Prof. Dr.-Ing. S. Michel
TU Kaiserslautern
Informationssysteme, SS 2016
43 / 43
Herunterladen