Buscar

AlgebraRelacional_Parte1_Corrigido

Prévia do material em texto

Fundamentos de Banco de 
Dados 
Álgebra Relacional
Profa.: Luana Dantas Chagas
 2
Modelo Relacional
Modelos de dados determinam como dados devem ser 
estruturados.
E quais as formas de manipulação e recuperação 
desses.
 3
Modelo Relacional
Dentre os modelos de dados, está o modelo relacional.
Que estabelece um banco de dados como uma coleção 
de relações.
{P01, Maçã, 11.98}
{P02, Amaciante, 5.86}
{P03, Sabão em pó, 12.4}
{P04, Farinha, 5.99}
 4
Modelo Relacional
O modelo foi desenvolvido na década de 60 e proposto 
pelo pesquisador da IBM Edgar Frank Codd.
A idéia era deixar os dados independentes dos códigos 
das implementações.
 5
Modelo Relacional
● Para criar seu modelo, Codd se baseou na:
→ Teoria dos conjuntos;
→ Lógica de predicado de primeira ordem.
● A base do modelo dizia que:
Dada um coleção de conjuntos D
1
, D
2
, …, D
n
, R é uma 
relação sobre esses conjuntos se ela é um conjunto 
de n-tuplas ordenadas <d
1
, d
2
, …, d
n
>, tal que d
1
 
pertence a D
1
, d
2
 pertence a D
2
, …, d
n
 pertence a D
n
.
 6
Modelo Relacional
● Por exemplo, considere os seguintes conjuntos:
● Deles, pode-se ter, por exemplo, a relação Estudante:
COD NOME CIDADE
C1 Fernanda Angicos
C3 José Caicó
C6 Marta Caicó
 7
Modelo Relacional
● Comumente, “no mundo dos bancos de dados”, 
considera-se relação e tabela como sinônimos.
● Porém, relações são conjuntos matemáticos, e não 
possuem dados duplicados ou ordenação entre atributos.
● Já as tabelas dos SGBDs possuem...
 8
Modelo Relacional
● Relações (ou tabelas) possuem atributos, cujos valores 
pertencem a um domínio.
● E são compostas por tuplas (ou linhas), que 
correspondem aos registros guardados no banco.
ID Nome Curso
A01 Ana Ferreira BSI
A02 Fernando de Castro LCI
A03 Fátima Bezerra BSI
A04 Luciana Almeida LCI
Atributo
Registro
 9
Modelo Relacional
● Codd estabeleceu propriedades para as relações:
● Cada relação deve ter um nome distinto.
● Cada atributo deve ter um nome distinto.
● Cada tupla deve ser distinta.
● Os valores dos atributos devem pertencer ao mesmo 
domínio.
● A ordem das tuplas é irrelevante.
● A ordem dos atributos é irrelevante.
 10
Modelo Relacional
● Codd estabeleceu ainda que:
● O número de atributos da relação determina seu grau.
● O número de tuplas da relação determina sua 
cardinalidade.
COD NOME CIDADE
C1 Fernanda Angicos
C3 José Caicó
C6 Marta Caicó
3 atributos → grau 3
3 tuplas→ cardi-
nalidade 3
 11
Exercício
● Considere a relação Conta:
a) Quais os atributos da relação?
b) Quais as tuplas da relação?
c) Quais os domínios dos atributos?
d) Qual o grau e a cardinalidade da relação?
e) Quais problemas podem ser identificados na relação?
número_conta nome_agência saldo
A-101 Natal 500,00
A-215 Fortaleza 300,00
A-102 Recife 1 200,00
A-101 Natal 500,00
A-222 Natal 5 000,00
 12
Modelo Relacional
● Para definir uma relação, sem desenhá-la, utilizamos um 
esquema.
● Este é composto pelo nome da relação e seus atributos.
● Por exemplo, considere a tabela Aluno:
cod nome cidade
C1 Fernanda Angicos
C3 José Caicó
C6 Marta Caicó
 13
Modelo Relacional
● O esquema dessa relação será:
Aluno = (cod, nome, cidade)
ou
Aluno (cod, nome, cidade)
● Por convenção, o nome da tabela começa com letra 
maiúscula...
● E os nomes dos atributos com letra minúscula.
cod nome cidade
 14
Modelo Relacional
● Uma vez que tuplas precisam ser distintas, é preciso um 
atributo que as identifique unicamente.
● Tal atributo é denominado de chave primária.
● E tem como característica nunca ter valores repetidos.
 15
