Datalog

Werbung
Logik als Anfragesprache
– Motivation (1)
Kennenlernen einer weiteren Anfragesprache
für das relationale Datenmodell,
aber Unterschied hinsichtlich Ausdrucksmächtigkeit.
Datalog, logikbasierte Anfragesprache.
Kalküle und SQL – ähnlich;
Betrachtung von Datalog wird dagegen
unsere Perspektive verbreitern.
Unterschied zu Kalkülen:
Striktere Vorgaben
bezüglich des Aufbaus von Anfragen,
zieht diverse vorteilhafte Eigenschaften
nach sich, formal nachweisbar.
Andererseits: Erweiterungen problembehaftet.
Einleitung
Kapitel 3:
Logik als Anfragesprache
Rekursion
Integritätsbedingung
Datalog
Negation
SQL
Schluß
Datenbankeinsatz: Datalog – 1
Logik als Anfragesprache
– Motivation (2)
Rekursion
Integritätsbedingung
Datalog
Negation
Motivation, auf unterschiedlichen Ebenen (Forts.):
Datalog hat wichtige Beschränktheit
in der Ausdruckskraft der relationalen Algebra nicht
(insbesondere ‚Berechnung transitive Hülle‘),
trotzdem effizient.
Einleitung
Transitive Hülle
Rekursion
Integritätsbedingung
Datalog
Negation
Schluß
SQL
Schluß
Datenbankeinsatz: Datalog – 3
Illustration:
Einleitung
SQL
Klemens Böhm
Datenbankeinsatz: Datalog – 2
Klemens Böhm
Klemens Böhm
R A B
1
3
2
2
4
3
R+ A B
1
2
3
1
1
2
2
3
4
3
4
4
D. h. es muß endliche Folge von Tupeln geben,
so daß [Tupel i].B=[Tupel i+1].A
∃ kein RA-Ausdruck zur Berechnung
der transitiven Hülle. (Kann man beweisen.)
Man kann lediglich – für festes n –
Folgen mit Maximallänge n berechnen.
Bedauerlich, da sinnvoll aus Anwendersicht.
Klemens Böhm
Datenbankeinsatz: Datalog – 4
Datalog – Übersicht
Einleitung
Datalog – Teilmenge von Prolog.
Beispiele:
Relation Person
mit Attributen Name, Alter, Geschlecht
→ Person(X, Y, Z)
Tupel mit Attributwerten Klemens, 28, m
→ Person(Klemens, 28, m)
Ziel – wird bewiesen oder widerlegt.
Anfrage – welche Tupel erfüllen sie?
Rekursion
Illustration
Integritätsbedingung
Datalog
Negation
SQL
Elternteil
Kind
John
Jeff
Jeff
Margaret
Margaret Annie
John
Anthony
Anthony
Bill
Einleitung
Rekursion
Integritätsbedingung
Datalog
Negation
SQL
Schluß
Schluß
Elternschaft
Datenbankeinsatz: Datalog – 5
Extensionale vs. intensionale Datenbank.
Extensionale Datenbank (EDB) – Basis-Daten,
im Beispiel Elternschaft, Person,
intentionale Datenbank (IDB) –
mit (Deduktions-)Regeln ableitbare Relationen,
„Sichten“.
Beispiel:
Vater(X, Y) :- Person(X, _, m), Elternschaft(X, Y)
Mutter(X, Y) :- Person(X, _, w), Elternschaft(X, Y)
Beispiel für Evaluierung einer Anfrage:
?- Mutter(X, Annie)
Mutter(X, Y) :- Person(X, _, w), Elternschaft(X, Y)
Person(Margaret, 32, w),
Elternschaft(Margaret, Annie)
Datalog
Negation
SQL
Schluß
Klemens Böhm
Geschlecht
m
m
m
w
w
m
m
Zusammenhänge Datenbanken – Logik
Rekursion
Integritätsbedingung
Alter
7
78
55
32
4
58
34
Datenbankeinsatz: Datalog – 6
Klemens Böhm
Terminologie
Einleitung
Name
Paul
John
Jeff
Margaret
Annie
Anthony
Bill
Tupel: Logische Fakten
bzw. mit Konstanten instanziierte Prädikate.
Z. B. Elternschaft(John, Jeff)
Beispiel für Anfrage:
Wer sind die Kinder von John?
?- Elternschaft(John, X)
Deklarativität: Wünschenswerte Eigenschaft,
wird beibehalten.
Klemens Böhm
Person
Datenbankeinsatz: Datalog – 7
Einleitung
Rekursion
Integritätsbedingung
Datalog
Negation
SQL
Schluß
Enger Zusammenhang zur Logik:
DatenbankKonzept
Relation
Attribut
Tupel
Attributwert
View (Sicht)
Anfrage
Logik-Programmierung Konzept
Prädikat
Argument eines Prädikats,
Variable
Grundklausel
Konstante
Regel
Ziel (Goal)
z
Klemens Böhm
Datenbankeinsatz: Datalog – 8
Datalog
Integritätsbedingung
Negation
SQL
Schluß
Klemens Böhm
Einleitung
Rekursion
Integritätsbedingung
Datalog
Negation
SQL
Schluß
Datenbankeinsatz: Datalog – 9
Rekursion
Integritätsbedingung
Datalog
Negation
SQL
Schluß
Klemens Böhm
Datenbankeinsatz: Datalog – 11
Auswertung rekursiver Datalog Regeln
– Illustration (1)
Rundenweises Vorgehen.
Ablauf:
1. IDB-Prädikaten entsprechen leere Relationen.
2. Alle Regeln anwenden auf Tupel,
einer davon muß in vorangegangener Runde
neu erzeugt worden sein.
Illustration auf folgenden Folien.
Datenbankeinsatz: Datalog – 10
Klemens Böhm
Auswertung
rekursiver Datalog Regeln (1)
Einleitung
Erläuterung:
IDB Prädikat sowohl im Kopf
als auch Rumpf der Regel.
Berechnung des kleinsten Fixpunkts.
D. h. minimale Menge der Tupel,
die vorhanden sein müssen.
Mit Datalog möglich.
Vorfahre(X, Y) :- Elternschaft(X, Y).
Vorfahre(X, Y) :- Elternschaft(X, Z), Vorfahre(Z, Y).
In relationaler Algebra nicht formulierbar.
Was ist Zusammenhang
zwischen Rekursion in Datalog
und transitiver Hülle?
Einleitung
Rekursion
Rekursion (2)
Relation sequelOf:
Einleitung
Rekursion
Integritätsbedingung
Datalog
Negation
SQL
Schluß
Rekursion (1)
movie
sequel
Rocky Rocky II
Rocky II Rocky III
Rocky III Rocky IV
Datalog-Regeln:
1. FollowOn(x, y) :- SequelOf(x, y)
2. FollowOn(x, y) :- SequelOf(x, z),
FollowOn(z, y)
Klemens Böhm
Datenbankeinsatz: Datalog – 12
Auswertung rekursiver Datalog Regeln
– Illustration (2)
Relation sequelOf:
Einleitung
Rekursion
Integritätsbedingung
Negation
Datalog
SQL
Schluß
movie
sequel
Rocky Rocky II
Rocky II Rocky III
Rocky III Rocky IV
x
Rocky
Rocky II
Rocky III
Rocky
Rocky II
y
Rocky II
Rocky III
Rocky IV
Rocky III
Rocky IV
Klemens Böhm
Algorithmus terminiert offensichtlich.
Warum ‚offensichtlich‘?
Einleitung
Rekursion
Integritätsbedingung
Rekursive Berechnung von FollowOn
nach einer, zwei bzw. drei und mehr Runden:
x
y
Rocky Rocky II
Rocky II Rocky III
Rocky III Rocky IV
Auswertung
rekursiver Datalog Regeln (2)
x
Rocky
Rocky II
Rocky III
Rocky
Rocky II
Rocky
y
Rocky II
Rocky III
Rocky IV
Rocky III
Rocky IV
Rocky IV
Datalog
Negation
SQL
Schluß
Datenbankeinsatz: Datalog – 13
Klemens Böhm
Negation
Datalog
SQL
Schluß
Klemens Böhm
Rekursion
lineare
Rekursion
Integritätsbedingung
Festlegung von Integritätsbedingungen
im gleichen sprachlichen Rahmen
wie Anfragen und Sichten.
Beispiel:
inkorrekt(X) :- Elternschaft(X, X)
Anfrage:
?- inkorrekt(X)
Argument aus Vossen-Buch (s. b. Literatur)
– gilt m. E. aber auch für SQL.
Datalog
Negation
Integritätsbedingung
Einleitung
Einleitung
Rekursion
Rechts-rekursiv
Beispiel:
1. FollowOn(x, y) :- SequelOf(x, y)
2. FollowOn(x, y) :- SequelOf(x, z),
FollowOn(z, y)
Links-rekursiv
Beispiel:
1. FollowOn(x, y) :- SequelOf(x, y)
2. FollowOn(x, y) :- FollowOn(x, z),
SequelOf(z, y)
Nichtlineare Rekursion – Beispiel:
1. FollowOn(x, y) :- SequelOf(x, y)
2. FollowOn(x, y) :- FollowOn(x, z),
FollowOn(z, y)
Integritätsbedingungen
SQL
Schluß
Rekursion in Datalog – Varianten
Datenbankeinsatz: Datalog – 14
z
Datenbankeinsatz: Datalog – 15
Klemens Böhm
Datenbankeinsatz: Datalog – 16
Logik als Anfragesprache
– Schwierigkeiten
Einleitung
Rekursion
Integritätsbedingung
Datalog
Erfüllbarkeitsproblem der Aussagenlogik
ist NP-vollständig.
Prädikatenlogik erster Stufe
– Problem ist nicht entscheidbar.
SQL
Atom – Ausdruck der Form P(X1, …, Xn)
Literal – negiertes oder nicht negiertes Atom.
Klausel – Disjunktion von Literalen.
Horn-Klausel – höchstens ein positives Literal.
Datalog-Programm –
endliche Menge von Horn-Klauseln.
Einleitung
Rekursion
Integritätsbedingung
Datalog
Negation
Negation
Datalog-Programm – Definition
Schluß
Macht Rahmen erforderlich,
der effiziente Auswertbarkeit garantiert.
(Beschränkung auf Horn-Klauseln
– wird gleich erklärt.)
Klemens Böhm
SQL
Schluß
Beispiele für Horn-Klauseln:
Vorfahre(X, Y) :- Elternschaft(X, Y).
Vorfahre(X, Y) :- Elternschaft(X, Z), Vorfahre(Z, Y).
Datenbankeinsatz: Datalog – 17
Einleitung
Rekursion
Beispiel (Fortsetzung):
gamble(X) :- gotmoney(X),!.
gamble(X) :- gotcredit(X).
Wäre auch OK. Fehleranfällig.
Einleitung
Rekursion
Integritätsbedingung
Integritätsbedingung
Abgrenzung zu Prolog (2)
Abgrenzung zu Prolog (1)
Datalog: Anordnung von Prädikaten und Fakten
spielt keine Rolle.
Beispiel aus Prolog
(Beispiel stammt aus wikipedia):
gamble(X) :- gotmoney(X).
gamble(X) :- gotcredit(X), NOT gotmoney(X).
gamble(X) :- gotcredit(X), NOT gotmoney(X).
gamble(X) :- gotmoney(X).
gamble(X) :- gotmoney(X),!.
gamble(X) :- gotcredit(X), NOT gotmoney(X).
Die letzte Variante ist int‘sant,
wenn Aufruf von gotmoney() teuer.
Cut-Operator: Höre auf,
nach Alternativen zu suchen.
Datenbankeinsatz: Datalog – 18
Klemens Böhm
Datalog
Negation
SQL
SQL
Schluß
Schluß
Datalog
Negation
Klemens Böhm
Datenbankeinsatz: Datalog – 19
Klemens Böhm
Datenbankeinsatz: Datalog – 20
Einleitung
Rekursion
Regelanwendung reihenfolgeunabhängig
(bei Datalog-Programm).
Ergibt minimales Modell
(Menge aller ableitbaren Fakten.)
Zwei alternative Herangehensweisen:
Modelltheoretisch: Berechnung der Menge
aller Grundfakten, die logische Konsequenzen
des Programms sind.
Beweistheoretisch: Berechnung der Menge
aller Grundfakten, die aus dem Programm
(in endlich vielen Schritten) ableitbar sind.
Ansätze liefern – für Horn-Klauseln –
das gleiche Ergebnis.
Einleitung
Rekursion
Integritätsbedingung
Integritätsbedingung
Semantik von Datalog-Programmen
Evaluation
Datalog
Datalog
Negation
Negation
SQL
SQL
Schluß
Schluß
Datenbankeinsatz: Datalog – 21
Klemens Böhm
Datalog
Negation
SQL
Schluß
Semantik von Datalog-Programmen –
beweistheoretisch
Einleitung
Rekursion
Integritätsbedingung
Datalog
Negation
SQL
Schluß
Klemens Böhm
Datenbankeinsatz: Datalog – 23
Syntaktisches Konzept.
Erläuterung am Beispiel:
Nur ein Schritt, da keine Rekursion.
Paare von Tupeln aus Person und Elternschaft
nacheinander anfassen und versuchen,
rechts einzusetzen.
Rekursion
Integritätsbedingung
Welches Modell macht die Anfrage wahr?
?- Mutter(X, Annie)
Mutter(X, Y) :- Person(X, _, w), Elternschaft(X, Y)
Alle Tupel(-Kombinationen)
aus Elternschaft und Person anschauen
und überprüfen, ob sie Modell wahr machen.
Datenbankeinsatz: Datalog – 22
Einleitung
Semantik von Datalog-Programmen –
modelltheoretisch
Klemens Böhm
Klemens Böhm
Datenbankeinsatz: Datalog – 24
Einleitung
Integritätsbedingung
Rekursion
Negation
Datalog
SQL
Schluß
Monotonie-Eigenschaft
Datalog – Ausdruckskraft
monoton := Vergrößerung des Inputs
(einer Anfrage/eines Operators)
verkleinert nicht den Output.
Welcher Operator der relationalen Algebra
ist nicht monoton?
Datalog ist monoton.
(Keine Negation in Rümpfen von Regeln erlaubt.)
Relationale Algebra und Datalog
sind unvergleichbar, d. h.
Durchschnitt von RA und Datalog:
Datalog ohne Rekursion
≡ relationale Algebra ohne diff-Operator.
Wie würde man das zeigen?
Rekursive Anfragen nicht in relationaler Algebra.
Relationale Algebra mit diff-Operator
nicht in Datalog ausdrückbar.
Einleitung
Rekursion
Integritätsbedingung
Datalog
Negation
SQL
Schluß
Datalog ist monoton.
z
Datenbankeinsatz: Datalog – 25
Negation in rekursiven Regeln (1)
Illustration – Beispiel 1:
Illustration – Beispiel 1:
Anfrage: „Alle Paare von Städten (x, y),
so daß UA von x nach y fliegt, nicht aber AA.“
Prädikate:
– UAreaches(x, y) :- Flights(UA, x, y, d, r)
UAreaches(x, y) :- UAreaches(x, z),
UAreaches(z, y)
– AAreaches(x, y) :- Flights(AA, x, y, d, r)
AAreaches(x, y) :- AAreaches(x, z),
AAreaches(z, y)
– UAonly(x, y) :- UAreaches(x, y),
NOT AAreaches(x, y)
UA1500-1800
UA 930-1230
SF
Datalog
DEN
UA
1400-1700
AA 900-1430
Negation
SQL
Schluß
airline
UA
AA
UA
UA
AA
AA
AA
UA
Klemens Böhm
from
SF
SF
DEN
DEN
DAL
DAL
CHI
CHI
NY
AA
1530-1730 AA 1500-1930
CHI
AA 1900-2200
UA 1830-2130
Einleitung
Rekursion
Integritätsbedingung
Datalog
Negation
DAL
SQL
Schluß
to departs arrives
DEN 930
1230
DAL 900
1430
CHI 1500 1800
DAL 1400 1700
CHI 1530 1730
NY 1500 1930
NY 1900 2200
NY 1830 2130
Datenbankeinsatz: Datalog – 27
Integritätsbedingung
Datenbankeinsatz: Datalog – 26
Negation in rekursiven Regeln (1)
Einleitung
Rekursion
Klemens Böhm
Klemens Böhm
Klemens Böhm
Datenbankeinsatz: Datalog – 28
Einleitung
Integritätsbedingung
Rekursion
Datalog
SQL
Negation
Negation in rekursiven Regeln (3)
Negation in Regelrümpfen
würde Ausdrucksmächtigkeit erhöhen.
Auswertung ist nichtdeterministisch.
Beispiel:
P(X) :- R(X), ¬Q(X).
Q(X) :- R(X), ¬P(X).
Illustration – Beispiel 2:
EDB Prädikat R enthält einen Tupel (0).
Wo ist (0)? – Zwei Lösungen.
Zwei minimale Fixpunkte.
Anwendung des Algorithmus
führt zu „Oszillieren.“
Führt modelltheoretische Betrachtung zu gleichem
Ergebnis wie beweistheoretische Betrachtung?
Wiederholung:
Anfrage ist sicher :=
Anfrage hat stets endliches Ergebnis,
unabhängig vom Datenbank-Zustand.
Beispiele?
Einleitung
Rekursion
Integritätsbedingung
Datalog
Negation
SQL
Schluß
Schluß
Negation in rekursiven Regeln (2)
Klemens Böhm
Datenbankeinsatz: Datalog – 29
Datalog
Negation
SQL
Schluß
Integritätsbedingung
Einleitung
Rekursion
Stratifikation (1)
Strukturgraph für Regelmenge:
Einleitung
Rekursion
Integritätsbedingung
P
Datalog
Q
P(X) :- R(X), ¬Q(X).
Q(X) :- R(X), ¬P(X).
Negation
SQL
Schluß
Negation in rekursiven Regeln (4)
Verwendung von Negation in Rümpfen
muß kontrolliert erfolgen.
Stratifiziertes Programm :=
Programm in Ebenen zerlegbar,
die der Reihe nach auswertbar sind.
Beispiel:
T(X, Y) :- R(X, Y).
Stratum 1
T(X, Y) :- R(X, Z), T(Z, Y).
C(X, Y) :- ¬T(X, Y)
Stratum 2
Datenbankeinsatz: Datalog – 30
Klemens Böhm
Zykel mit Negation – stoßend.
Vorfahre(X, Y) :- Elternschaft(X, Y).
Vorfahre(X, Y) :- Elternschaft(X, Z), Vorfahre(Z, Y).
Klemens Böhm
Datenbankeinsatz: Datalog – 31
Klemens Böhm
Datenbankeinsatz: Datalog – 32
Integritätsbedingung
Datalog
Negation
Zahl der ausgehenden Kanten mit Negation
bestimmt Abarbeitungsreihenfolge.
Erst Prädikate mit Stratum 0.
(AAreaches und UAreaches)
Dann Prädikate mit Stratum 1.
(UAonly)
Einleitung
UAreaches(x, y) :- Flights(UA, x, y, d, r)
UAreaches(x, y) :- UAreaches(x, z), UAreaches(z, y)
AAreaches(x, y) :- Flights(AA, x, y, d, r)
AAreaches(x, y) :- AAreaches(x, z), AAreaches(z, y)
UAonly(x, y) :- UAreaches(x, y), NOT AAreaches(x, y)
Rekursion
Integritätsbedingung
Einleitung
Rekursion
Stratifikation (3)
Strukturgraph für Beispiel 1:
Stratifikation (2)
Datalog
Negation
SQL
SQL
UAonly
Schluß
AAreaches
Schluß
UAreaches
Kein solcher Zykel.
z
Datenbankeinsatz: Datalog – 33
Klemens Böhm
Klemens Böhm
Einleitung
SQL-99 ermöglicht Rekursion in SQL Queries.
DB2 implementiert es.
Rekursion in SQL – Illustration (1)
Einleitung
Rekursion
Integritätsbedingung
Integritätsbedingung
Datalog
Datalog
Negation
Negation
Rekursion
Rekursion in SQL
SQL
SQL
Schluß
Schluß
Klemens Böhm
Datenbankeinsatz: Datalog – 34
Datenbankeinsatz: Datalog – 35
Datalog Programm:
Reaches(x, y) :- Flights(a, x, y, d, r)
Reaches(x, y) :- Reaches(x, z), Reaches(z, y)
Formulierung in SQL-99:
WITH RECURSIVE Reaches(frm, to) AS
(SELECT frm, to FROM Flights)
UNION
(SELECT R1.frm, R2.to
FROM Reaches R1, Reaches R2
WHERE R1.to = R2.frm)
SELECT * FROM Reaches;
Klemens Böhm
Datenbankeinsatz: Datalog – 36
Erläuterungen:
Aufbau Anfrage entspricht
in struktureller Hinsicht Regeln.
Rekursion nicht linear;
manche Systeme unterstützen nur
lineare Rekursion.
Hier wird nur eine Relation berechnet.
Weiteres Beispiel – Stratifikation
Anfrage – wie zuvor:
„Alle Paare von Städten (x, y),
so daß UA von x nach y fliegt, nicht aber AA.“
Integritätsbedingung
Datalog
Negation
SQL
Schluß
Klemens Böhm
Einleitung
Rekursion
Integritätsbedingung
Einleitung
Rekursion
Rekursion in SQL – Illustration (3)
Rekursion in SQL – Illustration (2)
Datalog
Negation
SQL
Schluß
Datenbankeinsatz: Datalog – 37
WITH Triples AS SELECT airline, frm, to FROM Flights,
RECURSIVE Reaches(airline, frm, to) AS
(SELECT * FROM Triples)
UNION
(SELECT Triples.airline, Triples.frm, Reaches.to
FROM Triples, Reaches
WHERE Triples.to=Reaches.frm AND
Triples.airline = Reaches.airline)
(SELECT frm, to FROM Reaches WHERE airline = ‚UA‘)
EXCEPT
(SELECT frm, to FROM Reaches WHERE airline= ‚AA‘);
SQL
Schluß
Negation
Datalog
Integritätsbedingung
Klemens Böhm
Datenbankeinsatz: Datalog – 39
Einleitung
Rekursion
Integritätsbedingung
Datalog
Einleitung
Rekursion
Monotonizität
Negation
SQL
Schluß
Wechselseitige Rekursion
Mutual Recursion
Zwei rekursive Definitionen,
die voneinander abhängen
(d. h. Definition von A hat B im Rumpf u. u.)
Erkennen mit Hilfe des Abhängigkeitsgraphen:
Knoten – Relationen,
Kante – direkte Abhängigkeit,
Zykel.
Datenbankeinsatz: Datalog – 38
Klemens Böhm
‚Verwendung‘ einer wechselseitig rekursiven
Relation S in R ist monoton :=
Hinzunahme eines Tupels in S führt dazu,
daß Tupel in R hinzukommt,
oder R bleibt unverändert.
Gegenbeispiel: ‚Oszillieren‘ im Beispiel.
P(X) :- R(X), ¬Q(X)
Q(X) :- R(X), ¬P(X)
Klemens Böhm
Datenbankeinsatz: Datalog – 40
Datalog
Negation
SQL
Schluß
Datalog
Negation
SQL
Schluß
Klemens Böhm
Datalog
Negation
SQL
Schluß
P
{(12), (34)}
{(12), (34)}
{(12), (34), (46)}
{(12), (34), (46)}
{(12), (34), (92)}
{(12), (34), (92)}
Runde
1
2
3
4
5
6
Rekursion
Einleitung
Q
∅
{(46)}
{(46)}
{(92)}
{(92)}
{(138)}
Rekursion
Integritätsbedingung
Datalog
Negation
SQL
Schluß
Erläuterung:
Berechnung des neuen Aggregatwerts
entfernt alten aus Relation Q.
Klemens Böhm
Datenbankeinsatz: Datalog – 43
Datenbankeinsatz: Datalog – 42
Aggregation kann zu NichtMonotonizität führen – Illustration (3)
Fixpunkt-Berechnung:
Integritätsbedingung
Integritätsbedingung
Aggregation kann zu NichtMonotonizität führen – Illustration (2)
Einleitung
Rekursion
Datenbankeinsatz: Datalog – 41
Klemens Böhm
Textuelle Beschreibung:
P ist Vereinigung
von Q und einer EDB Relation R.
Q enthält einen Tupel,
der die Summe der Elemente von P ist.
Einleitung
Textuelle Beschreibung:
P ist Vereinigung
von Q und einer EDB Relation R.
Q enthält einen Tupel,
der die Summe der Elemente von P ist.
Umsetzung in SQL:
Rekursion
Integritätsbedingung
WITH
RECURSIVE P(x) AS
(SELECT * FROM R)
EXCEPT
(SELECT * FROM Q),
RECURSIVE Q(x) AS
(SELECT * FROM R)
EXCEPT
(SELECT * FROM P)
SELECT * FROM P;
Erläuterungen:
Nicht zulässig – wechselseitige Rekursion
nicht erlaubt, wenn nicht monoton.
Einleitung
Aggregation kann zu NichtMonotonizität führen – Illustration (1)
Rekursion in SQL
– weiteres Beispiel
WITH
RECURSIVE P(x) AS
(SELECT * FROM R)
UNION
(SELECT * FROM Q),
RECURSIVE Q(x) AS
SELECT SUM(x) FROM P
SELECT * FROM P;
Klemens Böhm
Datenbankeinsatz: Datalog – 44
Datalog
Negation
SQL
Schluß
Klemens Böhm
Datenbankeinsatz: Datalog – 45
Wie unterscheidet sich Datalog von
relationalen Kalkülen,
relationaler Algebra,
Prolog,
SQL?
Warum beschäftigen wir uns mit Datalog, gegeben,
daß wir relationale Kalküle schon kennen?
Wie formuliert man Integritätsbedingungen in
Datalog?
Integritätsbedingung
Gegenstand dieses Kapitels: Anfragesprache
für das relationale Datenmodell, die sich aber
von bekannten Sprachen unterscheidet.
Auswertbarkeit garantiert, effizient.
Rekursion – wichtiges Merkmal,
das bisher gefehlt hat.
Erweiterungen von Datalog
(insbesondere Negation) bringen Probleme
mit sich, die hier nur angedeutet wurden.
Datenbankeinsatz: Datalog – 46
Klemens Böhm
Mögliche Prüfungsfragen (2)
Literatur
Was bedeutet modelltheoretische/
beweistheoretische Semantik von Datalog
Programmen? Unter welchen Umständen können
diese Betrachtungsweisen sich im Ergebnis
unterscheiden?
Was ist Stratifikation? Warum ist dieses Konzept
im Kontext von Datalog bedeutsam?
Was ist Zusammenhang zwischen Aggregation
und Nicht-Monotonizität?
Gottfried Vossen. Datenmodelle, DatenbankSprachen und Datenbank-Managementsysteme.
4. Auflage. Oldenbourg-Verlag. Kapitel 12.3.
Hector Garcia-Molina, Jeffrey D. Ullman, Jennifer
Widom. Database Systems: The Complete Book.
Prentice Hall. Kapitel 10.
Klemens Böhm
Datenbankeinsatz: Datalog – 47
Einleitung
Rekursion
Mögliche Prüfungsfragen (1)
Schlußbemerkungen
Klemens Böhm
Datenbankeinsatz: Datalog – 48
Herunterladen