Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouAndré Pinta Alterado mais de 9 anos atrás
1
Bases de Dados Dedutivas Bases de dados dedutivas usam a tecnologia de linguagens de programaçao lógica para aumentar as bases de dados relacionais com suporte para vistas recursivas e dados nao atómicos. Base de dados formada por factos + regras. Factos: edge(a,b). edge(a,c). edge(b,c). edge(b,d). Regras: twoedges(X,Y) :- edge(X,Z), edge(Z,Y).
2
Regras não são “views”. path(X,Y) :- edge(X,Y). path(X,Y) :- edge(X,Z), path(Z,Y). Regras recursivas não podem ser expressas em SQL!
3
Consultas ?- edge(a,Y). Y = b; Y = c.
4
Consultas ?- edge(a,Y). Y = b; Y = c. Em SQL: select sink from edge where source = ‘a’;
5
Consultas envolvendo recursão ?- path(a,Y). Y = b; Y = c; Y= d. Não pode ser expressa directamente em SQL.
6
Mais exemplos Factos: supervise(franklin,john). supervise(franklin,ramesh). supervise(franklin,joyce). supervise(jennifer,alicia). supervise(jennifer,ahmad). supervise(james,franklin). supervise(james,jennifer). Regras: superior(X,Y) :- supervise(X,Y). superior(X,Y) :- supervise(X,Y), superior(Z,Y). subordinate(X,Y) :- superior(Y,X).
7
Mecanismos de inferencia para programas lógicos Bottom-up (forward chaining) Top-down (backward chaining) ?- superior(james,Y).
8
Datalog employee(john).male(john). employee(franklin).male(franklin). employee(alicia). employee(jennifer).female(alicia). female(jennifer). salary(john,30000). salary(franklin,40000).project(productx). salary(alicia,25000).project(producty). salary(jennifer,43000).project(computerization). department(john,research).workson(john,productx,32). department(franklin,research).workson(john,producty,8). department(alicia,administration).workson(franklin,producty,10). department(john,administration).workson(alicia,computerization,10). workson(jennifer,computerization,15). supervise(franklin,john). supervise(jennifer,alicia).
9
Datalog superior(X,Y) :- supervise(X,Y). superior(X,Y) :- supervise(X,Y), superior(Z,Y). subordinate(X,Y) :- superior(Y,X). supervisor(X) :- employee(X), supervise(X,Y). over_40k_emp(X) :- employee(X), salary(X,Y), Y>=40000. under_40k_supervisor(X) :- supervisor(X), not(over_40k_emp(X)). main_productx_emp(X) :- employee(X), workson(X,productx,Y), Y>=20. president(X) :- employee(X), not(supervise(Y,X)).
10
Programas seguros Um programa ou uma regra sao ditos seguros se geram um número finito de factos. Exemplos: big_salary(Y) :- Y>60000. %insegura big_salary(Y) :- employee(X), salary(X,Y), Y>60000.%segura
11
Operadores da Álgebra Relacional rel_one(A,B,C). rel_two(D,E,F). rel_three(G,H,I,J). c (one) 5 (one) c AND B < 5 (one) c OR B < 5 (one) G,H (three)one + twoone two two - one one threeone C=G three
12
Execuçao de consultas nao recursivas Para consultas que envolvam apenas predicados definidos por factos, como: ?- department(X,research). existe uma conversao directa para uma expressao da álgebra relacional: $1 ( $2 “Research” (department)) Para consultas que envolvam predicados definidos por regras é necessário um algoritmo para determinar a expressao da álgebra relacional a ser executada pelo SGBD (seguindo um grafo de dependencias).
13
Algoritmo para consultas nao recursivas ?- p(arg1,...,argn). 1.Obter todas as regras S cuja cabeça envolva o predicado p. Se nao existem tais regras p é um predicado definido apenas por factos, correspondendo a alguma relaçao na BD Rp. Neste caso uma das seguintes expressoes é retornada e o algoritmo termina: 1.Se todos os argumentos sao variáveis distintas retornar Rp. 2.Se alguns argumentos sao constantes ou se a mesma variável aparece em mais do que um argumento, a expressao retornada é: SELECT (Rp), onde a condiçao de selecçao é a conjunçao de condiçoes simples ligadas por AND, e construída como segue: i. Se a constante c aparece no argumento i, incluir a condiçao ($i=c). ii. Se a mesma variável aparece nos argumentos j e k, incluir a condiçao ($j=$k). 2.Neste ponto existem regras, Si, com o predicado p na cabeça. Para cada regra gerar uma expressao relacional como segue: a)Aplicar o passo 1 nos predicados no corpo da regra. b)Criar uma junçao natural entre as relaçoes que correspondam aos predicados no corpo da regra, nas variáveis comuns. Seja o resultado desta junçao Rs c)Se existe algum predicado built-in X Y sobre os argumentos X e Y, o resultado da junçao é sujeito a mais uma selecçao: SELECT x y (Rs). 3.Tomar a REUNIAO das expressoes geradas em 2.
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.