Cálculo Relacional de Domínio

Propaganda
Banco de Dados I
2007
Módulo III: Linguagens de Consulta
(Aula 8)
Clodis Boscarioli
Agenda:
Cálculo Relacional de Domínio (CRD)
Definições
Notações;
Exemplos.
Formais;
Definição Formal
Trata-se de uma segunda forma de cálculo relacional.
Essa forma usa variáveis de domínio que tomam valores
do domínio de um atributo, em vez de valores da tupla
inteira.
Uma expressão neste cálculo tem a forma:
{<x1, x2, ... , xn > | P(x1, x2, ..., xn)}
onde x1, x2, ... , xn representam variáveis de domínio e P
representa uma fórmula composta de átomos, como no
cálculo relacional de tupla.
Definição Formal
Um átomo no cálculo relacional de domínio tem uma das
seguintes formas:
< x1, x2, ... , xn > ∈ r, em que r é uma relação com n atributos e
x1, x2, ... , xn são variáveis de domínio ou domínios constantes.
x Θ y, em que x e y são variáveis de domínio e Θ é um operador
de comparação (<, >, =, ≠, ≥, ≤). Exige-se que os atributos x e y
tenham domínio que possam ser comparados por Θ.
x Θ c, em que x é uma variável de domínio, Θ é um operador de
comparação e c é uma constante no domínio do atributo para o
qual x é uma variável de domínio.
Definição Formal
Os átomos são combinados nas fórmulas a partir das
seguintes regras:
Um átomo é uma fórmula.
Se P1 é uma fórmula, então ¬P1 e (P1), também o são.
Se P1 e P2 são fórmulas, então P1 ∨ P2, P1 ∧ P2, P1 ⇒ P2
também o são.
Se P1(x) é uma fórmula em x, e x é uma variável de domínio,
então:
∃ x (P1(x)) e ∀ x (P1(x))
CRD - Exemplos Korth
Encontre os nomes de agência, números de
empréstimos e totais para empréstimos maiores que
1200 dólares.
{<b, l, a> | <b, l, a> ∈ empréstimo ∧ a > 1200}
Encontre todos os números de empréstimos com valor
total acima de 1200 dólares.
{< l > | ∃ b, a (<b, l, a> ∈ empréstimo ∧ a > 1200)}
CRD – Comentários
O CRD está intimamente ligado ao CRT. Contudo, ∃ x
para alguma variável tupla x em CRT está ligado a
alguma relação (∃ x ∈ r). Já em CRD, a expressão ∃ x
não se refere a uma tupla x, mas a um valor de domínio.
Assim, o domínio de uma variável x é irrestrito até que
uma subfórmula o restrinja para uma relação.
No exemplo anterior, b é irrestrita até a subfórmula
<b, l, a> ∈ empréstimo restringi-la aos nomes de
agências que aparecem na relação empréstimo.
CRD - Exemplos Korth
Encontre os nomes de todos os clientes que tenham um
empréstimo na agência de Perryridge e encontre os
totais emprestados.
{<c, a> | ∃ l ( <c, l> ∈ devedor ∧ ∃ b (<b, l, a> ∈
empréstimo ∧ b = “Perryridge”))}
Encontre os nomes de todos os clientes que tenham um
empréstimo, uma conta ou ambos na agência
Perryridge.
{ <c> | ∃ l (<c,l> ∈ devedor ∧ ∃ b, a (<b, l, a> ∈ empréstimo
∧ b = “Perryridge”)) ∨ ∃ a (<c,a> ∈ depositante ∧ ∃ b, n
(<b, a, n> ∈ conta ∧ b = “Perryridge”))}
CRD - Exemplos Korth
Encontre os nomes de todos os clientes que tenham
uma conta em todas as agências localizadas do
Brooklyn.
{ <c> | ∀ x, y, z ( <x, y, z> ∈ agência ∧ y = “Brooklyn” ⇒ ∃
a, b ( <x, a, b> ∈ conta ∧ <c, a> ∈ depositante)}
Leitura: O conjunto de todas as tuplas c (nome_cliente)
tal que, para todas as tuplas x, y, z (nome_agência,
cidade_agência, fundos), se a agência é da cidade
Brooklin, então o seguinte é verdadeiro:
Existe uma tupla na relação conta com o número da conta a
nome de agência x;
Existe uma tupla na relação depositante com o cliente c e
número de conta a.
CDR - Notação Navathe
Recupere o nome e o endereço de todos os
empregados que trabalhem para o
departamento “Pequisa”.
{ qrsv | (∃ z)(∃ l)(∃ m) (empregado(qrstuvwxyz)
AND departamento(lmno) AND l = “Pesquisa”
AND m = z) }
CDR - Notação Navathe
Recupere a data de nascimento e o endereço
do empregado cujo nome seja ‘John B. Smith’.
{uv | (∃ q) (∃ r) (∃ s) (∃ t) (∃ w) (∃ x) (∃ y) (∃ z)
(empregado(qrstuvwxyz) AND q=‘John’ AND
r=‘B’ AND s=‘Smith’)}
CDR - Notação Navathe
Encontre os nomes dos empregados que não
tenham dependentes.
{qrs | (∃ t) (empregado(qrstuvwxyz) AND (NOT(∃
l) (dependente(lmnop) AND t=l)))}
CRD - Expressão de Segurança
Para que uma expressão seja segura, ela tem
que cumprir as regras abaixo:
Todos os valores que aparecem nas tuplas da
expressão são valores dentro do dom(P);
2. Para toda sub-fórmula da forma ∃ x (P1(x)), a subfórmula é verdadeira, se e somente se, existir um
valor x em dom(P1) tal que P1(x) seja verdadeiro.
3. Para toda sub-fórmula da forma ∀ x (P1(x)), a subfórmula é verdadeira, se e somente se, P1(x) for
verdadeiro para todos os valores de x dentro de
dom(P1)
1.
Referências Bibliográficas
Sistemas de Banco de Dados. (Cap. 3) Abraham Silberchatz,
Henry F. Korth e S. Sudarshan. 3ª Edição. Makron Books, 1999.
Sistemas de Banco de Dados. (Cap. 6) Ramez Elsmari, 4ª
Edição. Shamkant B. Navathe. Pearson Addison Wesley, 2005.
Download