A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

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.

Apresentações semelhantes


Apresentação em tema: "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."— Transcrição da apresentação:

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.


Carregar ppt "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."

Apresentações semelhantes


Anúncios Google