You are on page 1of 6

Captulo 7-?

Clculo Relacional
O Clculo Relacional (CR) uma linguagem de consulta formal. Utilizando-se de uma expresso declarativa pode-se especificar uma consulta. Uma expresso de clculo permite a descrio da consulta desejada sem especificar os procedimentos para obteno dessas informaes, ou seja, no-procedural. Contudo, tal consulta deve ser capaz de descrever formalmente a informao desejada, com exatido. Existem dois tipos: Clculo Relacional de Tuplas (CRT) e Clculo Relacional de Domnio (CRD). Eles so subconjuntos simples de lgica de primeira ordem. No Clculo Relacional existem variveis, constantes, operadores lgicos, de comparao e quantificadores. As expresses de Clculo so chamadas de frmulas. Uma tupla de respostas essencialmente uma atribuio de constantes s variveis que levam a frmula a um estado verdadeiro. Em CRT, as variveis so definidas sobre tuplas. J em CRD, variveis so definidas sobre o domnio dos elementos (ou seja, sobre os valores dos campos). Todas as expresses de consulta descritas em CR possuem equivalentes em lgebra Relacional.

Clculo Relacional de Tuplas


baseado na especificao de um nmero de variveis de tuplas. Cada varivel tupla pode assumir como seu valor qualquer tupla da relao especificada. Uma consulta em CRT especificada da seguinte forma: {varivel tupla | predicado} O resultado de tal consulta o conjunto de todas as variveis tuplas para as quais o predicado indicado como verdadeiro. Uma expresso genrica do clculo relacional de tuplas tem a forma{t1.A1, t2.A2,..., tn.An | predicado(t1, t2,..., tn, tn+1, tn+2, ...,tn+m)} onde t1, t2,..., tn, tn+1, tn+2, ...,tn+m so variveis de tuplas, cada Ai um atributo da relao na qual ti se encontra . O predicado uma frmula do clculo relacional de tuplas. As frmulas atmicas de clculo de predicados podem ser uma das seguintes: 1-) Uma frmula atmica R(ti), onde R o nome de uma relao e ti uma varivel de tupla. Este tomo identifica a extenso da varivel de tupla ti como a relao cujo nome seja R. 2-) Uma frmula atmica ti.A op tj.B, onde op um dos operadores de comparao no conjunto {=, >, <, ...}, ti e tj so variveis de tuplas, A um atributo da relao na qual ti se encontra, B um atributo da relao na qual tj se encontra. 3-) Um frmula atmica ti.A op c ou c op tj.B, onde op um dos operadores de comparao no conjunto {=, >, <, ...}, ti e tj so variveis de tuplas, A um atributo da

