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

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

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 –

Apresentações semelhantes


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

1 Cálculo Relacional Datalog não-recursivo AULAS 3 e 4 PGC Sistemas de Banco de Dados Profa. Sandra de Amo Pós-graduação em Ciência da Computação – UFU

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

3 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)

4 Algebra Cálculo Para toda consulta E da Algebra Relacional existe uma consulta Edo Cálculo Relacional equivalente.

5 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

6 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(x 1,...,x n ) ˄ x i = a onde x 1,...,x n correspondem aos atributos de F e x i 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 ¬

7 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) }

8 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 dependentes do domínio dos atributos, isto é, a resposta depende do domínio considerado.

9 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 ?

10 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.

11 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)

12 Árvore de F Conectivos lógicos distintos de ˄, ¬ Conectivo ˄ * Árvore de uma fórmula segura F Conectivo ˄ *(G1,...,Gk) = G1 ˄ G2 ˄... ˄ Gk (k 1) ¬

13 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)

14 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.

15 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.

16 Datalog Consulta Datalog = Programa Prolog especial Conjunto finito de regras do tipo: p(x) :- L 1 (x1),...,L n (xn) L i 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

17 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

18 Exemplo (1) irmao(x,y) :- pais(x,z), pais(y,z), x y (2) primo(x,y) :- pais(x,x), pais(y,y), irmao(x,y) (3) primo(x,y) :- pais(x,x), paix(y,y),primo(x,y) (4) parente(x,y) :- irmao(x,y) (5) parente(x,y) :- primo(x,y) (6) parente(x,y) :- parente(x,z), pais(y,z) (7) parente(x,y) :- parente(z,y), pais(x,z) Extensionais: pais Intensionais: irmao, primo, parente

19 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 p q

20 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

21 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

22 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

23 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 Π 1 q X {a}

24 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)

25 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).... p2(b1,...,bm)... Calcula-se a resposta de P

26 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 (1) primo(x,y) :- pais(x,x), pais(y,y), irmao(x,y) (2) primo(x,y) :- pais(x,x), paix(y,y),primo(x,y) (3) parente(x,y) :- irmao(x,y) (4) parente(x,y) :- primo(x,y) (5) parente(x,y) :- parente(x,z), pais(y,z) (6) parente(x,y) :- parente(z,y), pais(x,z) (7) pais(a,b). (8) pais(a,c). (9) pais(b,d). (10) pais(b,k). (11) pais(c,f).

27 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.

28 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

29 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)


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

Apresentações semelhantes


Anúncios Google