Cálculo Relacional
Datalog não-recursivo
AULAS 3 e 4
PGC 107 - Sistemas de Banco de Dados
Profa. Sandra de Amo
Pós-graduação em Ciência da Computação – UFU
2012-2
Cálculo Relacional de Domínio

Expressão do tipo
{(x1,...,xn) | F(x1,…,xn)}
onde F é fórmula da Lógica de 1a ordem
x1,...,xn são variáveis livres de F
Observação:
R(x1,...,xn) é o mesmo que a expressão “ (x1,...,xn) ɛ R ”
Exemplo

Seja R = { R(A,B), S(A,C)}
F(x,y) = R(a,x) ˄ S(a,y)
q= { (x) | R(a,x) ˄ S(a,x) }
Resposta de q = ΠBσA=a ( R
S)
Algebra  Cálculo

Para toda consulta E da Algebra Relacional
existe uma consulta E’do Cálculo Relacional
equivalente.
Prova
Por indução na construção da expressão algébrica
Base da indução: E = R onde R(A1,...An) ɛ R
E’ = R(x1,...,xn)
Hipótese de Indução: suponha que para as expressões F e G da AR
existem fórmulas do CR correspondentes.
1) E = F x G
E’ = F ˄ G
2) E = F U G
E’ = F ˅ G
3) E = F – G
E’ = F ˄ ¬ G
Prova (continuação)
4) E = ΠX F onde X = {A1,...,An} atributos aparecendo em F
E’ = x1... xn F’(y1,...,yk) onde
x1,...,xn correspondem aos atributos de X
y1,....,yk correspondem aos atributos de F que não estão
em X
5) E = σA=a F
E’ = F(x1,...,xn) ˄ xi = a
onde x1,...,xn correspondem aos atributos de F e xi corresponde ao atributo A
Repare que não aparecem quantificadores universais, nem negação fora de uma
conjunção – Fórmulas correspondentes à AR são “especiais” quanto ao V e ¬
Exemplo
E = R(A,B)
S(A,B)
E’(y,z) = x (R(x,y) ˄ S(x,z))
Consulta do Cálculo relacional
{ (y,z) | E’(y,z) }
Expressões do C.R.
independentes do domínio
Resposta de uma consulta deve ser uma relação finita.
Todos os cálculos intermediários devem envolver conjuntos
finitos
Problemas com as consultas:
{ (x) | ¬ R(x)}
{ (x,y) | R(x) ˅ S(y) }
{ (x) | y R(x,y) }
Todas estas consultas são dependentes do domínio dos atributos,
isto é, a resposta depende do domínio considerado.
Independência do Domínio

Uma consulta é independente do domínio se e
somente se sua resposta só depende do conteúdo do
banco de dados, e não do domínio dos atributos.

Independência do Domínio = noção semântica

Problema Indecidível = dada uma consulta q, q é
independente do domínio ?
Fórmulas Seguras
O que se deseja:



Expressões seguras devem ser Ind.Dom.
É possível decidir, só analisando a forma
sintática da expressão, se ela é ou não segura.
Todas as fórmulas correspondentes a
expressões da A.R. são seguras.
Fórmulas Seguras (noção sintática)



Não possuem o quantificador universal – não há perda de
expressividade, pois F = ¬ ¬ F
F(x1... xn ) ˅ G(x1... xn)
variáveis livres de F = variáveis livres de G
F = G1 ˄ G2 ˄ .... ˄ Gn conjunção maximal (não há mais ˄ “acima”)
Então todas as variáveis livres de F devem ser limitadas




x é limitada se aparece em algum Gi onde Gi não é uma expressão
aritmética nem é precedida por uma negação.
x é limitada se aparece numa fórmula do tipo x = a ou a = x, onde a é
constante.
x é limitada se aparece numa fórmula x = y ou y = x, onde y é limitada.
Uma negação só pode aparecer numa conjunção
F = G1 ˄ G2 ˄ .... ˄ ¬ H ˄ ... ˄ Gn, onde um dos Gi são positivos
(não negados)
Árvore de uma fórmula segura F
Conectivo ˄*(G1,...,Gk) = G1 ˄ G2 ˄ ... ˄ Gk (k ≥ 1)
Conectivos lógicos
distintos de ˄, ¬
Conectivo ˄*
Árvore de F
¬
Exemplo

R(x,y,z) ˄ ¬ ( P(x,y) ˅ Q(y,z) ) não é segura.

Porém é independente do domínio

R(x,y,z) ˄ ¬ ( P(x,y) ˅ Q(y,z) ) é equivalente a uma
fórmula segura
R(x,y,z) ˄ ¬ P(x,y) ˄ ¬ Q(y,z)
Discussão




Toda variável livre de uma fórmula segura é
limitada
Segura implica Independente do dominio
Independente do domínio não implica segura
Uma fórmula pode ser independente do
domínio e não ser segura.
Exercícios
1) Mostrar que as fórmulas do Cálculo Relacional
correspondentes a expressões da Algebra Relacional são
fórmulas seguras.
Logo : Algebra  Cálculo Seguro
2) Mostrar que toda fórmula do cálculo relacional seguro é
independente do dominio.
3) Mostrar que toda variável livre aparecendo em uma fórmula
segura é limitada.
Datalog
Consulta Datalog = Programa Prolog especial
Conjunto finito de regras do tipo:
p(x) :

