Discussion #24 1/17 Discussion #24 Deductive Databases
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) b b x C y D xy ( A y B x f ) b b x C y D xy ( A x B z f | | A z B y f) x D x C=1 b
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) b b x C y D xy ( A y B x f ) b b x C y D xy ( A x B z f | | A z B y f) x D x C=1 b
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) b b x C y D xy ( A y B x f ) b b x C y D xy ( A x B z f | | A z B y f) x D x C=1 b
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) b b x C y D xy ( A y B x f ) b b x C y D xy ( A x B z f | | A z B y f) x D x C=1 b x123x123 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) b b x C y D xy ( A y B x f ) b b x C y D xy ( A y A A=B f | | B x B A=2 f) x D x C=1 b
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) b b x C y D xy ( A y B x f ) b b x C y D xy ( A y A A=B f | | B x B A=2 f) x D x C=1 b
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) b b x C y D xy ( A y B x f ) b b x C y D xy ( A y A A=B f | | B x B A=2 f) x D x C=1 b x1x1 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) b b x C y D xy ( A y B x f ) b b x C y D xy ( A y A A=B f | | B x B A=2 f) x C x C C=D b x1x1 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 Algorithm 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)? Least Fixed Point Algorithm –Start with an empty set S –Add to S repeatedly until no more changes. Essentially: b { } repeat: b b f b b (f | | b) until no change result “yes” if not empty: C=1 D=3 b
Discussion #24 14/17 Set Up 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)? Before unioning, sets must be union compatible. Before joining, attributes must observe variable sameness and differences. b { } repeat: b b A C B D f b b CD A C (f | | C B b) until no change result “yes” if not empty: C=1 D=3 b Note: these renamings are “human determined.” Use renamings as described earlier for programming.
Discussion #24 15/17 1 st 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 A C B D f b b CD A C (f | | C B b) until no change result “yes” if not empty: C=1 D=3 b b(C,D) b(C,D) f(A,B) f(C,D) ACBDfACBDf b(C,D) b(C,D) b(C,D) f(A,B) | | b(C,D) f(A,B) | | b(B,D) = t(A,B,D) CBbCBb t(C,B,D) CD A C t b changed! So, repeat.
Discussion #24 16/17 2 nd 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 A C B D f b b CD A C (f | | C B b) until no change result “yes” if not empty: C=1 D=3 b 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) CBbCBb t(C,B,D) CD A C t f hasn’t changed so no change here 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 A C B D f b b CD A C (f | | C B b) until no change result “yes” if not empty: C=1 D=3 b b(1,3)? So, finally… C=1 D=3 b(C,D)? = C,D = not empty = Yes b(2,2)? No b(1,X)? Yes X = 1 X = 2 X = 3 b(2,X)? Yes X = 3