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

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

Equivalência : Algebra Relacional Cálculo Relacional Datalog não-recursivo AULA 5 PGC 107 - Sistemas de Banco de Dados Profa. Sandra de Amo Pós-graduação.

Apresentações semelhantes


Apresentação em tema: "Equivalência : Algebra Relacional Cálculo Relacional Datalog não-recursivo AULA 5 PGC 107 - Sistemas de Banco de Dados Profa. Sandra de Amo Pós-graduação."— Transcrição da apresentação:

1 Equivalência : Algebra Relacional Cálculo Relacional Datalog não-recursivo AULA 5 PGC Sistemas de Banco de Dados Profa. Sandra de Amo Pós-graduação em Ciência da Computação – UFU

2 Equivalência de Linguagens de Consultas Algebra Relacional Cálculo Relacional Seguro Datalog Não-recursivo Ok !

3 Datalog não-recursivo Algebra Relacional

4 Datalog não recursivo Algebra Relacional Para toda consulta Datalog (não-recursivo) q existe uma consulta da Algebra Relacional equivalente. Assim, toda consulta Datalog não-recursiva pode ser calculada através dos operadores da Algebra relacional.

5 Datalog não recursivo Algebra Relacional Vamos definir uma expressão E(X1,...,Xn) correspondente a cada regra p(x1,....,xn) : - p1(A 11,...,A 1k1 ), p2(A 21,...,A 2k2 ),...

6 Datalog não recursivo Algebra Relacional Consideremos o corpo da regra p1(A 11,...,A 1k1 ), p2(A 21,...,A 2k2 ),... Sejam x1,...., xn todas as variáveis aparecendo no corpo da regra (Passo 1) p1(A 11,...,A 1k1 ) Ei(Y 11,...,Y 1k1 ) Q = Π X σ F Ei Ex : q(x,y):- p1(x,y,a), p2(x,z), w=z, x < y variáveis do corpo = {x,y,z,w} Q1(X,Y) = Π XY σ W=a E1(X,Y,W) Q2(X,Z) = E2(X,Z)

7 Datalog não recursivo Algebra Relacional (Passo 2) Para cada variável x não aparecendo em predicados ext. ou int. do corpo da regra, constrói-se uma expressão D x aparece em x=a ou a=x constrói D(X) = {a} x aparece em x = z e z aparece em um predicado pi D(X) = ρ(Z X) Π Z Ei onde Z é o atributo correspondente a z em pi Exemplo q(x,y):- p1(x,y,a), p2(x,z), w=z, x < y D(W) = ρ(Z W) Π Z E2(X,Z)

8 Datalog não recursivo Algebra Relacional (Passo 3) Q = junção dos Q1,...,Qn com os D Exemplo: q(x,y):- p1(x,y,a), p2(x,z), w=z, x < y Q(X,Y) = Π XY σ T=a E1(X,Y,T) E2(X,Z) D(W) = ρ(Z W) (Π Z E2(X,Z))

9 Datalog não recursivo Algebra Relacional (Passo 4) Expressão final correspondente à regra E = σ F Q F corresponde às condições X op Y aparecendo no corpo da regra X, Y são variáveis aparecendo na cabeça da regra Exemplo q(x,y):- p1(x,y,a), p2(x,z), w=z, x < y E(X,Y) = σ X

10 Exemplo p(x,y,z) :- q(x,a), r(x,y), z = y, x > y. Q1(X) = Π X σ W=a Q(X,W) Q2(X,Y) = R(X,Y) D(Z) = ρ (Y Z) (Π Y R(X,Y)) E(X,Y,Z) = σ X > Y (Q1(X) R(X,Y) D(Z))

11 Exercicio p(x,y) :- q(a,x), r(x,z,w), s(y,z), w = x, x > y Construir a expressão E(X,Y) correspondente à regra

12 Datalog não recursivo Algebra Relacional Retificando as regras para um mesmo predicado p, de modo que as cabeças das regras sejam iguais p(a,x,y) :- r(x,y) p(x,y,x) :- r(y,x) p(u,v,w):- r(x,y), u = a, v=x, w=y p(u,v,w):- r(y,x), u = x, v=y, w =x p(u,v,w):- r(v,w), u = a p(u,v,w):- r(v,u), w =u

13 Datalog não recursivo Algebra Relacional Como obter a expressão da A. R. correspondente a uma consulta Datalog não –recursiva Retifica-se as regras do programa Constrói-se o grafo de dependência Ordena-se os predicados p1,...,pn de tal modo que se existe aresta de pi para pj, então i < j Tal ordem é possível uma vez que não existem ciclos no grafo.

14 Datalog não recursivo Algebra Relacional Exemplo: p(x,y) :- q(x,y), r(x,y) q(x,y) :- t(x,z) r(x,y) :- t(x,z), z < x r q t p Ordem dos predicados t, r, q, p

15 Datalog não-recursivo Algebra Relacional Seguindo-se a ordem dos predicados: Para cada predicado constrói-se expressão da A.R correspondente onde só aparecem relações do banco de dados (extensionais) Para predicados intensionais definidos por várias regras, considera-se a união das expressões fornecidas por cada regra, projetadas sobre as variáveis aparecendo no predicado.