L1(x1), ...,Ln(xn)
Li são literais do tipo q(x) ou ¬ q(x)
não aparecem símbolos funcionais nas regras
Prolog = linguagem de programação - executa cálculos com os
dados.
Datalog = linguagem de consulta – manipula dados
Predicados extensionais, intensionais e
built-in
Predicados extensionais




Predicados intensionais


aparecem no esquema do banco de dados.
São os dados (fatos) disponíveis no banco de
dados.
Só aparecem no corpo das regras
aparecem no corpo e cabeça das regras
Built-in : >, <, =, ≠≤ , ≥, etc
Exemplo
(1)
(2)
(3)
(4)
(5)
(6)
(7)
irmao(x,y) :- pais(x,z), pais(y,z), x ≠ y
primo(x,y) :- pais(x,x’), pais(y,y’), irmao(x’,y’)
primo(x,y) :- pais(x,x’), paix(y,y’),primo(x’,y’)
parente(x,y) :- irmao(x,y)
parente(x,y) :- primo(x,y)
parente(x,y) :- parente(x,z), pais(y,z)
parente(x,y) :- parente(z,y), pais(x,z)
Extensionais: pais
Intensionais: irmao, primo, parente
Grafo de Dependência e Recursão
Grafo de Dependência associado a uma consulta Datalog =
G(V,E)
 V=predicados extensionais e intencionais
 E =(p,q) se p aparece no corpo de uma regra e q aparece
na cabeça desta regra.
q
q(x):- ...., p(y), ....
p
Predicados recursivos: que aparecem em algum ciclo
Programa recursivo: grafo de dependência contém ao menos um
predicado recursivo
Exemplo
parente
primo
irmão
pais
Predicados recursivos: primo, parente
Predicados não-recursivos: pais, irmão
Predicados extensionais são sempre não- recursivos
Regras Seguras



maior-que(x,y) :- x > y
define uma relação infinita maior-que
ama(x,y) :- ator-de-novela(y)
define uma relação infinita ama (todo mundo ama algum
ator-de-novela)
Impor que as regras sejam seguras vai impedir a geração de
respostas infinitas
Regras Seguras

Variáveis limitadas




aparecem no corpo das regras em predicados
intensionais ou extensionais
aparecem em predicados built-in x=a, a=x, onde a
é constante.
se X = Y ou Y = X aparece no corpo de uma regra
e Y é limitada então X também é limitada.
Definição : Uma regra é segura se todas as
suas variáveis são limitadas
Exemplo
Maior-que(x,y) :- x > y
não é segura
 p(x,y) :- q(x,z), w = a, y = w
w, y são limitadas, x, z são limitadas
Logo a regra é segura
Esta consulta corresponde à expressão da AR
Π1q X {a}

Consulta Datalog sobre um banco de
dados
R = {p1,...,pn} esquema de BD
Uma consulta Datalog sobre R é um par (P, q) onde
 P é programa Datalog seguro,
 Todos os predicados extensionais estão em
{p1,...,pn}
 q é um predicado intensional que aparece em P (é o
predicado correspondente à resposta da consulta)

Como é calculada a resposta a uma
consulta Datalog





R = {p1,...,pn} esquema de BD
I = instância de banco de dados sobre R
P uma consulta Datalog sobre R
Construimos o programa P’
P’ = P unido com as regras básicas (fatos):
p1(a1,...,ak).
p1(a1,...,ak).
...
p2(b1,...,bm)
...
Calcula-se a resposta de P’
Exemplo
R = {pais(Nome1,Nome2)}
I(pais) = {(a,b), (a,c), (b,d), (b,k), (c,f)}

(1)
(2)
(3)
(4)
(5)
(6)
(7)
(8)
(9)
(10)
(11)
irmao(x,y) :- pais(x,z), pais(y,z), x ≠ y
primo(x,y) :- pais(x,x’), pais(y,y’), irmao(x’,y’)
primo(x,y) :- pais(x,x’), paix(y,y’),primo(x’,y’)
parente(x,y) :- irmao(x,y)
parente(x,y) :- primo(x,y)
parente(x,y) :- parente(x,z), pais(y,z)
parente(x,y) :- parente(z,y), pais(x,z)
pais(a,b).
pais(a,c).
pais(b,d).
pais(b,k).
pais(c,f).
Método 1 – Modelo Minimal
R = {r(A)} Instância = {r(1)}
p(x) :- q(x)
q(x) :- r(x)
r(1).
p : predicado resposta


Modelo do programa : conjunto de fatos que tornam as regras
verdadeiras.
Ex: {r(1), q(1), p(1), q(2), p(2)} é um modelo
Modelo minimal = intersecção de todos os modelos
Ex: {r(1), q(1), p(1)}
Resposta à consulta = Modelo minimal do programa
p(1)
Só funciona se o programa não contém negações.
Como calcular o Modelo Minimal
T0 = fatos do BD
T1 = T0 U {A | A :- p1, …, pn e p1, …, pn ɛ T0}
T2 = T1 U {A | A :- p1, …, pn e p1, …, pn ɛ T1}
….
Até atingir um Tn tal que Tn = Tn-1 (não há mais mudanças)
p(x) :- q(x)
q(x) :- r(x)
r(1).
T0 = {r(1)}
T1 = {r(1),q(1)}
T2 = {r(1),q(1),p(1)}
T3 = T2
Método 2: Resolução
:- p(x)
:- q(x)
:- r(x)
x=1
□
Resposta = p(1)
p(x) :- q(x)
q(x) :- r(x)
r(1).
Download

Slides - Sandra de Amo