discussion #24 1/17 discussion #24 deductive databases
Post on 22-Dec-2015
221 views
TRANSCRIPT
Discussion #24 2/17
Topics
• Deductive Databases
• Turning Datalog into Relational Algebra
• Recursive Rules & the Least Fixed Point Algorithm
Discussion #24 3/17
Deductive Databases
• Deductive database management systems answer queries based on methods related to proofs from rules and facts.
• Relational algebra operations can be used to more efficiently process deductive database queries.
Discussion #24 4/17
Correspondence Between Relational Databases & Deductive Databases
Schemes:f(A,B)b(C,D)
Facts:f(1,1). f(1,2).f(2,3).
Rules:b(x,y) :- f(y,x).b(x,y) :-
f(x,z),f(z,y).Queries:
b(1,x)?
f(A, B) b(C, D) 1 1
1 2 2 3
b b xCyDxy(AyBx f ) b b xCyDxy(AxBzf || AzByf)xDxC=1b
Discussion #24 5/17
Correspondence Between Relational Databases & Deductive Databases
Schemes:f(A,B)b(C,D)
Facts:f(1,1). f(1,2).f(2,3).
Rules:b(x,y) :- f(y,x).b(x,y) :-
f(x,z),f(z,y).Queries:
b(1,x)?
f(A, B) b(C, D) 1 1 1 1
1 2 2 1 2 3 3 2
b b xCyDxy(AyBx f ) b b xCyDxy(AxBzf || AzByf)xDxC=1b
Discussion #24 6/17
Correspondence Between Relational Databases & Deductive Databases
Schemes:f(A,B)b(C,D)
Facts:f(1,1). f(1,2).f(2,3).
Rules:b(x,y) :- f(y,x).b(x,y) :-
f(x,z),f(z,y).Queries:
b(1,x)?
f(A, B) b(C, D) 1 1 1 1
1 2 2 1 2 3 3 2 1 2 1 3
b b xCyDxy(AyBx f ) b b xCyDxy(AxBzf || AzByf)xDxC=1b
Discussion #24 7/17
Correspondence Between Relational Databases & Deductive Databases
Schemes:f(A,B)b(C,D)
Facts:f(1,1). f(1,2).f(2,3).
Rules:b(x,y) :- f(y,x).b(x,y) :-
f(x,z),f(z,y).Queries:
b(1,x)?
f(A, B) b(C, D) 1 1 1 1
1 2 2 1 2 3 3 2 1 2 1 3
b b xCyDxy(AyBx f ) b b xCyDxy(AxBzf || AzByf)xDxC=1b
x123
or x = 1 x = 2 x = 3
Discussion #24 8/17
Correspondence Between Relational Databases & Deductive Databases
Schemes:f(A,B)b(C,D)
Facts:f(1,1). f(1,2).f(2,3).
Rules:b(x,y) :- f(y,x).b(x,y) :-
f(y,y),f(2,x).Queries:
b(1,x)?
f(A, B) b(C, D) 1 1 1 1
1 2 2 1 2 3 3 2
b b xCyDxy(AyBx f ) b b xCyDxy(AyAA=Bf
|| BxBA=2f)xDxC=1b
Discussion #24 9/17
Correspondence Between Relational Databases & Deductive Databases
Schemes:f(A,B)b(C,D)
Facts:f(1,1). f(1,2).f(2,3).
Rules:b(x,y) :- f(y,x).b(x,y) :-
f(y,y),f(2,x).Queries:
b(1,x)?
f(A, B) b(C, D) 1 1 1 1
1 2 2 1 2 3 3 2 3 1
b b xCyDxy(AyBx f ) b b xCyDxy(AyAA=Bf
|| BxBA=2f)xDxC=1b
Discussion #24 10/17
Correspondence Between Relational Databases & Deductive Databases
Schemes:f(A,B)b(C,D)
Facts:f(1,1). f(1,2).f(2,3).
Rules:b(x,y) :- f(y,x).b(x,y) :-
f(y,y),f(2,x).Queries:
b(1,x)?
f(A, B) b(C, D) 1 1 1 1
1 2 2 1 2 3 3 2 3 1
b b xCyDxy(AyBx f ) b b xCyDxy(AyAA=Bf
|| BxBA=2f)xDxC=1b
x 1
or x = 1
Discussion #24 11/17
Correspondence Between Relational Databases & Deductive Databases
Schemes:f(A,B)b(C,D)
Facts:f(1,1). f(1,2).f(2,3).
Rules:b(x,y) :- f(y,x).b(x,y) :-
f(y,y),f(2,x).Queries:
b(x,x)?
f(A, B) b(C, D) 1 1 1 1
1 2 2 1 2 3 3 2 3 1
b b xCyDxy(AyBx f ) b b xCyDxy(AyAA=Bf
|| BxBA=2f)xCxCC=Db
x 1
or x = 1
Discussion #24 12/17
Rule Order & Recursive Rules
• Rules may appear in any order.
• Rules may be recursive.
• To handle this, we repeatedly execute rules in any order and quit when we deduce no new facts (least fixed point algorithm).
Discussion #24 13/17
Least Fixed Point AlgorithmSchemes:
f(A,B)b(C,D)
Facts:f(1,1).f(1,2).f(2,3).
Rules:b(x,y) :- f(x,y).b(x,y) :-
f(x,z),b(z,y).Queries:
b(1,3)?
• Least Fixed Point Algorithm– Start with an empty set S– Add to S repeatedly until
no more changes.• Essentially:
b { }repeat:
b b fb b (f || b)
until no changeresult “yes” if not empty: C=1D=3b
Discussion #24 14/17
Set UpSchemes:
f(A,B)b(C,D)
Facts:f(1,1).f(1,2).f(2,3).
Rules:b(x,y) :- f(x,y).b(x,y) :-
f(x,z),b(z,y).Queries:
b(1,3)?
• Before unioning, sets must be union compatible.
• Before joining, attributes must observe variable sameness and differences.
b { }repeat:
b b ACBDf
b b CDAC(f || CBb)
until no changeresult “yes” if not empty: C=1D=3b
Note: these renamings
are “human determined.”
Use renamings as described
earlier for programming.
Discussion #24 15/17
1st Iteration Schemes:f(A,B)b(C,D)
Facts:f(1,1).f(1,2).f(2,3).
Rules:b(x,y) :- f(x,y).b(x,y) :-
f(x,z),b(z,y).Queries:
b(1,3)?
b { }repeat:
b b ACBDfb b CDAC(f || CBb)
until no changeresult “yes” if not empty: C=1D=3b
b(C,D) b(C,D) f(A,B)f(C,D) 1 1 1 2 2 3
1 1 1 2 2 3
ACBDfb(C,D)
b(C,D) b(C,D) f(A,B) || b(C,D)f(A,B) || b(B,D) = t(A,B,D) 1 1 1 1 1 1 1 1 2 1 2 1 1 2 2 3 2 3 1 2 3
1 1 1 2 2 3
CBb
t(C,B,D) 1 1 1 1 1 2 1 2 3
CDACt
1 1 1 2 2 3 1 3
b changed! So, repeat.
Discussion #24 16/17
2nd Iteration Schemes:f(A,B)b(C,D)
Facts:f(1,1).f(1,2).f(2,3).
Rules:b(x,y) :- f(x,y).b(x,y) :-
f(x,z),b(z,y).Queries:
b(1,3)?
b { }repeat:
b b ACBDfb b CDAC(f || CBb)
until no changeresult “yes” if not empty: C=1D=3b
b(C,D) b(C,D) f(A,B)
b(C,D) b(C,D) f(A,B) || b(C,D)f(A,B) || b(B,D) = t(A,B,D) 1 1 1 1 1 1 1 1 2 1 2 1 1 2 2 3 2 3 1 1 3 1 3 1 2 3
CBb
t(C,B,D) 1 1 1 1 1 2 1 1 3 1 2 3
CDACt
1 1 1 2 2 3 1 3
f hasn’t changed so no change here
1 1 1 2 2 3 1 3
b did NOT change, so done.
duplicate
Discussion #24 17/17
Query Finalization Schemes:f(A,B)b(C,D)
Facts:f(1,1).f(1,2).f(2,3).
Rules:b(x,y) :- f(x,y).b(x,y) :-
f(x,z),b(z,y).Queries:
b(1,3)?
b { }repeat:
b b ACBDfb b CDAC(f || CBb)
until no changeresult “yes” if not empty: C=1D=3b
b(1,3)?
So, finally…
C=1D=3b(C,D)? = C,D = not empty = Yes 1 1 1 3 1 2 2 3 1 3
b(2,2)? Nob(1,X)? Yes X = 1 X = 2 X = 3
b(2,X)? Yes X = 3