Modelo Relacional
● Por exemplo, considere a tabela Cidade:
● Perceba que todas as cidades têm o mesmo nome e 
código.
● Mas, devido a chave primária ID_Cidade, nenhuma linha 
é igual!
ID_Cidade Nome Código
PB01 Bom Jesus BJ
PI01 Bom Jesus BJ
RN01 Bom Jesus BJ
RS01 Bom Jesus BJ
SC01 Bom Jesus BJ
 16
Modelo Relacional
● É preciso ter cuidado ao definir qual atributo será chave 
primária!
● Pode-se pensar em atributos como nome, por exemplo...
● Mas, podemos ter pessoas com nomes exatamente 
iguais.
João da Silva
 17
Modelo Relacional
● É possível que um mesmo atributo apareça em 
diferentes relações.
● Eles permitem relacionar tuplas de diferentes tabelas.
● Por exemplo, considere as seguintes tabelas:
Conta (num_conta, cod_ag, saldo)
Agencia (cod_ag, cidade_ag)
Cliente (nome_cliente, endereço, num_conta)
 18
Modelo Relacional
● O atributo cod_ag aparece tanto nas tabelas Conta e 
Agência.
● Assim, é possível, por exemplo, descobrir a cidade de 
uma determinada conta.
Conta (num_conta, cod_ag, saldo)
Agencia (cod_ag, cidade_ag)
 19
Modelo Relacional
● Por exemplo, qual a cidade da conta de número 1375-9?
num_conta cod_ag saldo
1245-0 AvLeste 5 567,90
1375-9 PçBandeira 2 476, 21
1212-1 PçImperatriz 89,9
7634-8 AvLeste 12 788,87
cod_ag cidade_ag
AvLeste Angicos
PçBandeira Caicó
PçImperatriz Mossoró
AvLeste Angicos
 20
Modelo Relacional
● O atributo num_conta aparece nas tabelas Conta e 
Cliente.
● Assim, é possível, por exemplo, descobrir um endereço 
de um cliente com determinado saldo.
Conta (num_conta, cod_ag, saldo)
Cliente (nome_cliente, endereço, num_conta)
 21
Modelo Relacional
● Por exemplo, quais os endereços dos clientes que 
possuem mais de R$ 10 mil de saldo?
num_conta cod_ag saldo
1245-0 AvLeste 5 567,90
1375-9 PçBandeira 2 476, 21
1212-1 PçImperatriz 89,9
7634-8 AvLeste 12 788,87
nome_cliente endereco num_conta
Paulo Barros Angicos 1375-9
Mara Pessoa Caicó 1245-0
Feliciano da Silva Mossoró 7634-8
Odete Pereira Angicos 1212-1
 22
Modelo Relacional
● Quando uma chave primária aparece em outra tabela, 
denominamos de chave estrangeira.
● No caso, cod_ag é chave primária na tabela Agência e 
chave estrangeira na tabela Conta.
num_conta cod_ag saldo
1245-0 AvLeste 5 567,90
1375-9 PçBandeira 2 476, 21
1212-1 PçImperatriz 89,9
7634-8 AvLeste 12 788,87
cod_ag cidade_ag
AvLeste Angicos
PçBandeira Caicó
PçImperatriz Mossoró
AvLeste Angicos
 23
Álgebra Relacional
● Para manipular dados, Codd propôs a álgebra 
relacional.
A álgebra relacional consiste em um conjunto de operações 
que usam uma ou mais relações como entrada e 
produzem uma nova relação como resultado
 24
Álgebra Relacional
● A álgebra relacional disponibiliza nove operadores.
● Operadores derivados da teoria dos conjuntos:
● União
● Interseção
● Diferença 
● Produto cartesiano
 25
Álgebra Relacional
● E operadores relacionais especiais:
● Seleção
● Projeção
● Junção
● Renomeação
● Divisão
 26
Álgebra Relacional - Seleção
● A operação de seleção é unária.
● Ou seja, só recebe uma tabela como entrada. 
● Essa operação permite selecionar tuplas de uma 
relação que satisfazem um determinado predicado.
● O símbolo que representa a seleção é a letra grega 
sigma.
 27
Álgebra Relacional - Seleção
● A sintaxe da operação define-se por
σ
predicado
(relação)
● No predicado, utiliza-se símbolos de comparação.
● São eles:
= (igual)
≠ (diferente)
< (menor que)
> (maior que)
≤ (menor ou igual)
≥ (maior ou igual)
 28
