290 likes | 396 Views
Cálculo Relacional Datalog não-recursivo. AULAS 3 e 4 PGC 107 - Sistemas de Banco de Dados Profa. Sandra de Amo Pós-graduação em Ciência da Computação – UFU 2012-2. Cálculo Relacional de Domínio. Expressão do tipo {(x1,...,xn) | F(x1,…,xn)} onde F é fórmula da Lógica de 1a ordem
E N D
Cálculo RelacionalDatalog não-recursivo AULAS 3 e 4 PGC 107 - Sistemas de Banco de Dados Profa. Sandra de Amo Pós-graduação em Ciência da Computação – UFU 2012-2
Cálculo Relacional de Domínio • Expressão do tipo {(x1,...,xn) | F(x1,…,xn)} onde F é fórmula da Lógica de 1a ordem x1,...,xn são variáveis livres de F Observação: R(x1,...,xn) é o mesmo que a expressão “ (x1,...,xn) ɛ R ”
Exemplo • Seja R = { R(A,B), S(A,C)} F(x,y) = R(a,x) ˄ S(a,y) q= { (x) | R(a,x) ˄ S(a,x) } Resposta de q = ΠBσA=a (R S)
Algebra Cálculo • Para toda consulta E da Algebra Relacional existe uma consulta E’do Cálculo Relacional equivalente.
Prova Por indução na construção da expressão algébrica Base da indução: E = R onde R(A1,...An) ɛ R E’ = R(x1,...,xn) Hipótese de Indução: suponha que para as expressões F e G da AR existem fórmulas do CR correspondentes. 1) E = F x G E’ = F ˄ G 2) E = F U G E’ = F ˅ G 3) E = F – G E’ = F ˄¬ G
Prova (continuação) 4) E = ΠX F onde X = {A1,...,An} atributos aparecendo em F E’ = x1... xn F’(y1,...,yk) onde x1,...,xn correspondem aos atributos de X y1,....,yk correspondem aos atributos de F que não estão em X 5) E = σA=a F E’ = F(x1,...,xn) ˄ xi = a onde x1,...,xn correspondem aos atributos de F e xi corresponde ao atributo A Repare que não aparecem quantificadores universais, nem negação fora de uma conjunção – Fórmulas correspondentes à AR são “especiais” quanto ao V e ¬
Exemplo E = R(A,B) S(A,B) E’(y,z) = x (R(x,y) ˄ S(x,z)) Consulta do Cálculo relacional { (y,z) | E’(y,z) }
Expressões do C.R. independentes do domínio Resposta de uma consulta deve ser uma relação finita. Todos os cálculos intermediários devem envolver conjuntos finitos Problemas com as consultas: { (x) | ¬ R(x)} { (x,y) | R(x) ˅ S(y) } { (x) | y R(x,y) } Todas estas consultas são dependentesdo domínio dos atributos, isto é, a resposta depende do domínio considerado.
Independência do Domínio • Uma consulta é independente do domínio se e somente se sua resposta só depende do conteúdo do banco de dados, e não do domínio dos atributos. • Independência do Domínio = noção semântica • Problema Indecidível = dada uma consulta q, q é independente do domínio ?
Fórmulas Seguras O que se deseja: • Expressões seguras devem ser Ind.Dom. • É possível decidir, só analisando a forma sintática da expressão, se ela é ou não segura. • Todas as fórmulas correspondentes a expressões da A.R. são seguras.
Fórmulas Seguras (noção sintática) • Não possuem o quantificador universal – não há perda de expressividade, pois F = ¬ ¬ F • F(x1... xn ) ˅ G(x1... xn) variáveis livres de F = variáveis livres de G • F = G1 ˄ G2 ˄ .... ˄ Gn conjunção maximal (não há mais ˄ “acima”) Então todas as variáveis livres de F devem ser limitadas • x é limitada se aparece em algum Gi onde Gi não é uma expressão aritmética nem é precedida por uma negação. • x é limitada se aparece numa fórmula do tipo x = a ou a = x, onde a é constante. • x é limitada se aparece numa fórmula x = y ou y = x, onde y é limitada. • Uma negação só pode aparecer numa conjunção F = G1 ˄ G2 ˄ .... ˄ ¬ H ˄ ... ˄ Gn, onde um dos Gi são positivos (não negados)
Árvore de uma fórmula segura F Conectivo ˄*(G1,...,Gk) = G1 ˄ G2 ˄ ... ˄ Gk (k ≥ 1) Conectivos lógicos distintos de ˄, ¬ Conectivo ˄* Árvore de F ¬
Exemplo • R(x,y,z) ˄ ¬ ( P(x,y) ˅ Q(y,z) ) não é segura. • Porém é independente do domínio • R(x,y,z) ˄ ¬ ( P(x,y) ˅ Q(y,z) ) é equivalente a uma fórmula segura R(x,y,z) ˄ ¬ P(x,y) ˄ ¬ Q(y,z)
Discussão • Toda variável livre de uma fórmula segura é limitada • Segura implica Independente do dominio • Independente do domínio não implica segura • Uma fórmula pode ser independente do domínio e não ser segura.
Exercícios 1) Mostrar que as fórmulas do Cálculo Relacional correspondentes a expressões da Algebra Relacional são fórmulas seguras. Logo : Algebra Cálculo Seguro 2) Mostrar que toda fórmula do cálculo relacional seguro é independente do dominio. 3) Mostrar que toda variável livre aparecendo em uma fórmula segura é limitada.
Datalog Consulta Datalog = Programa Prolog especial Conjunto finito de regras do tipo: p(x) :- L1(x1), ...,Ln(xn) • Li são literais do tipo q(x) ou ¬ q(x) • não aparecem símbolos funcionais nas regras Prolog = linguagem de programação - executa cálculos com os dados. Datalog = linguagem de consulta – manipula dados
Predicados extensionais, intensionais e built-in Predicados extensionais • aparecem no esquema do banco de dados. • São os dados (fatos) disponíveis no banco de dados. • Só aparecem no corpo das regras • Predicados intensionais • aparecem no corpo e cabeça das regras • Built-in : >, <, =, ≠≤ , ≥, etc
Exemplo • irmao(x,y) :- pais(x,z), pais(y,z), x ≠ y • primo(x,y) :- pais(x,x’), pais(y,y’), irmao(x’,y’) • primo(x,y) :- pais(x,x’), paix(y,y’),primo(x’,y’) • parente(x,y) :- irmao(x,y) • parente(x,y) :- primo(x,y) • parente(x,y) :- parente(x,z), pais(y,z) • parente(x,y) :- parente(z,y), pais(x,z) Extensionais: pais Intensionais: irmao, primo, parente
q p Grafo de Dependência e Recursão Grafo de Dependência associado a uma consulta Datalog = G(V,E) • V=predicados extensionais e intencionais • E =(p,q) se p aparece no corpo de uma regra e q aparece na cabeça desta regra. q(x):- ...., p(y), .... Predicados recursivos: que aparecem em algum ciclo Programa recursivo: grafo de dependência contém ao menos um predicado recursivo
Exemplo parente primo irmão pais Predicados recursivos: primo, parente Predicados não-recursivos: pais, irmão Predicados extensionais são sempre não- recursivos
Regras Seguras • maior-que(x,y) :- x > y define uma relação infinita maior-que • ama(x,y) :- ator-de-novela(y) define uma relação infinita ama (todo mundo ama algum ator-de-novela) • Impor que as regras sejam seguras vai impedir a geração de respostas infinitas
Regras Seguras • Variáveis limitadas • aparecem no corpo das regras em predicados intensionais ou extensionais • aparecem em predicados built-in x=a, a=x, onde a é constante. • se X = Y ou Y = X aparece no corpo de uma regra e Y é limitada então X também é limitada. • Definição : Uma regra é segura se todas as suas variáveis são limitadas
Exemplo • Maior-que(x,y) :- x > y não é segura • p(x,y) :- q(x,z), w = a, y = w w, y são limitadas, x, z são limitadas Logo a regra é segura Esta consulta corresponde à expressão da AR Π1q X {a}
Consulta Datalog sobre um banco de dados • R = {p1,...,pn} esquema de BD Uma consulta Datalog sobre R é um par (P, q) onde • P é programa Datalog seguro, • Todos os predicados extensionais estão em {p1,...,pn} • q é um predicado intensional que aparece em P (é o predicado correspondente à resposta da consulta)
Como é calculada a resposta a uma consulta Datalog • R = {p1,...,pn} esquema de BD • I = instância de banco de dados sobre R • P uma consulta Datalog sobre R • Construimos o programa P’ P’ = P unido com as regras básicas (fatos): p1(a1,...,ak). p1(a1,...,ak). ... p2(b1,...,bm) ... • Calcula-se a resposta de P’
Exemplo R = {pais(Nome1,Nome2)} I(pais) = {(a,b), (a,c), (b,d), (b,k), (c,f)} • irmao(x,y) :- pais(x,z), pais(y,z), x ≠ y • primo(x,y) :- pais(x,x’), pais(y,y’), irmao(x’,y’) • primo(x,y) :- pais(x,x’), paix(y,y’),primo(x’,y’) • parente(x,y) :- irmao(x,y) • parente(x,y) :- primo(x,y) • parente(x,y) :- parente(x,z), pais(y,z) • parente(x,y) :- parente(z,y), pais(x,z) • pais(a,b). • pais(a,c). • pais(b,d). • pais(b,k). • pais(c,f).
Método 1 – Modelo Minimal R = {r(A)} Instância = {r(1)} p(x) :- q(x) q(x) :- r(x) r(1). p : predicado resposta • Modelo do programa : conjunto de fatos que tornam as regras verdadeiras. Ex: {r(1), q(1), p(1), q(2), p(2)} é um modelo • Modelo minimal = intersecção de todos os modelos Ex: {r(1), q(1), p(1)} Resposta à consulta = Modelo minimal do programa p(1) Só funciona se o programa não contém negações.
Como calcular o Modelo Minimal T0 = fatos do BD T1 = T0 U {A | A :- p1, …, pn e p1, …, pn ɛ T0} T2 = T1 U {A | A :- p1, …, pn e p1, …, pn ɛ T1} …. Até atingir um Tn tal que Tn = Tn-1 (não há mais mudanças) p(x) :- q(x) q(x) :- r(x) r(1). T0 = {r(1)} T1 = {r(1),q(1)} T2 = {r(1),q(1),p(1)} T3 = T2
Método 2: Resolução :- p(x) p(x) :- q(x) q(x) :- r(x) r(1). :- q(x) :- r(x) x = 1 □ Resposta = p(1)