Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.

Prévia do material em texto

Banco de Dados
Professora Elisângela Botelho Gracias 
AULA 4
AULA 4 - Banco de Dados
ÁLGEBRA RELACIONAL �����������������������������������������������������������������������������������������������������������������������3
OPERAÇÃO SELEÇÃO �����������������������������������������������������������������������������������������������������������������������������������������������4
OPERAÇÃO PROJEÇÃO ��������������������������������������������������������������������������������������������������������������������������������������������5
SEQUÊNCIA DE OPERAÇÕES ��������������������������������������������������������������������������������������������������������������������������������6
OPERAÇÃO PRODUTO CARTESIANO ��������������������������������������������������������������������������������������������������������������7
OPERAÇÃO JUNÇÃO �������������������������������������������������������������������������������������������������������������������������������������������������8
OPERAÇÕES DA TEORIA DE CONJUNTOS ������������������������������������������������������������������������������������������������10
REFERÊNCIAS ���������������������������������������������������������������������������������������������������������������������������������������13
3AULA 4 - Banco de Dados
ÁLGEBRA RELACIONAL
A álgebra relacional é um conjunto básico de operações para o modelo rela-
cional. Essas operações permitem que um usuário especifique as solicitações de 
recuperação básicas como expressões da álgebra relacional. Ela é muito impor-
tante, pois oferece um alicerce formal para as operações do modelo relacional e, 
também, é usada como base para a implementação e otimização de consultas.
A álgebra relacional é fechada, ou seja, o resultado de uma ou mais operações 
relacionais é uma nova relação. O resultado de uma operação pode ser utilizado 
como dado de entrada de outra. Você entenderá isso melhor nos exemplos que 
utilizaremos a seguir.
As operações da álgebra relacional podem ser divididas em dois grupos:
• um grupo que consiste em operações desenvolvidas especificamente para 
banco de dados relacionais, as quais incluem Seleção, Projeção e Junção, 
dentre outras;
• outro grupo são as operações da teoria de conjuntos da matemática: União, 
Interseção, Diferença e Produto Cartesiano.
Exemplo: utilizaremos o seguinte banco de dados, já visto na Aula 3, para expli-
car e exemplificar algumas operações da álgebra relacional.
Modelo Relacional:
Departamento = {Cod_Depto, Nome_Depto}
Funcionario = {Cod_Func, Nome_Func, Salario, Cod_Depto}
- Cod_depto é chave estrangeira que referencia o atributo Cod_depto da 
tabela Departamento
4AULA 4 - Banco de Dados
Projeto = {Cod_Proj, Nome_Proj, Duracao}
Func_Proj = {Cod_Func, Cod_Proj, Horas_Trab}
- Cod_Func é chave estrangeira que referencia o atributo Cod_Func da 
tabela Funcionario 
- Cod_Proj é chave estrangeira que referencia o atributo Cod_Proj da 
tabela Projeto
A Figura 1 mostra as tabelas Departamento, Funcionario, Projeto e Func_Proj 
exemplificadas com dados. 
Atenção 
Utilizaremos essas tabelas com dados para mostrar o resultado gerado 
pelas operações da Álgebra Relacional.
Figura 1 – Tabelas Departamento, Funcionario, Projeto 
e Func_Proj exemplificadas com dados 
Fonte: Elaborada pela autora.
OPERAÇÃO SELEÇÃO
A operação Seleção é utilizada para selecionar um subconjunto de tuplas 
(linhas) em uma relação que satisfaça uma condição de seleção. Essa operação 
também pode ser considerada como uma partição horizontal da relação.
5AULA 4 - Banco de Dados
A operação Seleção é denotada por:
σ (Nome da Relação)
Exemplo 1: selecione todos os dados dos funcionários que ganham mais que 
1600.
σ(Salario > 1600) (Funcionario)
Nesse exemplo 1, serão retornados todos os atributos da relação Funcionario, 
mas somente as linhas que obedecem à condição do salário ser maior que 1600, 
como você pode observar a seguir:
 
A relação resultante da operação Seleção tem os mesmos atributos da rela-
ção especificada.
A operação Seleção é comutativa, ou seja:
σ(σ(R)) = σ(σ(R))
OPERAÇÃO PROJEÇÃO
A operação Projeção seleciona certas colunas da tabela e descarta as ou-
tras. Essa operação também pode ser considerada como uma partição vertical da 
relação.
A forma geral da operação Projeção é:
π (Nome da Relação)
6AULA 4 - Banco de Dados
Exemplo 2: selecione somente o código e o nome de todos os funcionários.
πCod_Func, Nome_Func (Funcionario)
Nesse exemplo 2, serão retornados somente os atributos Cod_Func e Nome_
Func de todos os funcionários da relação Funcionario, como você pode observar no 
resultado a seguir:
 
A relação resultante da operação Projeção tem somente os atributos especi-
ficados em , na mesma ordem que aparecem na lista. 
A operação Projeção remove implicitamente qualquer tupla duplicada, então 
o número de tuplas em uma relação resultante da operação Projeção é sempre 
menor ou igual ao número de tuplas da relação original. Se a lista dos atributos 
inclui uma chave da relação, a relação resultante tem o mesmo número de tuplas 
que o original.
A comutatividade não é mantida na operação Projeção.
SEQUÊNCIA DE OPERAÇÕES
As operações podem ser aplicadas de forma aninhada, usando uma única 
expressão da álgebra relacional. Exemplificaremos, a seguir, as operações de proje-
ção e seleção em uma única expressão da álgebra relacional.
Exemplo 3: selecione o código e o nome dos funcionários, mas somente para 
aqueles funcionários que ganham mais de 1600.
πCod_Func, Nome_Func (σ(Salario>1600) (Funcionario))
Observe que, nesse exemplo 3, as duas operações Seleção e Projeção foram 
utilizadas, ou seja, primeiro seleciona-se as linhas de Funcionario (de acordo 
com a condição) e, depois, faz-se a projeção das colunas Cod_Func e Nome_Func.
7AULA 4 - Banco de Dados
O mesmo exemplo 3 pode ser feito por meio da criação de relações resultantes 
intermediárias, dando um nome para cada relação intermediária, ou seja:
Temp1 ← σ(Salario>1600) (Funcionario)
Result ← πCod_Func, Nome_Func (Temp1)
O resultado da relação gerada Temp1, você já viu no exemplo 1, e o da relação 
Result você pode observar a seguir:
 
OPERAÇÃO PRODUTO CARTESIANO
O produto cartesiano, denotado por X, combina tuplas de duas relações R 
e S, resultando em uma relação que tem uma tupla para cada combinação de 
tuplas – uma de R e outra de S:
Q(A1, A2,..., An,B1, B2,..., Bm) ← R(A1, A2,..., An) X S(B1, B2,..., Bm)
Exemplo 4: considere as relações Funcionario e Departamento da Figura 1 para 
fazermos o produto cartesiano e observe o resultado, a seguir.
 
8AULA 4 - Banco de Dados
Considerações sobre o resultado do produto cartesiano de Funcionario com 
Departamento:
• ele combina cada linha de funcionário com cada linha de departamento;
• ele não respeita o relacionamento entre Funcionario e Departamento, pois 
sua operação combina cada linha (tupla) de Funcionario com cada linha de 
Departamento, gerando um total de 20 linhas (5 funcionários X 4 departa-
mentos);
• como não foi realizada outra operação (seleção ou projeção), além do produto 
cartesiano, o resultado trouxe todas as colunas e todas as linhas.
OPERAÇÃO JUNÇÃO
A operação Junção, denotada por |X|, é utilizada para combinar tuplas de duas 
relações, por meio de um ou mais atributos comuns (que se relacionam) às 
duas relações.
Atenção
Esta operação é muito importante para qualquer banco de dados relacio-
nal, pois permite processar relacionamentos entre relações.
A forma geral da operação Junção com duas relações R(A1, A2,..., An) e S(B1, B2,..., Bm) é:
R |X| S
Exemplo 5: considere as relações Funcionario e Departamento (Figura 1) para 
fazermos a junção entre elas, que é escrita da seguinte maneira:
Funcionario |X|Cod_Depto = Cod_Depto Departamento
O resultado da Junção desse exemplo 5 está ilustrado a seguir:
 
9AULA 4 - Banco de DadosConsiderações sobre o resultado da junção de Funcionario com Departamento:
• a junção respeita o relacionamento entre Funcionario e Departamento, 
pois sua operação combina cada linha (tupla) de Funcionario com a única 
linha do Departamento a que ele realmente pertence;
• não foram utilizadas as operações Seleção e Projeção, então o resultado ante-
rior retornou todos os atributos das duas tabelas e todas as linhas combinadas 
pela junção.
Exemplo 6: selecione o nome de cada funcionário e o nome do departamento 
a que cada um pertence.
Temp1 ← Funcionario |X|Cod_Depto = Cod_Depto Departamento
Result ← πNome_Func, Nome_Depto (Temp1)
Nesse exemplo 6, foram utilizadas as operações Junção e Projeção. O resultado 
da relação gerada Temp1, você já viu no exemplo 5, e o da relação Result, você pode 
observar a seguir:
 
