Escolar Documentos
Profissional Documentos
Cultura Documentos
Aula 4º
CÁLCULO RELACIONAL
Objetivos de aprendizagem
([HPSOR Faça uma consulta que retorne todos os Além disso, temos mais dois operadores que precisamos
produtos que custam acima de dez reais. mostrar para você. São os operadores de quantificador
universal ( - lido matematicamente como “para todo”) e
{t | PRODUTO(t) AND t.VALOR_UN > 10} quantificador existencial ( - lido matematicamente como
“existe”). Eles obedecem às seguintes regras:
Agora que você está familiarizado com a sintaxe,
podemos explicar como funciona com mais detalhes o cálculo • 4XDQWLILFDGRU H[LVWHQFLDO Se F é uma fórmula,
relacional. Você sabe que temos que definir um conjunto então o mesmo vale para (t)(F), onde t é uma
de atributos (colunas) a serem recuperadas de um lado e variável de tupla. A fórmula (t)(F) é avaliada como
uma condição do outro lado. Para uma tupla aparecer no verdadeira se a fórmula F é avaliada como verdadeira
resultado final da consulta, deve ter o resultado verdadeiro para alguma (pelo menos uma tupla atribuída as
para a condição solicitada. A condição (que pode ser chamada ocorrências livres de t em F. Se não ocorrer isso,
também de fórmula) se divide em átomos. Portanto, na última ela é avaliada como falso. Em outras palavras, um
consulta que escrevemos, podemos chamar as subcondições fórmula (t)(F) é verdadeira se existir alguma tupla
PRODUTO(t) e t.VALOR_UN > 10 como átomos desta que torne F verdadeiro.
consulta. • 4XDQWLILFDGRU XQLYHUVDO Se F é uma fórmula,
Cada átomo pode se enquadrar em um desses tipos: então o mesmo vale para (t)(F), onde t é uma
variável de tupla. A fórmula (t)(F) é verdadeiro se
• O primeiro tipo de átomos são os átomos que testam
a fórmula F é avaliada como verdadeiro para cada
se uma tupla t está em uma relação (tabela) ou não. O
tupla (no universo) atribuída a ocorrências livres
átomo PRODUTO(t) se enquadra nessa condição.
de t em F. Caso contrário, a expressão é avaliada
Esses átomos são escritos da seguinte forma:
como falsa. em outras palavras: o quantificador
primeiro se escreve o nome da tabela que queremos
universal retorna verdadeiro se cada tupla possível
testar e depois entre parênteses o nome da tupla
que pode ser atribuída a ocorrências livres de t em
que queremos testar. Se a tupla pertencer à relação,
F for substituída por t, e F é verdadeiro para cada
o valor é verdadeiro, caso contrário, é considerado
substituição desse tipo (ELMASRI; NAVATHE,
falso. Como foi afirmado anteriormente, se não
2011).
testarmos qual tabela pertence a tupla t, a consulta
vai percorrer em todas as tuplas do banco de dados, Em resumo, o quantificador existencial retorna
gerando uma consulta ineficiente e inconsistente; verdadeiro se uma tupla de t corresponde a condição que
• O segundo tipo de átomo são as comparações, escrevemos na nossa sub fórmula e o quantificador universal
que podem ser feitas entre atributos (ti.A op ti.B) retorna verdadeiro se todas as tuplas de t corresponde às
ou um atributo com um valor constante fixo (ti.A condições estabelecidas na sub fórmula.
op C - e vice-versa). O operador pode ser qualquer Para que possamos entender direito como isso funciona,
operador de comparação que pode ser usado na vamos para mais alguns exemplos:
álgebra relacional, e seu funcionamento é igual na
programação. Se a comparação corresponder ao ([HPSOR Listar os dados de todos os vendedores que
operador, será emitido o valor verdadeiro. Caso trabalham no setor de PEÇAS.
contrário, a comparação retornará o valor falso.
Na nossa consulta, o átomo t.VALOR_UN > 10 {t | VENDEDOR(t) AND (ڝd)(SETOR(d) AND
corresponde a esse tipo. d.NOMESETOR = “PEÇAS” AND d.CODSETOR =
t.CODSETOR)}
Esses átomos são conectados, formando as fórmulas,
por meio dos operadores lógicos AND, OR e NOT, que Nessa consulta, estamos procurando todas as tuplas
são correspondentes aos operadores em português E, OU e que estejam na tabela vendedor e cujo valor de CODSETOR
NÃO. Quem se lembra das aulas de lógica computacional se corresponda a tupla da tabela SETOR cujo seu nome é
lembra de como funcionam esses operadores. Mas se você “PEÇAS”. Podemos ler essa consulta como: Retorne todas as
não se lembra, vamos a uma breve explicação: tuplas t tal que pertençam a tabela VENDEDOR e seu valor
de CODSETOR corresponda a tupla da tabela SETOR cujo seu
• Todo átomo é uma fórmula por si só;
230 Banco de Dados II 32
nome é “PEÇAS”. Apesar de que essa consulta retorne apenas uma coluna,
Na nossa subconsulta, estamos fazendo duas coisas: precisamos declarar todas as variáveis da tabela VENDEDOR,
Uma operação de seleção, para procurar qual tupla tem seu para fazer o teste de relação. Em seguida, verificamos se o valor
nome de setor igual a PEÇAS e uma junção, pois estamos da variável s (que corresponde a coluna SALARIO) é maior
procurando uma correspondência entre seus códigos de setor. que 600 e depois se o código da variável t (que corresponde a
Agora que você entende como funciona o cálculo coluna CODSETOR) é igual a 2.
relacional de tupla, vamos entender como funciona o cálculo
relacional de tupla. E com isso, finalizamos a nossa quarta aula. Nas próxima
aula, vamos abordar o que são junções e como tirar proveito
deles. Até a próxima!
3 - Cálculo Relacional de Domínio
O cálculo relacional de domínio é similar ao cálculo Retomando a aula
relacional de tupla. Mas possui uma diferença fundamental.
Em vez de termos variáveis percorrendo as tuplas, as variáveis
percorrem os valores dos domínios dos atributos. Para formar
uma relação de grau n para um resultado de consulta,
precisamos ter n dessas variáveis de domínio - uma para cada Finalizamos a nossa quarta aula. Vamos recordar?
atributo.
Ou seja, devemos verificar quantas colunas devemos
obter nessa consulta. Se o número de colunas for pré-definido,
colocamos a quantidade de colunas nas variáveis. Se quisermos ,QWURGXomRDR&iOFXOR5HODFLRQDO
retornar todas as colunas presentes em uma relação, devemos Você viu que o cálculo relacional é mais uma forma de
indicar um número de variáveis correspondente ao número definir um conjunto de operações a serem realizadas no banco
de colunas dessa tabela. de dados (considerada também como uma forma de consulta
Da mesma forma que o cálculo relacional de tupla, o formal ao banco de dados). Ela possui muitas semelhanças
cálculo relacional define uma condição (chamada também de com a Álgebra Relacional, como o fato de vários SGBDs
fórmula), formada por átomos, que seguem mais ou menos usar a teoria como base das linguagens de recuperação de
as regras que definimos na seção anterior. Mas, com algumas dados atuais. Outra semelhança é pelo fato de que qualquer
mudanças: recuperação que pode ser especificada na álgebra relacional
• Para verificarmos se uma tupla pertence a uma básica pode ser especificada no cálculo relacional e vice-
relação, devemos colocar todas as variáveis que versa. Mas existe uma grande diferença: Enquanto a álgebra
achamos que pertencem a relação nesse teste. Se for relacional é uma considerada uma linguagem procedimental,
mais de uma variável, separamos por vírgulas ou - o cálculo relacional é considerada uma linguagem não
dependendo da notação - espaços; procedimental.
• Uma comparação é feita entre uma variável com um &iOFXOR5HODFLRQDOGH7XSOD
valor fixo ou entre duas variáveis, não com membros
de uma tupla. Você viu que o cálculo relacional de tupla é baseado na
definição de uma série de variáveis de tupla. Essas variáveis
Dito isso, vamos a alguns exemplos para ilustrar isso: definirão um conjunto de regras que definirão o que será
([HPSOR Crie uma consulta que retorne todos os recuperado do banco de dados. Uma sintaxe básica de uma
produtos cujo valor unitário é maior que 10 reais. consulta escrita no cálculo relacional de tupla obedece a
seguinte estrutura: {t | COND(t)}, onde t é considerada
{q,r,s,t | PRODUTO(q r s t) AND t > 10} uma variável de tupla e COND(t) uma expressão condicional,
onde cada tupla é avaliada por essas condições. O resultado
Essa consulta associa quatro variáveis, sendo uma para dessa expressão são todas as tuplas que correspondam a essa
cada coluna da tabela PRODUTO (pela ordem, CODPROD, condição. Essa condição é formada por átomos que podem
DESCRICAO, UNIDADE E VALOR_UN). Como cada variável avaliar se uma tupla pertence a uma tabela, ou podem fazer
corresponde a um atributo (coluna), devemos submeter ao uma comparação de valores. Esses átomos são conectados
teste de relação todas as variáveis dessa consulta. Depois por meio de operadores OR, AND e NOT.
escrevemos um átomo que testa se VALOR_UN, representado
pela variável t, é maior que 10. &iOFXOR5HODFLRQDOGH'RPtQLR
Vamos para mais outro exemplo: Você estudou que o cálculo relacional de domínio é
similar ao cálculo relacional de tupla. Mas possui uma diferença
([HPSOR Escreva uma consulta que retorne os nomes fundamental. Em vez de termos variáveis percorrendo
dos vendedores que ganham acima de 600 reais e pertençam as tuplas, as variáveis percorrem os valores dos domínios
ao setor 2: dos atributos. Para formar uma relação de grau n para um
{r | VENDEDOR(q r s t) AND s > 600 AND t resultado de consulta, precisamos ter n dessas variáveis de
= 2} domínio - uma para cada atributo.
33 231
Vale a pena
Minhas anotações