Álgebra Relacional - Seleção
● A seleção retorna as tuplas que atendem a condição 
determinada no predicado.
● Com os mesmos atributos da relação de entrada.
 29
Álgebra Relacional - Seleção
● Considere a relação Aluno:
● Para retornar somente os alunos da Licenciatura em 
Computação faríamos:
σ
Curso = “LCI”
(Aluno)
Cod_aluno Nome Disciplina Nota Curso
A01 Ana Marques BD 8.8 BSI
A02 Breno Rocha BD 6.7 BSI
A03 Daniel Praxedes APII 9.1 LCI
A04 Mauro Mendonça APII 5.2 LCI
A05 Vera de Matos Lógica 6.5 LCI
 30
Álgebra Relacional - Seleção
● No caso, todas as tuplas são verificadas...
● … Buscando as que tem no atributo Curso o valor “LCI”.
Cod_aluno Nome Disciplina Nota Curso
A01 Ana Marques BD 8.8 BSI
A02 Breno Rocha BD 6.7 BSI
A03 Daniel Praxedes APII 9.1 LCI
A04 Mauro MendonçaAPII 5.2 LCI
A05 Vera de Matos Lógica 6.5 LCI
 31
Álgebra Relacional - Seleção
● E a operação retorna somente as linhas que atendem a 
condição.
● No caso, a tabela resultante será:
Cod_aluno Nome Disciplina Nota Curso
A03 Daniel Praxedes APII 9.1 LCI
A04 Mauro Mendonça APII 5.2 LCI
A05 Vera de Matos Lógica 6.5 LCI
 32
Álgebra Relacional - Seleção
● Suponha agora que deseja-se retornar somente os 
alunos cuja nota foi maior ou igual a 7.
● Para tal, fazemos:
σ
Nota ≥ 7
(Aluno)
Cod_aluno Nome Disciplina Nota Curso
A01 Ana Marques BD 8.8 BSI
A02 Breno Rocha BD 6.7 BSI
A03 Daniel Praxedes APII 9.1 LCI
A04 Mauro Mendonça APII 5.2 LCI
A05 Vera de Matos Lógica 6.5 LCI
 33
Álgebra Relacional - Seleção
● Novamente, a operação irá buscar as tuplas que 
atendem a condição:
● E retorna como resultado:
Cod_aluno Nome Disciplina Nota Curso
A01 Ana Marques BD 8.8 BSI
A02 Breno Rocha BD 6.7 BSI
A03 Daniel Praxedes APII 9.1 LCI
A04 Mauro Mendonça APII 5.2 LCI
A05 Vera de Matos Lógica 6.5 LCI
Cod_aluno Nome Disciplina Nota Curso
A01 Ana Marques BD 8.8 BSI
A03 Daniel Praxedes APII 9.1 LCI
 34
Álgebra Relacional - Seleção
● É possível, ainda, utilizar operadores conectivos como ^ 
(e) e v (ou).
● Através desses, é possível combinar condições no 
predicado.
● Por exemplo, podemos determinar uma consulta em que:
● Os alunos cursem o BSI;
● E tenham tirado nota maior ou igual a 7.
 35
Álgebra Relacional - Seleção
● Nesse caso, fazemos:
σ
Curso = “BSI” ^ Nota ≥ 7
(Aluno)
● A operação busca as linhas que satisfazem as 
condições:
Cod_aluno Nome Disciplina Nota Curso
A01 Ana Marques BD 8.8 BSI
A02 Breno Rocha BD 6.7 BSI
A03 Daniel Praxedes APII 9.1 LCI
A04 Mauro Mendonça APII 5.2 LCI
A05 Vera de Matos Lógica 6.5 LCI
 36
Álgebra Relacional - Seleção
● E retorna como resultado a tabela somente com essas 
tuplas:
σ
Curso = “BSI” ^ Nota ≥ 7
(Aluno)
Cod_aluno Nome Disciplina Nota Curso
A01 Ana Marques BD 8.8 BSI
 37
Álgebra Relacional - Seleção
● Outra situação possível é comparar os atributos de uma 
mesma relação.
● Considere a relação Empréstimo:
Nome_cliente Nome_banqueiro cod_emprestimo
Manoel Ananias Ana Beatriz EP01
Carlos Augusto Ana Beatriz EP02
Mateus Silva Augusto Lima EP03
Fátima Carlos Mateus Silva EP04
Patrícia Moreira Augusto Lima EP05
 38
