Banco de Dados Dedutivos Rodrigo Pereira Rodrigo Athaíde Marcos Antonio Banco de Dados Dedutivos 1. Introdução 2. Datalog 1. Predicados 2. Regras 3. Consultas 3. Interpretação das Regras 4. Datalog e sua Segurança Banco de Dados Dedutivos • Um sistema de banco de dados dedutivo é um sistema de banco de dados que pode fazer deduções (ou seja, concluir fatos adicionais) baseando-se em regras e fatos armazenados no banco de dados. • Um banco de dados dedutivo usa dois tipos principais de especificações: fatos e regras. – Fatos descrevem o mundo real – Regras são similares as visões relacionais • Podem ser recursivas. Datalog • Linguagem de consulta não procedural baseada na linguagem de programação lógica Prolog. • Baseada na lógica relacional. • Datalog fundamenta-se em cláusulas de Horn como linguagem de consulta a bases de dados relacionais. not (P1) OR not (P2) OR ... OR not (Pn) OR Q … P1 AND P2 AND ... AND Pn => Q Datalog • Predicado p(a1, a2, ..., an) tem número de argumentos fixo. – Argumentos têm interpretação posicional. – Predicado é ground se todos seus argumentos forem constantes. supervisiona(X,Y) ‘X supervisiona Y’ supervisiona(franklin,john). supervisiona(franklin,ramesh). supervisiona(franklin,joyce). – Tuplas da relação SUPERVISIONA(Supervisor, Subordinado) determina fatos que definem o predicado supervisiona. Datalog • Uma regra é da forma P Q – P é um predicado relacional chamado cabeça – Q é uma conjunção de predicados chamada corpo -------cabeça---- ------ corpo ------superior(X,Y) :- supervisiona(X,Y) EXPClimbers(N) :- Climbers(_,N,exp,_) (variável anônima) • Uma regra especifica que, se uma atribuição em particular às variáveis no corpo tornar todos os predicados verdadeiros, também tornará a cabeça verdadeira usando a mesma atribuição de valores constantes às variáveis. Datalog • Uma regra proporciona um modo de gerar novos fatos, que são instanciações da cabeça da regra. superior(X,Y) :- supervisiona(X,Y). Superior(X,Y) :- supervisiona(X,Z), superior(Z,Y). Subordinado(X,Y) :- superior(Y,X). -> regra recursiva supervisiona(james,franklin). superior(franklin,john). Superior(james,john). SUPERVISIONA (Supervisor, Subordinado) – A aplicação da regra Superior(X,Y) irá gerar novos fatos incluindo os subordinados indiretos em todos os níveis. Predicados Intensionais X Extencionais • Predicados extensionais são aqueles cujas relações estão guardadas na bd • Predicados intencionais são aqueles que são calculados aplicando uma ou mais regras. Predicados Intensionais X Extencionais Student (123,j.smith,compsci) Student(456,k.tappet,french) Offers(cookery,baking) Offers(compsci,compilers) Enroll(123,baking) Enroll(012,compilers) InterestedIn(X,S) ¬Student(X,Y,S) InterestedIn(X,S) ¬ Enroll(X,Z) AND Offers(S,Z) Datalog • Uma consulta em Datalog envolve um símbolo de predicado, com alguns argumentos variáveis, e seu significado é deduzir todas as possíveis combinações constantes que, quando carregadas nas variáveis, possam fazer o predicado verdadeiro. Consultas: superior(james, Y) SUPERVISIONA(Supervisor, Subordinado) todos os subordinados superior(james,joyce) true Interpretação de Regras • Duas formas de análise: – Prova-teórica • Certifica-se se certo fato se comprova • Regras são axiomas dedutivos • Fatos são axiomas fundamentais – Modelo-teórico • A partir de fatos conhecidos como verdadeiros ou falsos, gera novos fatos Interpretação de Regras • Prova-teórica 1. superior(X,Y):- supervisiona(X.Y). (regra 1) 2. superior(X,Y):- supervisiona(X.Z), superior(Z,Y). (regra 2) 3. supervisiona(jennifer,ahmad). (axioma fundamenta, dado) 4. supervisiona(james,jennifer). (axioma fundamenta, dado) 5. superior(jennifer,ahmad). (aplicar a regra 1 em 3) 6. superior(james,ahmad). (aplicar a regra 2 em 4 e 5) Interpretação de Regras • Modelo-teórico Regras superior(X.Y) : - supervisiona(X,Y). superior(X.Y) : - supervisiona(X,Z), superior(Z.Y). Fato conhecido: supervisiona(franklin,john) é verdadeiro. Fato derivado: superior(franklin,john) é verdadeiro. Segurança Condições para regras seguras: -Cada variável que aparece no cabeçalho da regra também aparece em uma literal positiva não aritmética, no corpo da regra - Cada variável aparecendo em uma literal negativa no corpo da regra também aparece em alguma literal positiva no corpo da regra Segurança • Algumas regras inseguras: Likes(X,Y) :- Starved(X) Lazy(X) :- NOT Climbers(_,X,_,_) • Algumas regras seguras: Likes(X,Y) :- Starved(X) AND Food(Y) Lazy(X) :- Person(X) AND NOT Climbers(_,X,_,_) Segurança Mais exemplos: As regras abaixo são seguras? NOT superior(X.Y) : - NOT supervisiona(X,Z), superior(Z.Y) supervisor(X,Z) :- empregado(X), supervisiona(X,Y) Obrigado.