Kein Folientitel

Download Report

Transcript Kein Folientitel

Andere deduktive DB-Sprachen
Kapitel 2
Deduktive Datenbanken
WS 2000/01
3.
© 2000 Prof.. Dr. Rainer Manthey
Sichten und Integritätsbedingungen
in anderen relationalen DB-Sprachen
Deduktive Datenbanken
1
"Landschaft" relationaler Anfragesprachen
Kapitel 3
Domain Relational Calculus
DRC
RA
Datalog
Relational Algebra
TRC
SQL
Tuple Relational Calculus
Structured Query Language
© 2000 Prof. Dr. Rainer Manthey
Deduktive Datenbanken
2
Relationale Anfragesprachen: Grundsätzliches
•
Kapitel 3
zwei prinzipielle Ansätze für Anfragesprachen:
°
logikbasiert:
°
algebraisch:
beim Relationenmodell Bereichskalkül (DRC)
oder Tupelkalkül (TRC)
Relationenalgebra (RA)
•
in der Praxis am weitesteten verbreitet: "Hybridsprache" SQL
(Mischform aus TRC- und RA-Elementen)
•
Datalog: zumindest als Anfragesprache betrachtet echte Teilsprache des DRC
•
"klassisches" Resultat der DB-Theorie:
Relationenalgebra und Einschränkung der beiden Kalküle
auf sichere Ausdrücke sind gleich ausdrucksfähig
relationale Vollständigkeit
•
SQL: syntaktisch so konstruiert, daß nur sichere Ausdrücke möglich sind
==> SQL relational vollständig
© 2000 Prof. Dr. Rainer Manthey
Deduktive Datenbanken
3
Fragestellungen in Kapitel 3
Kapitel 3
•
Thema dieses Kapitels: Vergleich von Datalog mit anderen relationalen Sprachen
•
erste Frage:
•
weitere interessante Fragestellungen:
Ist Datalog relational vollständig ?
(trotz der starken Beschränkung des Bereichskalküls)
Wie kann man Datalog-Ausdrücke äquivalenzerhaltend in
Ausdrücke der anderen relationalen Sprachen transformieren ?
Wie kann man beliebige RA- oder SQL-Ausdrücke nach Datalog
transformieren ?
•
um "fairen" Vergleich vornehmen zu können: Relationenkalküle und Relationenalgebra müssen um Sichtkonzept erweitert werden (SQL besitzt bereits Sichten)
•
damit naheliegend: Wie gut eignen sich die anderen relationalen Sprachen zur
als sprachliche Basis für deduktive Datenbanken ?
Wie lassen sich Ergebnisse aus dem Datalog-Kontext auf
diese anderen Regelsprachen übertragen ?
© 2000 Prof. Dr. Rainer Manthey
Deduktive Datenbanken
4
2.1 Fakten und Regeln
Kapitel 2
Deduktive Datenbanken
WS 2000/01
3.
Sichten und Integritätsbedingungen
in anderen relationalen DB-Sprachen
3.1
3.2
3.3
3.4
© 2000 Prof.. Dr. Rainer Manthey
Relationale Algebra
Tupelkalkül
Bereichskalkül
SQL
Deduktive Datenbanken
5
Relationale Algebra
Kapitel 3
Übersicht über Operatoren der RA (in keyword-basierter Notation):
nähere Erläuterungen zur Wirkungsweise der Operatoren s. DB-Vorlesung
Attribute
Attributvergleiche
allgemeine Mengenoperatoren
projection [ a1, . . ., aN ] (R)
union (R, S)
selection [condition ] (R)
difference (R, S)
join [ condition ](R, S)
intersection (R, S)
semijoin [ condition ] (R,S)
complement_semijoin [ condition ] (R,S)
product (R, S)
"Spezialoperator":
spezielle relationale Operatoren
© 2000 Prof. Dr. Rainer Manthey
Deduktive Datenbanken
division(R,T)
6
RA-Operatoren in Datalog
•
Kapitel 3
im folgenden (ohne Beschränkung der Allgemeinheit): R, S binäre Relationen
R
A
r(X,Y)
•
S
C
D
s(X,Y)
mittels der beiden Datalog-Junktoren Konjunktion und (sichere) Negation:
offensichtlich Durchschnitt und Differenz direkt ausdrückbar
intersection (R,S)
difference (R,S)
•
B
{ [X,Y] : r(X,Y) , s(X,Y) } ?
{ [X,Y] : r(X,Y) , not s(X,Y) } ?
dabei zu beachten: beide Operandenrelationen müssen strukturgleich ("vereinigungsverträglich") sein
© 2000 Prof. Dr. Rainer Manthey
Deduktive Datenbanken
7
RA-Operatoren in Datalog (2)
•
Kapitel 3
ebenfalls allein mittels Konjunktion in Datalog ausdrückbar:
kartesisches Produkt und (davon abgeleiteter) Join
product(R,S)
{ [X1,Y1,X2,Y2] : r(X1,Y1) , s(X2,Y2) } ?
unterschiedliche Variablen, da keine Annahme
über Attributgleichheit beim Produkt
•
Equi-Join (Join mit Gleichheitsbedingung) ausdrückbar durch Verwendung
identischer Variablen an Join-Positionen
join [ B=C] (R,S)
{ [X,Y,Y,Z] : r(X,Y) , s(Y,Z) } ?
join [ A=D] (R,S)
{ [X,Y,Z,X] : r(X,Y) , s(Z,X) } ?
© 2000 Prof. Dr. Rainer Manthey
Deduktive Datenbanken
8
RA-Operatoren in Datalog (3)
•
Kapitel 3
alternative Notation für Equi-Join unter Verwendung von Gleichheitsliteralen:
join [ B=C] (R,S)
•
{ [X,Y1,Y2,Z] : r(X,Y1) , s(Y2,Z) , Y1 = Y2 } ?
Spezialform "natural join" ohne explizite Angabe der Join-Bedingung und ohne
Duplizierung der Join-Spalte(n):
join (R,S)
•
{ [X,Y,Z] : r(X,Y) , s(Y,Z) } ?
analoge Ausdrucksweise für Ungleichheitsbedingungen beim Join, z.B.:
join [ B>C and D<0 ] (R,S)
{ [X1,Y1,X2,Y2] : r(X1,Y1) , s(X2,Y2) , Y1>X2, Y2<0} ?
© 2000 Prof. Dr. Rainer Manthey
Deduktive Datenbanken
9
RA-Operatoren in Datalog (4)
•
Kapitel 3
weitere Spezialform des Join: Auswahl derjenigen R-Fakten, die in S einen
"Join-Partner" besitzen (Semijoin)
semijoin [ B=C] (R,S)
•
{ [X,Y] : r(X,Y) , s(Y,Z) } ?
analog: R-Fakten, die nicht "joinbar" sind (Complement-Semijoin")
complement_semijoin [ B=C] (R,S)
•
Vorsicht !
{ [X,Y] : r(X,Y) , not s(Y,Z) } ?
Gefahr einer unsicheren Verwendung der Negation: durch
Einsatz lokaler Regeln zu verhindern
{ [X,Y] : r(X,Y) , not t(Y) }
with t(Y) <= s(Y,Z) ?
© 2000 Prof. Dr. Rainer Manthey
Deduktive Datenbanken
10
RA-Operatoren in Datalog (5)
•
ebenfalls nur durch Einsatz lokaler Regeln und Hilfsrelationen ausdrückbar:
Vereinigung (da explizite Disjunktion in Datalog fehlt)
union(R,S)
•
Kapitel 3
{ [X,Y] : t(X,Y) }
with t(X,Y) <= r(X,Y);
t(X,Y) <= s(X,Y) ?
dagegen sehr natürlich über Zielliste ausdrückbar: Projektion
projection [ B ] (R)
{ [Y] : r(X,Y) } ?
impliziter Existenzquantor
"repräsentiert" Duplikatelimination
der Projektionsoperation
© 2000 Prof. Dr. Rainer Manthey
Deduktive Datenbanken
11
RA-Operatoren in Datalog (6)
•
Kapitel 3
wie beim Join: auch bei der Selektion alternative Formulierungen für
Gleichheitsbedingungen (Variablengleichheit oder Gleichheitsliterale)
selection [A = B ] (R)
{ [X,X] : r(X,X) } ?
{ [X,Y] : r(X,Y), X = Y } ?
selection [A = a ] (R)
{ [a, Y] : r(a,Y) } ?
{ [X,Y] : r(X,Y), X = a } ?
•
Ungleichungen auch hier nur mittels built in-Prädikaten ausdrückbar:
select ion [A > B ] (R)
© 2000 Prof. Dr. Rainer Manthey
{ [X,Y] : r(X,Y), X > Y } ?
Deduktive Datenbanken
12
RA-Operatoren in Datalog (7)
R
A
B
a
a
a
b
b
c
1
2
3
1
2
1
Kapitel 3
T
C
1
2
division(R,T)
A
a
b
etwas aufwendiger, aber ebenfalls noch "lesbar" in Datalog: Division zweier Relationen
{ [ X ] : r(X,Y), not t1(X) }
with t1(X) <= r(X,_), t(Z), not r(X,Z)
© 2000 Prof. Dr. Rainer Manthey
Deduktive Datenbanken
?
13
Geschachtelte RA-Ausdrücke in Datalog
Kapitel 3
Schachtelung von Ausdrücken in Datalog nur mittels Hilfsrelationen ausdrückbar:
entspricht expliziter Benennung von Zwischenergebnissen bei OperatorbaumDarstellung von RA-Ausdrücken
projection [ A ] ( difference ( R, intersection (R,S) ) )
projection [ A ]
difference
R
intersection
R
© 2000 Prof. Dr. Rainer Manthey
{ [ X ] : t2(X,Y) }
with t2(X,Y) <=
r(X,Y) , not t1(X,Y) ;
t1(X,Y) <=
r(X,Y) , s(X,Y) ?
S
Deduktive Datenbanken
14
Datalog ist ausdrucksstärker als RA !
•
damit konstruktiv nachgewiesen:
Kapitel 3
Datalog ist relational vollständig !
(aber nur aufgrund der Erweiterungen um
built in-Prädikate und lokale Regeln !)
•
mindestens genauso wichtig:
z.B.:
•
Datalog ist ausdrucksstärker als die RA !
{ [ X ] : p(X,Y) }
with p(X,Y) <=
q(X,Y);
p(X,Y) <=
q(X,Z) , p(Z,Y) ?
(gerade wegen der Erweiterung
um lokale Regeln ==>
Rekursion einsetzbar !!)
in RA nicht
formulierbar !!
angebliche "Schwäche" der RA gegenüber Datalog beruht auf "Unfairness":
RA besitzt in "klassischer Form" kein (lokales) Regelkonzept
© 2000 Prof. Dr. Rainer Manthey
Deduktive Datenbanken
15
Regelkonzept für RA
•
Kapitel 3
einfache Möglichkeit, auch die RA zu einer Sprache mit Sichtkonzept zu
machen: Erweiterung um definierende Gleichungen für Relationen
z.B.:
P = join [A=D and B=C] (Q, R)
p(X,Y) <= q(X,Y), r(Y, X).
Q = projection [A, B] (S)
R = complement_semijoin(T, W)
q(X,Y) <= s(X, Y, Z).
r(Y, X) <= t(X,Y), not w(Y).
Datalog
erweiterte RA
•
Werden auch lokale Definitionsgleichungen zugelassen, dann sind sogar
Anfragen mit Rekursion in erweiterter RA ausdrückbar:
projection [ C ] (P)
with P = union(Q, join [B=C](Q, P))
© 2000 Prof. Dr. Rainer Manthey
Deduktive Datenbanken
16
Testanfragen und Integritätsbedingungen in RA
•
Kapitel 3
Testanfragen in RA nur durch zusätzliche Erweiterung ausdrückbar:
Vergleichsliterale für RA-Ausdrücke
not m
with m <= q(X) , r(X) ?
in RA erweitert um Gleichheitstest
(und expliziter leerer Menge)
intersection(Q,R) = { }
•
"Sind Q und R disjunkt?"
in Datalog
Gleichungen und Ungleichungen mit Vergleich auf "Leerheit" als Basis für
Integritätsbedingungen in der relationalen Algebra:
constraint intersection(Q,R) \= { }
© 2000 Prof. Dr. Rainer Manthey
Deduktive Datenbanken
"Q und R dürfen nie
disjunkt sein !"
17
Bereichskalkül
Kapitel 2
Deduktive Datenbanken
WS 2000/01
3.
Sichten und Integritätsbedingungen
in anderen relationalen DB-Sprachen
3.1
3.2
3.3
3.4
© 2000 Prof.. Dr. Rainer Manthey
Relationale Algebra
Bereichskalkül
Tupelkalkül
SQL
Deduktive Datenbanken
18
Bereichskalkül: Grundlagen
Kapitel 3
•
Bereichskalkül: spezielle prädikatenlogische Sprache zur Formulierung von
Anfragen über relationalen Datenbanken
•
zu Prädikatenlogik: siehe Vorlesung "Deskriptive Programmierung" SS 00 (Kap. 3)
•
charakteristisch für Bereichskalkül ("domain relational calculus": DRC)
°
°
°
•
Variablen bezeichnen einzelne Attributwerte
(d.h. Elemente des zugehörigen Wertebereichs)
n-stellige Relation in der DB = n-stelliges Relationssymbol im Kalkül
keine Funktionssymbole (ausser "built in"-Funktionen)
Konstruktion komplexer Formeln mit den üblichen Junktoren und Quantoren:
in Datalog
zulässig
and
or
not
exists
forall
in Datalog zumindest
implizit nutzbar
==>
<==>
© 2000 Prof. Dr. Rainer Manthey
Deduktive Datenbanken
19
Bereichskalkülformeln in Datalog
Kapitel 3
•
offensichtlich: Datalog echte Teilsprache des Bereichskalküls
•
wesentliche Unterschiede: keine Disjunktion, keine Quantoren, keine Schachtelung
•
Disjunktion ausdrückbar durch Hilfsrelationen mit mehreren definierenden Regeln
(wie bei Vereinigung in der RA)
•
Implikation bzw. Äquivalenz: in der Logik ausdrückbar durch Rückführung auf Disjunktion und Negation
( A ==> B )
•
äquivalent zu
( not A or B )
expliziter Existenzquantor des Bereichskalküls ausdrückbar mittels implizitem
Existenzquantor in Datalog-Regeln durch Einführung von Hilfsrelationen
exists [ X ] : ( p(X) and q(X) ) ?
t
with t <= p(X), q(X) ?
exists [ X ]
© 2000 Prof. Dr. Rainer Manthey
Deduktive Datenbanken
20
Bereichskalkülformeln in Datalog (2)
•
Allquantor in der Logik ausdrückbar durch Existenzquantor und doppelte Negation:
forall [ X ] : p(X)
•
Kapitel 3
äquivalent zu
not exists [ X ] : not p(X)
damit in Datalog unter Verwendung von Hilfsrelationen darstellbar:
not t1
with t1 <= not t2;
t2 <= p(X) ?
exists [ X ]
•
geschachtelte Formeln im (vollen) Bereichskalkül: systematisch nach Datalog
überführbar durch
° Verschieben von Negation "nach innen"
°
"Ausmultiplizieren" von Konjunktionen (KNF)
°
Einführen von Hilfsrelationen, wo nötig oder praktisch
© 2000 Prof. Dr. Rainer Manthey
Deduktive Datenbanken
21
Regelkonzept für vollen Bereichskalkül
Kapitel 3
•
um Vergleichbarkeit mit Datalog herzustellen:
Ausdehnung der Notationen für deduktive und normative Regeln auf
den vollen Bereichskalkül ganz analog zu Datalog möglich
•
wesentlicher Unterschied: Regelrumpf kann volle Logiksyntax enthalten, z.B.:
wg. Sicherheit
erforderlich
star(X) <=
artist(X) and
forall [ Y] : ( fan(Y) ==> loves(Y,X) ).
•
Sicherheit von Regeln ist aber nicht mehr so offensichtlich wie in Datalog !
•
dafür: "natürlichere" Notation von Integritätsbedingungen möglich (ohne Zwang
zur Einführung parameterloser Hilfsrelationen; wegen expliziter Quantoren)
constraint forall [ X ] : ( fan_of(X, "Klassik") ==> loves(X,"Karajan") ).
© 2000 Prof. Dr. Rainer Manthey
Deduktive Datenbanken
22
"Normalisierung" Bereichskalkül --> Datalog im Beispiel
Kapitel 3
star(X) <=
artist(X) and
forall [ Y] : ( fan(Y) ==> loves(Y,X) ).
"Ein Künstler, der von jedem Fan geliebt wird, ist ein Star."
not exists [ Y] : not ( fan(Y) ==> loves(Y,X) ).
not exists [ Y] : not ( not fan(Y) or loves(Y,X) ).
not exists [ Y] : (fan(Y) and not loves(Y,X) ).
wg. Sicherheit
star(X) <=
artist(X) , not unpopular(X).
unpopular(X) <=
artist(X) , fan(Y), not loves(Y,X).
© 2000 Prof. Dr. Rainer Manthey
Deduktive Datenbanken
23
Tupelkalkül
Kapitel 2
Deduktive Datenbanken
WS 2000/01
3.
Sichten und Integritätsbedingungen
in anderen relationalen DB-Sprachen
3.1
3.2
3.3
3.4
© 2000 Prof.. Dr. Rainer Manthey
Relationale Algebra
Bereichskalkül
Tupelkalkül
SQL
Deduktive Datenbanken
24
Tupelkalkül: Grundlagen
Kapitel 3
•
Tupelkalkül: Alternative zum Bereichskalkül; ebenfalls prädikatenlogische Sprache
zur Formulierung von Anfragen über relationalen Datenbanken
•
charakteristisch für Tupelkalkül ("tuple relational calculus": TRC)
°
°
°
Variablen bezeichnen individuelle Tupel (Fakten) einer Relation
jede DB-Relation (unabhängig von Stelligkeit) = einstelliges Relationssymbol im Tupelkalkül
Attribute als einstellige Funktionssymbole (+ "built in"-Funktionen)
•
Konstruktion komplexer Formeln wieder mit den üblichen Junktoren und Quantoren
•
Tupelkalkül-Ausdrücke haben eine ganz andere Struktur als (logisch äquivalente)
Bereichskalkül- (und damit Datalog-)Ausdrücke.
==> recht aufwendige Hin- und Zurück-Transformation
•
aber: Tupelkalkül als sprachliche Basis von SQL (neben RA) sehr wichtig
© 2000 Prof. Dr. Rainer Manthey
Deduktive Datenbanken
25
Transformation TRC <--> DRC
Kapitel 3
einige einfache "Grundregeln" für wechselseitige Transformation:
°
pro DRC-Literal eine Tupelvariable im TRC
(mit zugehörigem unären Typliteral)
z.B.:
p(X,Y,Z)
<==>
p(T)
°
umgekehrt: pro TRC-Typliteral ein DRC-Literal mit entsprechend
vielen Bereichsvariablen (ggf. exists-quantifiziert)
°
pro Paar von Vorkommen identischer Bereichsvariablen im DRC
eine Attributgleichung im TRC (und umgekehrt)
z.B.:
°
q(X,Y) and r(Y,Z)
<==>
q(T1) and q(T2) and T1.B = T2.A
pro Ziellistenvariable (im DRC) ein Attributterm (im TRC)
z.B.:
© 2000 Prof. Dr. Rainer Manthey
{ [X,Y] : q(X,Y) . . . } <==> { [T.A, T.B ] : q(T) . . . }
Deduktive Datenbanken
26
Transformation TRC <--> DRC (2)
DRC ==> TRC
z.B.:
{ [ X,Y ] :
Kapitel 3
relativ direkt zu realisieren durch Anwenden dieser
Grundregeln
exists [ Z ] : ( p(X,Z) and q(Z,Y) ) and
not p(X,Y) }
DRC
{ [ T1.A, T2.B ] : p(T1) and q(T2) and T1.B = T2.A and
not exists [ T3 ] : ( p(T3) and
T1.A=T3.A and
T1.B=T3.B ) }
TRC
© 2000 Prof. Dr. Rainer Manthey
Deduktive Datenbanken
27
Transformation TRC <--> DRC (3)
TRC ==> DRC
z.B.:
{ [ T1.A ] :
Kapitel 3
Schwierigkeiten vor allem beim Bestimmen der benötigten
Bereichsvariablen und deren Identitäten
p(T1) and T1.B = T1.C and
exists [ T2, T3 ] : ( q(T2) and q(T3) and
T2.A=T1.B and
T3.B=T1.A ) }
TRC
{[X]:
exists [ Y ] : p(X,Y,Y) and
exists [ Z1,Z2 ] : ( q(X,Z1) and q(Z2,X) ) }
DRC
© 2000 Prof. Dr. Rainer Manthey
Deduktive Datenbanken
28
Regelkonzept für Tupelkalkül
Kapitel 3
•
Regelformat für deduktive Regeln: analog zu DRC bzw. Datalog
•
Alternative bei der Konstruktion der Zielliste: direkt vs. indirekt
p(X,Y) <= exists [ Z ] : ( q(X,Z) and r(Z,Y) ) .
DRC:
TRC, 1. Variante: Tupelvariable im Regelkopf
p(T) <= exists [ T1, T2 ] : ( q(T1) and r(T2) and T1.B=T2.A
and T.A=T1.A and T.B=T2.B ) .
TRC, 2. Variante: Liste von Attributtermen im Regelkopf
p( [ T1.A, T2.B ])
•
<= q(T1) and r(T2) and T1.B=T2.A .
Integritätsbedingungen mit expliziten Quantoren (analog zu DRC)
© 2000 Prof. Dr. Rainer Manthey
Deduktive Datenbanken
29
SQL
Kapitel 2
Deduktive Datenbanken
WS 2000/01
3.
Sichten und Integritätsbedingungen
in anderen relationalen DB-Sprachen
3.1
3.2
3.3
3.4
© 2000 Prof.. Dr. Rainer Manthey
Relationale Algebra
Tupelkalkül
Bereichskalkül
SQL
Deduktive Datenbanken
30