1 / 25

Equivalência : Algebra Relacional Cálculo Relacional Datalog não-recursivo

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 em Ciência da Computação – UFU 2012-2. Equivalência de Linguagens de Consultas. Algebra Relacional Cálculo Relacional Seguro

Download Presentation

Equivalência : Algebra Relacional Cálculo Relacional Datalog não-recursivo

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Equivalência : Algebra RelacionalCálculo RelacionalDatalog não-recursivo AULA 5 PGC 107 - 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 Exemploq(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) 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. Conectivos lógicos distintos de ˄ e ¬ Conectivo ˄* Árvore de F R1 ¬R2(x) Lembrando: árvore de fórmula segura

  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. ˅ R(x,y) ˄* P(y,z) z=w Q(z,x) R(x,y) 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 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

More Related