Álgebra Relacional - Seleção
● Podemos criar uma consulta para saber se alguém 
banqueiro fez empréstimo para si próprio.
● Nesse caso, teremos que saber se há alguma linha em 
que o nome do cliente seja o mesmo nome do banqueiro.
● Para tal, fazemos:
σ
nome_cliente = nome_banqueiro
(Emprestimo)
 39
Álgebra Relacional - Seleção
● Para essa consulta, a operação retornará:
Nome_cliente Nome_banqueiro cod_emprestimo
Manoel Ananias Ana Beatriz EP01
Carlos Augusto Ana Beatriz EP02
Mateus Silva Augusto Lima EP03
Fátima Carlos Mateus Silva EP04
Patrícia Moreira Augusto Lima EP05
● Perceba que há um banqueiro que fez empréstimo, mas 
não a si mesmo:
Nome_cliente Nome_banqueiro cod_emprestimo
 40
Exercício
● Considere a relação Empregado:
● Determine operações da álgebra relacional para:
a)Retornar as tuplas cuja cidade seja Angicos.
b)Retornar as tuplas cujo o empregado seja estagiário.
c)Retornar as tuplas cuja cidade seja Angicos e o 
empregado tenha cargo de direção.
cod_emp nome_emp cidade cargo salario
CE01 Maria dos Santos Angicos Secretaria 1200
CE02 Ayrton Sales Caicó Estagiário 400
CE03 William Bento Tibau Porteiro 1000
CE04 João de Deus Angicos Diretor 4000
CE05 Ana Maria Matos Angicos Estagiário 400
 41
Exercício
d)Retornar as tuplas cujo salário do empregado seja maior 
que R$ 1500.
e)Retornar as tuplas cujo salário do empregado seja maior 
que R$ 600 e menor que R$1500.
f)Retornar as tuplas cuja cidade seja Caicó ou Tibau.
cod_emp nome_emp cidade cargo salario
CE01 Maria dos Santos Angicos Secretaria 1200
CE02 Ayrton Sales Caicó Estagiário 400
CE03 William Bento Tibau Porteiro 1000
CE04 João de Deus Angicos Diretor 4000
CE05 Ana Maria Matos Angicos Estagiário 400
 42
Álgebra Relacional - Projeção
● A operação de projeção é unária.
● Essa operação permite selecionar somente atributos 
determinados na lista de atributos.
● Ou seja, a projeção é feita com base nas colunas!
● Caso alguma linha da tabela resultante esteja duplicada, 
ela é ignorada. 
 43
Álgebra Relacional - Projeção
● O símbolo que representa a projeção é a letra grega pi.
● A sintaxe da operação define-se por
Л
lista de atributos
(relação)
na lista de atributos, os nomes são separados por 
vírgula.
 44
Álgebra Relacional - Projeção
● São selecionadas para a tabela resultante somente as 
colunas determinadas na lista de atributos.
OBS: perceba que na projeção não é possível utilizar 
restrições como <, >, =, entre outros.
 45
Álgebra Relacional - Projeção
● Considere a relação Aluno:
● Para retornar somente os nomes dos alunos, fazemos: 
Л
Nome
(Aluno)
Cod_aluno Nome Disciplina Nota Curso
A01 Ana Marques BD 8.8 BSI
A02 Breno Rocha BD 6.7 BSI
A03 Daniel Praxedes APII 9.1 LCI
A04 Mauro Mendonça APII 5.2 LCI
A05 Vera de Matos Lógica 6.5 LCI
 46
Álgebra Relacional - Projeção
● A operação buscará somente pelo atributo determinado:
Cod_aluno Nome Disciplina Nota Curso
A01 Ana Marques BD 8.8 BSI
A02 Breno Rocha BD 6.7 BSI
A03 Daniel Praxedes APII 9.1 LCI
A04 Mauro Mendonça APII 5.2 LCI
A05 Vera de Matos Lógica 6.5 LCI
● E retornará as tuplas somente desse atributo:
Nome
Ana Marques
Breno Rocha
Daniel Praxedes
Mauro Mendonça
Vera de Matos
 47
Álgebra Relacional - Projeção
● Considere, ainda, a tabela Aluno:
● Para retornar somente os nomes dos alunos e seus 
respectivos cursos, fazemos: 
Л
Nome, Curso
(Aluno)
Cod_aluno Nome Disciplina Nota Curso
A01 Ana Marques BD 8.8 BSI
A02 Breno Rocha BD 6.7 BSI
A03 Daniel Praxedes APII 9.1 LCI
A04 Mauro Mendonça APII 5.2 LCI
A05 Vera de Matos Lógica 6.5 LCI
 48
