Você está na página 1de 5

227

Aula 4º

CÁLCULO RELACIONAL

Bem-vindos(as) novamente a nossa matéria Banco de


Dados I. Nesta quarta aula, veremos outro conceito que
também é considerado a base dos bancos de dados relacionais
atualmente: o cálculo relacional. Nessa aula, vocês aprenderão
as diferenças que existem entre o Cálculo Relacional e a Álgebra
Relacional; diferenciar seus tipos e escrever as suas primeiras
consultas.
Bons estudos!

Objetivos de aprendizagem

Ao término desta aula, vocês serão capazes de:

• entender o conceito de Cálculo Relacional;


• saber diferenciar a Álgebra Relacional do Cálculo Relacional;
• conhecer a diferença entre Cálculo Relacional de Tupla e o Cálculo Relacional de Domínio;
• saber como escrever as consultas na notação de Cálculo Relacional.
228 Banco de Dados II 30

Seções de estudo 2 - Cálculo Relacional de Tupla


1. Introdução ao Cálculo Relacional Vamos começar pelo básico. O cálculo relacional de
2. Cálculo Relacional de Tupla tupla é baseado na definição de uma série de variáveis de
3. Cálculo Relacional de Domínio WXSOD. Essas variáveis definirão um conjunto de regras que
definirão o que será recuperado do banco de dados. Uma
sintaxe básica de uma consulta escrita no cálculo relacional de
1 - Introdução ao cálculo relacional tupla obedece a seguinte estrutura:
O cálculo relacional é mais uma forma de definir um {t | COND(t)}
conjunto de operações a serem realizadas no banco de dados
(considerada também como uma forma de consulta formal ao Onde t é considerada uma variável de tupla e COND(t)
banco de dados). Ela possui muitas semelhanças com a uma expressão condicional, onde cada tupla é avaliada por
essas condições. O resultado dessa expressão são todas as
Álgebra Relacional, como o fato de vários SGBDs usar a
tuplas que correspondam a essa condição. Simples, não?
teoria como base das linguagens de recuperação de dados
atuais. Outra semelhança é o fato de que qualquer recuperação A barra horizontal (|) é lida matematicamente como “tal que”. Assim,
que pode ser especificada na álgebra relacional básica pode ser podemos ler essa consulta como “todas as tuplas t tal que pertença
especificada no cálculo relacional e vice-versa. a COND”.
Mas existem muitas diferenças entre as duas notações.
Como vimos na última aula, para que escrevamos uma Vamos a um exemplo. Se quisermos procurar todos os
consulta em álgebra relacional, temos que definir exatamente vendedores com salário maior que 600 reais, poderíamos
quais operações devemos operar - isso pelo fato que cada escrever a seguinte consulta:
operação tem seu operador próprio. Como você vai ver, no {t | VENDEDOR(t) AND t.SALARIO > 600}
cálculo relacional, precisamos especificar o que será feito, e não
como será feito, pois podemos fazer mais de uma operação Nessa consulta, estamos filtrando todas as tuplas que
em um mesmo comando. Por isso, ELMASRI e NAVATHE pertençam à tabela VENDEDOR e (dado pela palavra-chave
(2011) afirmam que a álgebra relacional é uma linguagem AND) que tenham um salário acima de 600 reais. Lembre-se
que o atributo SALARIO se refere à tupla t que está sendo
procedimental, e o cálculo relacional é uma linguagem não
avaliada.
procedimental.
E se quisermos pegar todos os vendedores que tenham
Uma coisa que devemos lembrar é que uma expressão de um salário acima de 600 reais e que trabalhem no setor 2? Para
cálculo pode ser escrita de maneiras diferentes, mas o modo isso, adicionamos mais uma condição:
de como ela é escrita não tem relação com o modo de como
uma consulta pode ser avaliada, ao contrário de como ocorre {t | VENDEDOR(t) AND t.SALARIO > 600 AND
na álgebra relacional. t.CODSETOR = 2}
Para que você entenda o cálculo relacional é necessário ter Lembre-se que a consulta retorna todas as colunas
algumas noções de entendimento de expressões matemáticas. presentes na tupla. Para que possamos indicar quais colunas
Se você não se lembra, não se preocupe, pois vamos explicar que queremos retornar, basta indicar explicitamente na
o que cada símbolo mostrado nessa aula diz. primeira parte da consulta. Nesse exemplo, estamos fazendo
a mesma consulta, mas cada tupla retornada conterá apenas as
Caso você queira relembrar agora, seguem abaixo alguns sites que colunas NOMEVEND e SALARIO.
possuem tabelas dos símbolos mais usados na matemática e os seus
{t.NOMEVEND, t.SALARIO | VENDEDOR(t) AND
signiȴcados:
t.SALARIO > 600 AND t.CODSETOR = 2}
• https:www.matematica.ptutilsimbolos.php
• https:www.somatematica.com.brsimbolos.php A essa altura, vocês devem ter percebido algumas coisas
que estão presentes nas operações do cálculo relacional de
Outra coisa que devemos lembrar é o fato de que todos tupla. A primeira delas é a delimitação de qual intervalo deve
os exemplos exibidos nessa aula são do modelo de dados que pertencer a tupla t, ou em outras palavras, quais tabelas devem
estamos estudando desde quando começamos a aprender pertencer a tupla t. Se não especificarmos qual ou quais tabelas
sobre a linguagem SQL. Caso não se lembrem, voltem a aula a tupla deve pertencer, a consulta vai vasculhar em todas as
tuplas do banco de dados.
01.
Outra coisa que deve estar presente é a condição que
Dito isso, vamos iniciar os nossos estudos sobre o cálculo
selecionará quais tuplas serão retornadas. São condições que
relacional. Ela se divide em dois tipos: O cálculo relacional devem ser satisfeitas em uma tupla para pertencer ao conjunto
de tupla (CRT) e o cálculo relacional de domínio (CRD). final de dados. E a terceira coisa é a indicação de quais colunas
Cada um dos tipos terá a sua própria seção, e em cada seção (atributos) devem ser retornadas nessa filtragem.
detalharemos como funcionam cada um desses tipos.
31 229
Vamos para mais algumas consultas: • Uma fórmula F1 AND F2 será verdadeira quando
ambos são verdadeiros. Caso contrário, retornará o
([HPSOR  Faça uma consulta que retorne todos os valor falso;
clientes da loja. • Uma fórmula F1 OR F2 será falsa se ambas as
{t | CLIENTE(t)} fórmulas forem falsas. Se uma das fórmulas retornar
([HPSOR  Faça uma consulta que retorne todos os o valor verdadeiro para uma tupla, a fórmula terá o
clientes da loja que estejam no bairro “Jardim Universitário”. valor verdadeiro;
• Uma fórmula NOT(F1) inverterá o valor lógico
{t | CLIENTE(t) AND t.BAIRRO = “Jardim contido no seu parâmetro. Ou seja, o que era
Universitário”} verdadeiro vira falso e vice-versa.

([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

Vale a pena ler


DATE, C. J.. Introdução a sistemas de bancos de dados.
8. ed. Rio de Janeiro: Campus, 2004.
ELMASRI, Ramez; NAVATHE, Shamkant B. Sistemas
de banco de dados. 6. ed. São Paulo: Pearson Education do
Brasil, 2011.
SILBERSCHATZ, Abraham; KORTH, Henry F.;
SUDARSHAN, S. et al. Sistema de banco de dados. 6. ed.
Rio de Janeiro: Campus; Rio de Janeiro: Elsevier, 2012.

Minhas anotações

Você também pode gostar