16 Exemplo p(a,y):- r(x,y) p(x,y):- s(x,z), r(z,y) q(x,x):- p(x,b) q(x,y):- p(x,z), s(z,y) Regras retificadas (1) p(x,y) :- r(z,y), x=a (2) p(x,y):- s(x,z), r(z,y) (3) q(x,y):- p(x,b), x=y (4) q(x,y):- p(x,z), s(z,y) Ordem : s, r, p, q s e r são predicados extensionais do banco de dados q corresponde à resposta (1) R(Z,Y) {a}(X) (2) S(X,Z) R(Z,Y) Expressão para o predicado p P(X,Y) = Π XY (R(Z,Y) {a}(X) ) U Π XY (S(Z,Y) R(Z,Y)) Exercicio: Calcular expressão Q(X.Y) correspondente ao predicado resposta Q

17 Cálculo Seguro Datalog não-recursivo

18 Primeira idéia (errada) da prova: Vamos mostrar que se F é fórmula segura então existe uma consulta Datalog (P,p F ) equivalente a F. Prova: por indução no número k de operadores lógicos de F Base da indução: k=0 Neste caso, como F é segura, F deve ser uma fórmula atômica R(x1,...,xn) Logo: P tem somente uma regra pF(x1,...,xn) :- R(x1,...,xn) Hipótese de indução: suponhamos que o resultado é verdadeiro para toda fórmula segura com k operadores. Seja F uma fórmula segura com k+1 operadores Problema: Não podemos afirmar que as subfórmulas de F são seguras e aplicar a hipótese de indução !! Exemplo: x = y ˄ r(x,y) é segura mas x = y não é !

19 Lembrando: árvore de fórmula segura Árvore de F Conectivos lógicos distintos de ˄ e ¬ Conectivo ˄ * R1 ¬R2(x)

20 Exercício Considere a seguinte definição (por indução) de um conjunto F de fórmulas. O objetivo é mostrar que o conjunto F é exatamente igual ao conjunto de fórmulas seguras, isto é, toda fórmula de F é segura e vice-versa, toda fórmula segura está em F. Fórmulas básicas de F : ˄ * (G1,...,Gk | H1,...,Hm), onde Gi são atômicas positivas do tipo R(x1,...,xn), ou x = a, ou a = x, x = y, onde y é limitada e Hi são atômicas negativas do tipo R(x1,...,xn) Se G(x,x1,...,xn) está em F então x G(x,x1,...,xn) está em F Se G1(x1,...,xn) e G2(x1,...,xn) estão em F então F(x1,...,xn) = G1(x1,...,xn) ˅ G2(x1,...,xn) também está em F Se G1,...,Gk, H1,...,Hm estão em F então ˄ * (G1,...,Gk,A1,...,An | H1,...,Hm) também está em F - onde Ai são fórmulas aritméticas do tipo x = a, a = x, x = y (x ou y limitadas)

21 Prova (desta vez correta !) se F é fórmula segura então existe uma consulta Datalog (P,p F ) equivalente a F. Prova: por indução no número k de operadores lógicos de F ( ˄ * é considerado ao invés do ˄ e a negação não é considerada já que só pode aparecer dentro de um ˄ *) Base da indução: F = ˄ * (G1,...,Gk|H1,...,Hm), onde os Gi e os Hi são atômicas pF :- G1,..., Gk, ¬H1, …, ¬Hm Hipótese de indução: Suponha que o resultado é válido para qualquer fórmula segura com k operadores lógicos ( ˄ * considerado ao invés de ˄ ). Seja F uma fórmula com k+1 operadores lógicos.

22 Prova (continuação) F = x G(x,x1,...,xn) pF(x1,...,xn) :- pG(x,x1,...,xn) + regras que definem o pG F = G1(x1,...,xn) ˅ G2(x1,...,xn) pF(x1,...,xn) :- pG1(x1,...,xn) pF(x1,...,xn) :- pG2(x1,...,xn) + regras para o pG1 e o pG2

23 Prova (continuação) F = ˄ * (G1,...,Gk,A1,...An| H1,...,Hm) pF :- pG1,...,pGk, A1,..., An, ¬pH1, …, ¬pHm + regras que definem pG1, … + regras que definem pGk, … + regras que definem pH1, … + regras que definem pHm

24 Exemplo Considere a fórmula segura : F(x,y) = R(x,y) ˅ z w (Q(z,x) ˄ ¬ R(x,y) ˄ P(y,z) ˄ z = w) = R(x,y) ˅ z w ( ˄ * (Q(z,x), P(y,z), z=w| R(x,y)) ˅ ˄*˄* R(x,y) Q(z,x) P(y,z)z=w R(x,y) Consulta Datalog correspondente : (P,q) onde P é o seguinte programa q(x,y) :- R(x,y) q(x,y) :- q1(x,y,z,w) q1(x,y,z,w):- Q(z,x), P(y,z), z=w, ¬ R(x,y) Veja que este programa NÃO É RECURSIVO

25 Poder de Expressão de SQL (anterior a 1999) As 3 linguagens de consulta Algebra Relacional Cálculo Relacional seguro Datalog não recursivo são equivalentes, têm o mesmo poder de expressão SQL (versão anterior a 1999): basicamente Algebra Relacional Datalog não-recursivo


Carregar ppt "Equivalência : Algebra Relacional Cálculo Relacional Datalog não-recursivo AULA 5 PGC 107 - Sistemas de Banco de Dados Profa. Sandra de Amo Pós-graduação."

Apresentações semelhantes


Anúncios Google