Title: Equival
1Equivalê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
2Equivalência de Linguagens de Consultas
- Algebra Relacional
- Cálculo Relacional Seguro
- Datalog Não-recursivo
Ok !
3Datalog não-recursivo ? Algebra Relacional
4Datalog 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.
5Datalog 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),... -
6Datalog 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 sF Ei
-
- Ex q(x,y)- p1(x,y,a), p2(x,z), wz, x lt y
- variáveis do corpo x,y,z,w
- Q1(X,Y) ?XY sWa E1(X,Y,W)
- Q2(X,Z) E2(X,Z)
7Datalog 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 xa ou ax 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), wz,
x lt y - D(W) ?(Z ?W) ?Z E2(X,Z)
8Datalog 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), wz, x lt y
- Q(X,Y) ?XY sTa E1(X,Y,T) E2(X,Z)
-
-
D(W) ?(Z?W) (?Z E2(X,Z))
9Datalog não recursivo ? Algebra Relacional
- (Passo 4)
- Expressão final correspondente à regra E
sF 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), wz, x
lt y - E(X,Y) sXltY Q(X,Y)
onde - Q(X,Y) ?XY sWa E1(X,Y,W) E2(X,Z)
D(Z) ?Z E2(X,Z)
10Exemplo
- p(x,y,z) - q(x,a), r(x,y), z y, x gt y.
-
- Q1(X) ?X sWa Q(X,W)
- Q2(X,Y) R(X,Y)
- D(Z) ?(Y? Z) (?YR(X,Y))
- E(X,Y,Z) s X gt Y (Q1(X) R(X,Y) D(Z))
11Exercicio
- p(x,y) - q(a,x), r(x,z,w), s(y,z), w x, x gt y
- Construir a expressão E(X,Y) correspondente à
regra
12Datalog 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, vx, wy
- p(u,v,w)- r(y,x), u x, vy, w x
- p(u,v,w)- r(v,w), u a
- p(u,v,w)- r(v,u), w u
13Datalog 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 lt j - Tal ordem é possível uma vez que não existem
ciclos no grafo.
14Datalog 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 lt x
Ordem dos predicados t, r, q, p
r
p
q
t
15Datalog 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.
16Exemplo
- 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), xa
- (2) p(x,y)- s(x,z), r(z,y)
- (3) q(x,y)- p(x,b), xy
- (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
17Cálculo Seguro ? Datalog não-recursivo
18Primeira 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 k0
- 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 k1
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 é !
19Lembrando árvore de fórmula segura
20Exercí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)
21Prova (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,...,GkH1,...,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 k1 operadores lógicos.
22Prova (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
23Prova (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
24Exemplo
- 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), zw
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), zw, R(x,y)
Veja que este programa NÃO É RECURSIVO
25Poder 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