Datalog Recursive Queries and Deductive Database: Meena Poorani K.N (2018202029) Sarumathi R.S (2018202050)
Datalog Recursive Queries and Deductive Database: Meena Poorani K.N (2018202029) Sarumathi R.S (2018202050)
Deductive Database:
A deductive database is a database system that can make
conclusions about its data based on a set of well-defined rules and
facts. This type of database was developed to combine logic
programming with relational database management systems. Usually,
the language used to define the rules and facts is the
logical programming language Datalog.
Recursive Queries:
Recursive queries are used to query hierarchical data.
A recursive CTE has three elements:
Example:
Office.sql
create table position(pos string primary key);
% To find boss
Office.dl
dependency(ceo,manager).
dependency(manager,supervisor).
dependency(manager,trainee).
dependency(supervisor,clerk).
emp(devi,trainee).
emp(hamen,ceo).
emp(john,manager).
emp(paulin,supervisor).
emp(ram,clerk).
position(ceo).
position(clerk).
position(manager).
position(supervisor).
position(trainee).
:-type(position(pos:string)).
:-type(dependency(boss:string,sub:string)).
:-type(emp(ename:string,pos:string)).
:-pk(position,[pos]).
:-fk(dependency,[boss],position,[pos]).
:-fk(dependency,[sub],position,[pos]).
:-fk(emp,[pos],position,[pos]).
% direct boss
dboss(B,S) :-
emp(B,BP),
emp(S,SP),
dependency(BP,SP).
% boss
findboss(B,S) :-
dboss(B,S).
findboss(B,S) :-
findboss(B,I),
findboss(I,S).
Result:
Graph: