equivalência : algebra relacional cálculo relacional datalog não-recursivo

25
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

Upload: riley-dunlap

Post on 30-Dec-2015

59 views

Category:

Documents


0 download

DESCRIPTION

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 - PowerPoint PPT Presentation

TRANSCRIPT

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

Equivalência : Algebra RelacionalCá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

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

Equivalência de Linguagens de Consultas

Algebra Relacional

Cálculo Relacional Seguro

Datalog Não-recursivo

Ok !

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

Datalog não-recursivo Algebra Relacional

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

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.

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

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),...

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

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)

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

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)

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

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) = ρ(ZW) (ΠZ E2(X,Z))

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

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)

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

Exemplop(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))

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

Exerciciop(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

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

Datalog não recursivo Algebra RelacionalRetificando 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=yp(u,v,w):- r(y,x), u = x, v=y, w =x

p(u,v,w):- r(v,w), u = ap(u,v,w):- r(v,u), w =u

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

Datalog não recursivo Algebra RelacionalComo 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.

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

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

qt

p

Ordem dos predicados

t, r, q, p

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

Datalog não-recursivo Algebra RelacionalSeguindo-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.

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

Exemplop(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, qs e r são predicados extensionais dobanco 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

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

Cálculo Seguro Datalog não-recursivo

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

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 FBase 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 é !

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

Lembrando: árvore de fórmula segura

Árvore de F

Conectivos lógicos distintos de ˄ e ¬

Conectivo ˄*

R1 ¬R2(x)

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

ExercícioConsidere 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 tipoR(x1,...,xn), ou x = a, ou a = x, x = y, onde y é limitadae 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)

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

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.

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

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

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

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

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

ExemploConsidere 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 seguinteprograma

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

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

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