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

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

AULA 5 PGC Sistemas de Banco de Dados Profa. Sandra de Amo

Apresentações semelhantes


Apresentação em tema: "AULA 5 PGC Sistemas de Banco de Dados Profa. Sandra de Amo"— 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 2012-2

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(A11,...,A1k1), p2(A21,...,A2k2),...

6 Datalog não recursivo  Algebra Relacional
Consideremos o corpo da regra p1(A11,...,A1k1), p2(A21,...,A2k2),... Sejam x1, ...., xn todas as variáveis aparecendo no corpo da regra (Passo 1) p1(A11,...,A1k1)  Ei(Y11,...,Y1k1) 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<Y Q(X,Y) onde Q(X,Y) = ΠXY σW=a E1(X,Y,W) E2(X,Z) D(Z) = ΠZ E2(X,Z)

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) (ΠYR(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 Ordem dos predicados t, r, q, p r p q t

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) (1) R(Z,Y) {a}(X)
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,pF) 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
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,pF) 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)) Consulta Datalog correspondente : (P,q) onde P é o seguinte programa ˅ ˄* R(x,y) Q(z,x) P(y,z) z=w 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 Datalog não-recursivo


Carregar ppt "AULA 5 PGC Sistemas de Banco de Dados Profa. Sandra de Amo"

Apresentações semelhantes


Anúncios Google