Exemplo 7: selecione o nome de cada funcionário e o nome do departamento 
de cada um, mas somente para os funcionários que ganham mais de 1600.
Temp1 ← Funcionario |X|Cod_Depto = Cod_Depto Departamento
Temp2 ← σ(Salario>1600) (Temp1)
Result ← πNome_Func, Nome_Depto (Temp2)
Nesse exemplo 7, foram utilizadas as operações Junção, Seleção e Projeção. 
Observe o resultado – Result – a seguir:
 
10AULA 4 - Banco de Dados
Outra forma de fazer o exemplo 7 é realizar primeiro a Seleção. Observe que não 
perdemos nenhuma informação, retornando o mesmo resultado anterior:
Temp1 ← σ(Salario>1600) (Funcionario)
Temp2 ← Temp1 |X|Cod_Depto = Cod_Depto Departamento
Result ← πNome_Func, Nome_Depto (Temp2)
Exemplo 8: selecione o nome dos projetos em que a funcionária ‘Maria Castro’ 
trabalhou.
Quais tabelas você acha que devemos utilizar nesse exemplo 8, considerando o 
modelo relacional do banco de dados da Figura 1?
Temp1 ← Func_Proj |X|Cod_Proj = Cod_Proj Projeto 
Temp2 ← Funcionario |X|Cod_Func = Cod_Func Temp1
Temp3 ← σ(Nome_Func = ‘Maria Castro’) (Temp2)
Result ← πNome_Proj(Temp3)
Outra forma de fazer o exemplo 8 é realizar primeiro a Seleção. Observe que não 
perdemos nenhuma informação, retornando o mesmo resultado anterior:
Temp1 ← σ(Nome_Func = ‘Maria Castro’) (Funcionario)
Temp2 ← Func_Proj |X|Cod_Func = Cod_Func Temp1
Temp3 ← Projeto |X|Cod_Proj = Cod_Proj Temp2
Result ← πNome_Proj(Temp3)
OPERAÇÕES DA TEORIA DE CONJUNTOS
Para realizarmos as operações União, Interseção e Diferença na álgebra rela-
cional, as duas relações envolvidas devem possuir o mesmo tipo de tuplas, ou 
seja, elas devem possuir uma condição chamada compatibilidade de união.
Consideremos as relações R e S da Figura 2 para explicar e exemplificar as ope-
rações União, Interseção e Diferença. 
11AULA 4 - Banco de Dados
Figura 2 – Relações R e S que são compatíveis para união
 
A operação União, denotada por R ∪ S , tem como resultado uma relação que 
inclui todas as tuplas que estão em R, ou em S, ou em ambas as relações. Tuplas 
duplicadas são eliminadas. Observe o resultado da união de R ∪ S a seguir:
 
A operação Interseção, denotada por R ∩ S, tem como resultado uma relação 
que inclui todas as tuplas que estão nas duas relações - R e S, conforme você pode 
observar no resultado a seguir:
 
A operação Diferença, denotada por R - S, tem como resultado uma relação que 
inclui todas as tuplas que estão em R, mas não estão em S, conforme você pode 
observar no resultado a seguir:
 
12AULA 4 - Banco de Dados
As operações União e Interseção são comutativas, enquanto a Diferença não é 
comutativa.
Atenção 
Não deixe de assistir à videoaula “Operações da Álgebra Relacional 
– Seleção, Projeção e Junção”, com a professora Elisângela Botelho 
Gracias, na qual há uma explicação sobre algumas operações da Álgebra 
Relacional.
13AULA 4 - Banco de Dados
REFERÊNCIAS
ELMASRI, R.; NAVATHE, S. Sistemas de banco de dados. 7. ed. São Paulo: Pearson, 
2018.
HEUSER, A. C. Projeto de banco de dados. 6. ed. Porto Alegre: Bookman, 2009.
	ÁLGEBRA RELACIONAL
	Operação Seleção
	Operação Projeção
	Sequência de Operações
	Operação Produto Cartesiano
	Operação Junção
	Operações da Teoria de Conjuntos
	REFERÊNCIAS

Mais conteúdos dessa disciplina