Álgebra Relacional - Projeção
● A operação buscará pelo nome e curso em cada tupla:
Cod_aluno Nome Disciplina Nota Curso
A01 Ana Marques BD 8.8 BSI
A02 Breno Rocha BD 6.7 BSI
A03 Daniel Praxedes APII 9.1 LCI
A04 Mauro Mendonça APII 5.2 LCI
A05 Vera de Matos Lógica 6.5 LCI
● E retornará as tuplas somente desses atributos:
Nome Curso
Ana Marques BSI
Breno Rocha BSI
Daniel Praxedes LCI
Mauro Mendonça LCI
Vera de Matos LCI
 49
Álgebra Relacional - Projeção
● É possível combinar operações da álgebra relacional!
● Pois uma operação retorna uma tabela que servirá de 
entrada para outra.
● Por exemplo, considere a tabela Aluno mais uma vez:
Cod_aluno Nome Disciplina Nota Curso
A01 Ana Marques BD 8.8 BSI
A02 Breno Rocha BD 6.7 BSI
A03 Daniel Praxedes APII 9.1 LCI
A04 Mauro Mendonça APII 5.2 LCI
A05 Vera de Matos Lógica 6.5 LCI
 50
Álgebra Relacional - Projeção
● Considere que devemos retornar os nomes dos 
alunos que tiraram nota acima de 8.
● Como queremos somente a coluna nome, precisamos 
realizar uma projeção!
● E como queremos a restrição da nota ser >8, precisamos 
realizar uma seleção!
● Assim, combinaremos as duas operações.
 51
Álgebra Relacional - Projeção
● Primeiro, usamos a seleção para filtrar as linhas cuja 
nota seja acima de 8.
● E, na tabela resultante, aplicamos a projeção.
● No caso, a operação será:
Πnome
(σnota>8
( Aluno)
)
 52
Álgebra Relacional - Projeção
● A operação é realizada de cima para baixo, da direita 
para a esquerda.
● Portanto, primeiro é executada a operação:
Πnome
(σnota>8
( Aluno)
)
σnota>8
(Aluno )
 53
Álgebra Relacional - Projeção
● Na tabela resultante, é executado:
Πnome
Cod_aluno Nome Disciplina Nota Curso
A01 Ana Marques BD 8.8 BSI
A02 Breno Rocha BD 6.7 BSI
A03 Daniel Praxedes APII 9.1 LCI
A04 Mauro Mendonça APII 5.2 LCI
A05 Vera de Matos Lógica 6.5 LCI
● Representando com ''figuras'', teríamos:
Πnome
σnota>8( )
( )
 54
Álgebra Relacional - Projeção
Cod_alun
o
Nome Disciplina Nota Curso
A01Ana Marques BD 8.8 BSI
A02 Breno Rocha BD 6.7 BSI
A03 Daniel Praxedes APII 9.1 LCI
A04 Mauro Mendonça APII 5.2 LCI
A05 Vera de Matos Lógica 6.5 LCI
● A operação busca somente as linhas que satisfazem a 
condição:
Πnome
σnota>8( )
( )
 55
Álgebra Relacional - Projeção
Cod_aluno Nome Disciplina Nota Curso
A01 Ana Marques BD 8.8 BSI
A03 Daniel Praxedes APII 9.1 LCI
● E as retorna como resultado:
Πnome
( )
● Enfim, a última operação é executada e retorna a 
seguinte tabela:
Nome
Ana Marques
Daniel Praxedes
 56
Álgebra Relacional - Projeção
● Ainda na tabela Aluno, podemos escrever uma operação 
para retornar os códigos e nomes dos alunos da LCI.
● Nesse caso, faremos:
● E teremos como resultado:
CodAluno Nome
A03 Daniel Praxedes
A04 Mauro Mendonça
A05 Vera de Matos
ΠcodAluno ,nome
(σcurso =LCI
( Aluno)
)
 57
Exercício
● Considere a relação Empregado:
● Determine operações da álgebra relacional para:
a) Retornar os nomes dos funcionários.
b) Retornar os nomes e cidades dos funcionários.
c) Retornar as linhas em que o salário é menor que 1 000.
cod nome sexo cidade cargo salario admissão
E01 Maria F Angicos Secretaria 1200 2006
E02 Ayrton M Caicó Estagiário 400 2012
E03 William M Tibau Porteiro 1000 2016
E04 João M Angicos Diretor 4000 2002
E05 Ana F Angicos Estagiário 400 2000
 58
Exercício
d) Retornar as cidades que têm funcionários ganhando 
mais de 5 mil.
e) Retornar os nomes dos empregados que estão na 
empresa a mais de 5 anos.
f) Retornar os códigos e nomes dos funcionários que são 
da cidade de Mossoró e ganham mais de 2 mil. 
cod nome sexo cidade cargo salario admissão
E01 Maria F Angicos Secretaria 1200 2006
E02 Ayrton M Caicó Estagiário 400 2012
E03 William M Tibau Porteiro 1000 2016
E04 João M Angicos Diretor 4000 2002
E05 Ana F Angicos Estagiário 400 2000
 59
Exercício
● Dada a relação descrita abaixo, determine uma operação 
da álgebra relacional para:
Pedidos (numero, data, valor, frete, CPF_cliente)
a) Retornar os CPFs de todos os clientes.
b) Retornar as linhas cujo valor do pedido foi maior que R$ 
500.
c) Retornar as datas dos pedidos cujo frete foi menor que 
RS 9,99.
d) Retornar os CPFs dos clientes e valores dos pedidos 
que foram realizados após 20/02/2002 e o frete foi maior 
que R$ 150.
 60
Álgebra Relacional - União
● O operador de união trata-se de uma operação binária.
● Essa operação cria uma relação a partir de outras 
duas, unindo suas tuplas (sem duplicações).
● O símbolo que representa a operação é a letra U.
● E a sintaxe da relação se dá por:
relação1 U relação2
 61
Álgebra Relacional - União
● Para que duas relações sejam unidas elas precisam ser 
compatíveis.
● Ou seja, o número e tipo de atributos precisam ser os 
mesmos.
 62
Álgebra Relacional - União
● Por exemplo, considere as tabelas Professor e Aluno:
● Essas tabelas são compatíveis e podem ser unidas, 
resultando em:
Professor
Cod Nome
P01 Ricardo
P02 Bruna
P03 Marcelo
Aluno
Cod Nome
A01 Pâmela
A02 Carolina
A03 Rafael
Professor
Cod Nome
P01 Ricardo
P02 Bruna
P03 Marcelo
Cod Nome
P01 Ricardo
P02 Bruna
P03 Marcelo
A01 Pâmela
A02 Carolina
A03 Rafael
 63
Álgebra Relacional - União
● Agora considere a tabela FilialFortaleza:
● E a tabela FilialNatal:
Cod Nome Sexo Cargo
FF01 Patrícia Bueno F Diretora
FF02 Tales Lacerda M Secretário
FF03 José Borges M Advogado
Cod Nome Cargo
FN01 Álvaro Segundo Vice-diretor
FN02 Gustavo Félix Porteiro
FN03 Fernanda Nunes Supervisora
 64
Álgebra Relacional - União
● Não é possível unir as tabelas, pois são incompatíveis.
● Sua união causaria um problema:
Cod Nome Sexo Cargo
FF01 Patrícia Bueno F Diretora
FF02 Tales Lacerda M Secretário
FF03 José Borges M Advogado
FN01 Álvaro Segundo Vice-diretor
FN02 Gustavo Félix Porteiro
FN03 Fernanda Nunes Supervisora
 65
Álgebra Relacional - União
● Considerando as tabelas FilialNatal e FilialFortaleza é 
possível, no entanto, unir atributos selecionados.
● Por exemplo, podemos unir os nomes dos funcionários:
Nome
Patrícia Bueno
Tales Lacerda
José Borges
Álvaro Segundo
Gustavo Félix
Fernanda Nunes
Πnome
(FilialNatal )U Πnome
(FilialFortaleza )
 66
Álgebra Relacional - União
● As tabelas podem ser unidas, mesmos que os nomes 
dos atributos sejam diferentes.
● Por exemplo, considere as tabelas Vendedor e Gerente:
Vendedor
Cod Nome
V01 Miguel Muriel
V02 Jordana Carlos
V03 Lucas Correia
Gerente
Codigo NomeCompleto
G01 Leticia Coelho
G02 Ana França
G03 Marcos Ribeiro
 67
Álgebra Relacional - União
● Como as tabelas possuem os mesmos números de 
atributos e domínios, podem ser unidas.
● Por convenção, adota-se os nomes dos atributos da 
primeira tabela. Assim:
Cod Nome
V01 Miguel Muriel
V02 Jordana Carlos
V03 Lucas Correia
G01 Leticia Coelho
G02 Ana França
G03 Marcos Ribeiro
VendedorUGerente
 68
Exercício
● Considere as tabelas 2017_1 e 2017_2:
2017_1
Cod Nome Nota
A01 Breno Mercedes 9.9
A02 Laís Padilha 7.2
A08 Jorge Navarro 5.4
2017_2
Cod Nome Nota
A01 Breno Mercedes 9.2
A05 Mário Pires 2.7
A09 Glória Furtado 7.6
● Escreva um comando para retornar:
a) O nome de todos os alunos. Qual será o resultado?
b) Os nomes dos alunos aprovados.
c) Os nomes dos alunos que passaram no semestre 
2017_1 junto com os que reprovaram em 2017_2.
 69
Exercício
● Considere as seguintes tabelas:
Professor (codigo, nome, cidade, titulação, anoNasc)
Disciplina (codigo, nome, horário, professor)
Aluno (codigo, nome, cidade)
● Determine operações da álgebra relacional para retornar:
a) Os professores e alunos que moram em Lajes.
b) Os professores que são doutores ou que lecionam a 
disciplina de banco de dados. 
c) Os professores que são doutores e tem menos de 30 
anos ou que lecionam a disciplina de APII.
 70
Álgebra Relacional - Diferença
● A operação de diferença é binária.
● E permite encontrar tuplas que estão em uma 
relação, mas não estão em outra.
● Para tal, as relações precisam ser compatíveis.
● Caso alguma linha resultante esteja duplicada, ela é 
ignorada.
 71
Álgebra Relacional - Diferença
● Se os nomes dos atributos forem diferentes, adota-se os 
nomes da primeira tabela.
● O símbolo que representa a diferença é o mesmo da 
subtração matemática: - .
● A sintaxe da operação se dá por:
Relação1 – Relação2
 72
Álgebra Relacional - Diferença
● A operação verifica todas as tuplas e retorna as que 
estão na primeira tabela, mas não na segunda.
● Perceba que na segunda tabela há uma tupla que não 
está na primeira, mas essa não fará parte do resultado.
 73
Álgebra Relacional - Diferença
● Considere as tabelas Banco de Dados e Algoritmos:
Banco de Dados
Cod Nome
A01 Maria Santos
A02 Ayrton Sales
A03 William Bento
A04 Fátima Nobre
Algoritmos
Codigo Nome
A01 Maria Santos
A02 Ayrton Sales
A06 Pedro Pereira
● Por meio da diferença, podemos descobrir quais alunos 
estão cursando Banco de Dados, mas não estão 
cursando Algoritmos.
 74
Álgebra Relacional - Diferença
● Nesse caso, faremos:
Banco de Dados - Algoritmos
Cod Nome
A01 Maria Santos
A02 Ayrton Sales
A03 William Bento
A04 Fátima Nobre
Codigo Nome
A01 Maria Santos
A02 Ayrton Sales
A06 Pedro Pereira
● E teremos como resultado:
-
Cod Nome
A03 William Bento
A04 Fátima Nobre
 75
Álgebra Relacional - Diferença
● Para saber quem está em Algoritmos, mas não em 
Banco de Dados faríamos:
Algoritmos - Banco de Dados
Cod Nome
A01 Maria Santos
A02 Ayrton Sales
A03 William Bento
A04 Fátima Nobre
Codigo Nome
A01 Maria Santos
A02 Ayrton Sales
A06 Pedro Pereira
● E teremos como resultado:
-
Cod Nome
A06 Pedro Pereira
 76
Exercício
● Dadas as relações abaixo, determine operações da 
álgebra relacional para:
Correntista (codC, nome, cidade)
Depósito (codD, nomeCliente, conta, agencia, valor)
Emprestimo (codE, nomeCliente, valor)
a) Retornar os nomes de todos os correntistas.
b) Retornar as contas que receberam depósitos demais 
de 2 mil reais.
c) Retornar os nomes dos clientes que fizeram empréstimo 
ou depósito.
 77
Exercício
Correntista (codC, nome, cidade)
Depósito (codD, nomeCliente, conta, agencia, valor)
Emprestimo (codE, nomeCliente, valor)
d) Retornar os nomes dos clientes que fizeram 
empréstimo, mas não fizeram depósito.
e) Retornar os nomes dos clientes que possuem conta, 
mas não fizeram empréstimo de mais de mil reais.
f) Retornar os nomes dos clientes que não fizeram nem 
empréstimo nem depósito.
 78
