Download presentation
Presentation is loading. Please wait.
1
Discussion #24 1/17 Discussion #24 Deductive Databases
2
Discussion #24 2/17 Topics Deductive Databases Turning Datalog into Relational Algebra Recursive Rules & the Least Fixed Point Algorithm
3
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.
4
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 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
5
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 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
6
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 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
7
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 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
8
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 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
9
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 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
10
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 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
11
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 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
12
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).
13
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
14
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.
15
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) 1 1 1 2 2 3 1 1 1 2 2 3 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) 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 CBbCBb t(C,B,D) 1 1 1 1 1 2 1 2 3 CD A C t 1 1 1 2 2 3 1 3 b changed! So, repeat.
16
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) 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 CBbCBb t(C,B,D) 1 1 1 1 1 2 1 1 3 1 2 3 CD A C t 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
17
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 1 1 1 3 1 2 2 3 1 3 b(2,2)? No b(1,X)? Yes X = 1 X = 2 X = 3 b(2,X)? Yes X = 3
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.