relao na qual ti se encontra, B um atributo da relao na qual tj se encontra e c um valor constante. Cada uma das frmulas atmicas anteriormente especificadas tem seu valor verdade avaliado como TRUE ou FALSE para uma combinao especfica de tuplas. Para frmulas do tipo 1, caso a varivel de tupla seja atribuda a uma tupla da relao R dada, esta assume valor TRUE; caso contrrio, FALSE. J nas frmulas do tipo 2 e 3, se as variveis de tupla forem designadas de forma que os valores dos atributos especificados satisfaam o predicado, esta assumir valor verdade TRUE. Todas as variveis tuplas abordadas at ento so consideradas variveis livres1, uma vez que estas no aparecem quantificadas. Contudo, alm das definies acima, quantificadores (universal () ou existencial ()) podem aparecer nas frmulas. Neste caso, as variveis que os sucedem so denominadas variveis limite. Uma frmula definida, de forma recursiva, por uma ou mais frmulas atmicas, conectadas por operadores lgicos (AND, OR, NOT), como segue: 1-) Qualquer frmula atmica. 2-) Se F1 e F2 so frmulas atmicas, ento (F1 AND F2), (F1 OR F2), NOT (F1) e NOT (F2) tambm o so, tendo seus valores verdade derivados a partir de F1 e F2, da seguinte forma: a-) (F1 AND F2) ser TRUE apenas se ambos, F1 e F2, forem TRUE; b-) (F1 OR F2) ser TRUE quando uma das duas frmulas F1 e F2, for TRUE; c-) NOT(F1) ser TRUE quando F1 for FALSE; c-) NOT(F2) ser TRUE quando F2 for FALSE. 3-) Se F1 uma frmula atmica, ento ( t2)(F1) tambm o , e seu valor verdade apenas ser TRUE se a frmula F for avaliada como verdadeira para pelo menos uma tupla atribuda para ocorrncias livres de t em F. 4-) Se F1 uma frmula atmica, ento ( t)(F1) tambm o , e seu valor verdade apenas ser TRUE se a frmula F for avaliada como verdadeira para todas as tuplas atribudas para ocorrncias livres de t em F. possvel escrever expresses equivalentes manipulando operadores e quantificadores. Alguns casos dessa manipulao podem ser declarados da seguinte forma: 1-) F1 AND F2 NOT(NOT F1 OR NOT F2). 2-) ( t) r (F1(t)) NOT ( t) r (NOT F1(t)). 3-) F1 F2 NOT F1 OR F2. 4-) ( x) (F(x)) NOT ( x) (NOT (F(x)) 5-) ( x) (F(x)) NOT ( x) (NOT (F(x))

As nicas variveis de tupla livres em uma expresso de clculo relacional devem ser aquelas esquerda da barra ( | ). 2 t uma varivel de tupla.

6-) ( x) (F(x) AND P(x)) NOT ( x) (NOT (F(x)) OR NOT (P(x))) 7-) ( x) (F(x) OR P(x)) NOT ( x) (NOT (F(x)) AND NOT (P(x))) 8-) ( x) (F(x) OR P(x)) NOT ( x) (NOT (F(x)) AND NOT (P(x))) 9-) ( x) (F(x) AND P(x)) NOT ( x) (NOT (F(x)) OR NOT (P(x))) Abaixo seguem exemplos de consultas em CRT. 1-) Encontre todos os empregados cujos salrios estejam acima de R$3.500,00. {t | EMPREGADO(t) AND t.SALARIO > 3500} 2-) D apenas os nomes e sobrenomes dos empregados cujos salrios estejam acima de R$3.500,00. {t.NOME, t.SOBRENOME | EMPREGADO(t) AND t.SALARIO > 3500} 3-) Selecione o nome e o endereo dos empregados que trabalham para o departamento de Informtica. {t.NOME, t.SOBRENOME, t.ENDERECO | EMPREGADO(t) AND ( D) (DEPARTAMENTO (d) AND d.NOMED = Informtica AND d.NUMERODEP = t.NUD)} 4-) Para cada projeto localizado em So Paulo, liste o nmero do mesmo, o nome do departamento proponente, bem como sobrenome, data de nascimento e endereo do gerente responsvel. {p.NUMEROP, p.NUMD, m.SOBRENOME, m.DATANASCIMENTO, m.ENDERECO | PROJETO(p) AND EMPREGADO(m) AND p.LOCALIZACAO = So Paulo AND (( d) (DEPARTAMENTO(d) AND p.NUMD = d.NUMERODEP AND d.NSSGER = m.NSS) )} 5-) Encontre os nomes dos empregados que trabalham em todos os projetos controlados pelo departamento de nmero 5. {e.SOBRENOME, e.NOME | EMPREGADO(e) AND (( x) (NOT(PROJETO(x)) OR NOT(x.NUMD = 5) OR (( w) (TRABALHA_EM(w) AND w.NSSE = e.NUMEROP AND x.NUMEROP = w.NUMP))))}

Expresses Seguras Uma expresso em CRT pode gerar uma infinidade de relaes. Para a expresso {t | NOT (R(t))} pode existir uma infinidade de tuplas que no esto em R, de forma que esta nosegura. A maioria dessas tuplas contm valores que no esto no banco de dados, logo, no so desejveis como resultados. Uma expresso segura no CR uma expresso que garante a produo de um nmero finito de tuplas como resultado. Para melhor definir expresso segura, o conceito de domnio pode ser utilizado. O domnio de uma expresso P o conjunto de todos os valores referenciados por P. Isso inclui os valores mencionados em P propriamente dito, assim como os valores que aparecem na tupla de uma relao referenciada por P. Assim, o domnio de P um conjunto de valores que aparecem explicitamente em P ou que aparecem em uma ou mais relaes cujos nomes aparecem em P.