Álgebra Relacional – Renomeação
● A renomeação é uma operação unária.
● Ela permite renomear relações ou atributos.
● Assim, tem como resultado a mesma relação de entrada, 
mas com a alteração de nomes.
● O símbolo que representa a operação é a letra grega ro 
(ρ).
 79
Álgebra Relacional – Renomeação
● A sintaxe da operação define-se por:
Ou...
ρnovoNome
(Relação )
ρnovoNomeAtributo1, novoNomeAtributo2. ..
(Relação )
 80
Álgebra Relacional – Renomeação
● Por exemplo, considere a relação Empresa:
● Para renomear a tabela para ''Organizações'', faríamos:
Codigo Nome
EMP01 Samsung
EMP02 Lego
EMP03 Subway
ρOrganizações
( Empresa)
 81
Álgebra Relacional – Renomeação
● Considere a relação Empresa novamente:
● Para renomear os atributos Código para ID e Nome para 
Marca, faríamos:
Codigo Nome
EMP01 Samsung
EMP02 Lego
EMP03 Subway
ρID , Marca
(Empresa)
 82
Álgebra Relacional – Renomeação
● Mais uma vez, considere a relação Empresa:
● Para renomear os atributos Código para ID e Nome para 
Marca, e também renomear a tabela para Organizações, 
faríamos:
Codigo Nome
EMP01 Samsung
EMP02 Lego
EMP03 Subway
ρOrganizações( ID,Marca)
(Empresa)
 83
Álgebra Relacional – Renomeação
● A renomeação é muito útil quando precisamos renomear 
resultados de operações.
● Por exemplo, considere a tabela Pessoas:
Pessoas (CPF, nome, cidade, anoNasc)
● Podemos escrever uma consulta para retornar:
● os nomes das pessoas da cidade de Angicos
● e que nasceram a partir de 1990. 
 84
Álgebra Relacional – Renomeação
● Nesse caso, teríamos:
● Para renomear a tabela resultante para Angicanos 
faríamos:
Πnome
(σcidade= ' ' Angicos ' '∧anoNasc>1990
( Pessoas)
)
ρAngicanos
(Π nome
(σ cidade=' ' Angicos' '∧anoNasc >1990
( Pessoas) )
)
 85
Exercício
● Considere as relações Empregado e Departamento 
descritas a seguir e determine comandos da álgebra 
relacional para:
Empregado (emp_id, nome, endereço, salário)
Departamento (dept_id, nome, qtdadeFunc, gerente)
a) Renomear a relação Empregado para Funcionário.
b) Retornar os nomes dos empregados que ganham mais 
de 10 mil. A relação resultante deve ser chamada de 
resultado.
c) Retornar os nomes dos empregados que são gerentes. 
 86
Contato:
luana.dantas@ufersa.edu.br
	Slide 1
	Slide 2
	Slide 3
	Slide 4
	Slide 5
	Slide 6
	Slide 7
	Slide 8
	Slide 9
	Slide 10
	Slide 11
	Slide 12
	Slide 13
	Slide 14
	Slide 15
	Slide 16
	Slide 17
	Slide 18
	Slide 19
	Slide 20
	Slide 21
	Slide 22
	Slide 23
	Slide 24
	Slide 25
	Slide 26
	Slide 27
	Slide 28
	Slide 29
	Slide 30
	Slide 31
	Slide 32
	Slide 33
	Slide 34
	Slide 35
	Slide 36
	Slide 37
	Slide 38
	Slide 39
	Slide 40
	Slide 41
	Slide 42
	Slide 43
	Slide 44
	Slide 45
	Slide 46
	Slide 47
	Slide 48
	Slide 49
	Slide 50
	Slide 51
	Slide 52
	Slide 53
	Slide 54
	Slide 55
	Slide 56
	Slide 57
	Slide 58
	Slide 59
	Slide 60
	Slide 61
	Slide 62
	Slide 63
	Slide 64
	Slide 65
	Slide 66
	Slide 67
	Slide 68
	Slide 69
	Slide 70
	Slide 71
	Slide 72
	Slide 73
	Slide 74
	Slide 75
	Slide 76
	Slide 77
	Slide 78
	Slide 79
	Slide 80
	Slide 81
	Slide 82
	Slide 83
	Slide 84
	Slide 85
	Slide 86