Clculo Relacional de Domnio

A diferena bsica entre CRT e CRD que neste ltimo as variveis estendem-se sobre valores nicos de domnios de atributos. Para formar uma relao de grau n para um resultado de consulta, faz-se necessrio criar n variveis de domnio, uma para cada atributo. Uma expresso genrica do clculo relacional de tuplas tem a forma {x1, x2,..., xn | predicado(x1, x2,..., xn, xn+1, xn+2, ...,xn+m)} onde x1, x2,..., xn, xn+1, xn+2, ...,xn+m so variveis de domnio aplicadas sobre o domnio dos atributos requeridos na consulta e predicado uma frmula atmica do CRD, que pode ser especificada em uma das formas que segue: 1-) Uma frmula atmica R(x1, x2,..., xn), onde R o nome de uma relao de grau j e cada x1, 1 i j, uma varivel de domnio. Isto implica que uma lista de valores de <x1, x2,..., xj> deve ser uma tupla na relao R, onde xi o valor do i-simo valor de atributo da tupla. 2-) Uma frmula atmica xi op xj, onde op um operador de comparao {=, <, >, ...} e xi e xj so variveis de domnio. 3-) Uma frmula atmica xi op c ou c xj, onde op um operador de comparao {=, <, >, ...} e xi e xj so variveis de domnio e c um valor constante qualquer.

Como em CRT, as frmulas so avaliadas em valores verdade para um conjunto especfico de valores. Para a frmula do tipo 1, o valor verdade ser TRUE apenas se houver valores de domnio correspondentes a uma tupla de R atribudos s variveis de domnio que representam. Para os casos 2 e 3, o valor verdade ser TRUE caso as variveis de domnio possuam valores que satisfaam o predicado. Abaixo, para fins de comparao, seguem em CRD os mesmos exemplos de consultas j escritos em CRT. 1-) Encontre todos os empregados cujos salrios estejam acima de R$3.500,00. {qrstuvwxyz | ( x) EMPREGADO(qrstuvwxyz) AND x > 3500} 2-) D apenas os nomes e sobrenomes dos empregados cujos salrios estejam acima de R$3.500,00. {qs | ( x) EMPREGADO(qrstuvwxyz) AND x > 3500} 3-) Selecione o nome e o endereo dos empregados que trabalham para o departamento de Informtica. {qsv | ( z) ( l) ( m) (EMPREGADO(qrstuvwxyz) AND DEPARTAMENTO(lmno) AND l = Informtica AND m = z)} 4-) Para cada projeto localizado em So Paulo, liste o nmero do mesmo, o nome do departamento proponente, bem como sobrenome, data de nascimento e endereo do gerente responsvel. {iksuv | ( j) ( m) ( n) ( t) (PROJETO(hijk) AND EMPREGADO(qrstuvwxyz) AND DEPARTAMENTO(lmno) AND k = m AND n = t AND j = So Paulo)} 5- exerccio) Encontre os nomes dos empregados que trabalham em todos os projetos controlados pelo departamento de nmero 5.

Expresses Seguras Uma expresso em CRD dita segura se: 1-) Todos os valores que aparecem nas tuplas da expresso so valores dentro do domnio da mesma. 2-) Para todas as subfrmulas ( x) (P(x)), a subfrmula verdadeira se, e somente se, existir um valor x no domnio de P tal que P(x) seja verdadeiro. 3-) Para toda subfrmula ( x) (P(x)), a subfrmula verdadeira se, e somente se, P(x) for verdadeiro para todos os valores de x dentro do domnio de P. As proposies acima garantem que possamos testar todas as subfrmulas existe um e para todo sem a necessidade de testar todas as suas infinitas possibilidades de ocorrncia.

You might also like