Buscar

Álgebra Relacional

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 6 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 6 páginas

Prévia do material em texto

1 
Cliquez pour modifier le style du titre 
Banco de Dados 
Álgebra Relacional 
Profa. Vaninha Vieira 
(vaninha@dcc.ufba.br) 
Salvador, Jun/2013 
Universidade Federal da Bahia 
Instituto de Matemática 
Departamento de Ciência da Computação 
MATA60 – Banco de Dados 
2 
Créditos: Parte dos slides utilizados nesta apresentação foram adaptados 
dos slides do Livro do Elmasri & Navathe, 2011 – 6a Edição. 
3 
Referências 
§  Esses slides são uma composição de aulas e 
apostilas dos seguintes professores (disponíveis na 
Internet) 
•  Aulas 
§ Prof. Alexander Roberto Valdameri 
§ Profa. Jiani Cardoso 
•  Apostila 
§ Prof. Antonio Cesar de Barros Munari 
4 
§  Compreendendo  álgebra  relacional  é  mais  fácil  
apreender  SQL;	
§  SQL  incorpora  cada  vez  mais  conceitos  de  álgebra;	
§  Algoritmos  de  otimização  de  consulta  definidos  sobre  
álgebra  (possível  uso  internamente  no  SGBD)	
§  Álgebra  desenvolvida  para  descrever  operações  sobre  
uma  base  de  dados  relacional	
§  Os  objetos  sobre  os  quais  a  álgebra  opera  são  tabelas	
§  Uma  operação  possui  como  operandos  e  como  resultado  
tabelas	
	
§         Porque  aprender:  	
Algebra  Relacional	
5 
Operações da Álgebra Relacional 
6 
Relações de Dados 
Nome_agencia Nro_emprestimo Total 
Timbo 17 1000 
Indaial 23 2000 
Blumenau 15 1500 
Pomerode 93 500 
Gaspar 11 900 
Blumenau 16 1300 
Nome_Cliente Nro_emprestimo 
Jonas 17 
Silvio 23 
Henrique 15 
Carlos 93 
Silvio 11 
William 17 
Adalberto 16 
emprestimos devedores 
Nome_Cliente Nro_conta 
Jonas 11111 
Silvio 22222 
Henrique 33333 
Jackson 44444 
contas R
A B C
a b c
d a f
c b d
S
D E F
b g a
d a f
2 
7 
Operação de Seleção (SELECT) 
§  Seleciona de uma tabela, as linhas que 
satisfazem a um determinado predicado 
§  σF (R) 
Ex. σnome_agencia = “Blumenau” (emprestimo) 
 
Nome_agencia Nro_emprestimo Total 
Blumenau 15 1500 
Blumenau 16 1300 
SELECT nome_agencia, nro_emprestimo, total 
FROM emprestimo 
WHERE nome_agencia = ‘Blumenau’ 
A condição F pode envolver 
⇒ operandos constantes 
ou número de componente 
( $i ) 
⇒ operadores aritméticos 
de comparação ( <, =, >, ≤, 
≠, ≥ ) 
⇒ operadores lógicos ( ∧, 
∨, ¬ ) ( e, ou, não ) 
8 
Operação de Projeção (PROJECT) 
§  Seleciona uma lista de colunas de uma tabela 
§  Πi1, i2, ..., in(R) 
Ex. Π nro_emprestimo, total (emprestimo) 
 
SELECT nro_emprestimo, total 
FROM emprestimo 
Nro_emprestimo Total 
17 1000 
23 2000 
15 1500 
93 500 
11 900 
16 1300 
9 
Operação de Projeção 
§  Operação de projeção com comparação. 
Ex. Π nro_emprestimo(σnome_agencia = “Blumenau” (emprestimo)) 
 
SELECT nro_emprestimo 
FROM emprestimo 
WHERE nome_agencia = ‘Blumenau’ 
Nro_emprestimo 
15 
16 
10 
•  O  resultado  é  uma  tabela  cuja  linhas  são  a  combinação  
das  linhas  das  tabelas  R  e  S    tomando-­‐‑se  uma  linha  de  
R  e  concatenando-­‐‑a  com  uma  linha  de  S	
Operação  Produto  Cartesiano	
R × S 
Peça 
CodPeça NomePeça CorPeça PesoPeça CidadePeça 
P1 Eixo Cinza 10 Porto Alegre 
P2 Rolamento Preto 16 Santa Maria 
P3 Mancal Verde 30 Uruguaiana 
 
Embarq 
CodPeça CodFornec QtidEmbarq 
P1 F1 300 
P1 F2 400 
P1 F3 200 
P2 F1 300 
P2 F4 350 
 
§ Total  de  colunas  do  produto  cartesiano:  	
•   nº  colunas  da  primeira  tabela  +  nº  de  
colunas  da  segunda  tabela	
•  6  +  3  =  9  colunas	
§ Nº  de  linhas  do  produto  cartesiano:  	
•  Nº  de  linhas  da  primeira  tabela  x  nº  
de  linhas  da  segunda  tabela.    	
•  500  x  600  =  30.000  linhas	
X 
Y 
1 
2 
3 
X 
X1 
X2 
X3 
Y1 
Y2 
Y3 
= 
11 
  π  NomePeça	
            (σ  Embarq.  CodPeça=  Peça.  CodPeça	
                                              (Embarq  X  Peça)  )	
	
Exemplo  de  Produto  Cartesiano	
Obtenha  os  nomes  de  todas  as  peças  para  as  quais  há  embarques	
Peça 
CodPeça NomePeça CorPeça PesoPeça CidadePeça 
P1 Eixo Cinza 10 Porto Alegre 
P2 Rolamento Preto 16 Santa Maria 
P3 Mancal Verde 30 Uruguaiana 
 Embarq 
CodPeça CodFornec QtidEmbarq 
P1 F1 300 
P1 F2 400 
P1 F3 200 
P2 F1 300 
P2 F4 350 
 
NomePeça	
Eixo	
Rolamento	
Tabela  
Resultante	
12 
Ex. Π nome_cliente, nro_emprestimo, total 
 (σnome_agencia = “Blumenau” 
 (emprestimo ⋈ devedores)) 
σ    <criterio>      (<tabela1>  X  <tabela  2>))	
	
Operação  de  junção  (join)	
A  combinação  de  uma  operação  de  seleção  aplicada  sobre  uma  
operação  de  produto  cartesiano  é  usual  em  aplicações  de  BD.  É  através  
dela  que  dados  de  tabelas  relacionadas  são  associados.  	
Sintaxe:                                  
                                                            <tabela1>  |X|  <  criterio>  <  tabela2>	
A  junção  tem  como  operandos  duas  tabelas.  O  resultado  é  equivalente  a  
executar:	
SELECT nome_cliente, nro_emprestimo, total 
FROM emprestimo, devedores 
WHERE emprestimo.nro_emprestimo = devedores.nro_emprestimo 
 and nome_agencia = ‘Blumenau’ 
Nome_Cl
iente 
Nro_empre
stimo 
Total 
Henrique 15 1500 
Adalberto 16 1300 
3 
13 
Operação de Junção (Natural) 
§  Operação binária que permite combinar certas 
relações e um produto cartesiano dentro de 
uma operação. 
Operação implícita = 
igualdade dos atributos 
com mesmo nome. 
 
Cada par de atributos 
iguais dá origem a um 
único atributo, com o 
mesmo nome, no 
resultado 
R
A B C
a b c
d b c
b b f
c a d
S
B C D
b c d
b c e
a d b
A B C D
a b c d
a b c e
d b c d
d b c e
c a d b
R ⋈ S 
14 
§  A  álgebra  relacional  empresta  da  teoria  de  conjuntos  quatro  
operadores:  União,  Interseção,  Diferença  e  Produto  
Cartesiano	
§  Sintaxe  da  União:  <tabela>  1  ∪  <tabela>  2	
§  Sintaxe  da  Intersecção:  <tabela>  1  ∩  <tabela>  2	
§  Sintaxe  da  Diferença:  <tabela>  1  –  <tabela>  2	
§  Nos  três  casos,  a  operação  possui  duas  tabelas  como  
operando.  E  as  tabelas  devem  ser  compatíveis:	
§ Possuir  mesmo  número  de  colunas;  	
§ o  mesmo  domínio  para  cada  posição  da  lista  de  atributos;	
§ quando  os  nomes  das  colunas  forem  diferentes,  adota-­‐‑  se  
os  nomes  das  colunas  da  primeira  tabela.	
	
 	
 	
 	
	
Operações  da  teoria  de  conjuntos  	
15 
Operações  da  teoria  de  conjuntos   
R
A B C
a b c
d a f
c b d
S
D E F
b g a
d a f
R ∪ S
A B C
a b c
d a f
c b d
b g a
R - S
A B C
a b c
c b d
R ∩ S
A B C
d a f
União Intersecção Diferença 
16 
Operação de União 
§  Operação binária que permite unir dois conjuntos ou 
relações de dados 
§  Nesta operação, os conjuntos duplicados são 
eliminados. 
Ex. Π nome_cliente(devedores) ∪ Π nome_cliente(contas) 
 
Nome_Cliente 
Adalberto 
Carlos 
Henrique 
Jackson 
Jonas 
Silvio 
William 
SELECT nome_cliente 
 FROM devedores 
UNION 
SELECT nome_cliente 
 FROM contas 
 
17 
Operação de Interseção 
§  Permite encontrar conjuntos de dados comuns entre 
duas relações de dados. Nesta operação, os 
conjuntos duplicados são eliminados. 
Ex. Π nome_cliente(devedores) ∩ Π nome_cliente(contas) 
 
Nome_Cliente 
Henrique 
Jonas 
Silvio 
SELECT nome_cliente 
 FROM devedores 
INTERSECT 
SELECT nome_cliente 
 FROM contas 
 
18 
Operação de Diferença 
§  Permite encontrar conjuntos de dados que estão 
em uma relação e que não estão em outra. 
Ex. Π nome_cliente(devedores) – Π nome_cliente(contas) 
 
Nome_Cliente 
Adalberto 
Carlos 
William 
SELECT nome_cliente 
 FROM devedores 
MINUS 
SELECT nome_cliente 
 FROM contas 
 
4 
19 
Dom(nome)  =  varchar(30)	
Dom(idade)  =  int	
Dom(curso)  =  varchar(5)	
Dom(depto)  =  varchar(5)	
Aluno  é  compatível  com  Professor,	
mas  não  é  com  Funcionario.	
Ex:  	
Aluno  =  {  nome,  idade,  curso}  	
Professor  =  {  nome,  idade,  depto.}  	
Funcionario  =  {  nome,  depto,  idade}  	
	
Operaçãode  União	
20 
Aluno  =  {nome,  idade,  curso}	
    {Zeca,  25,  comput.	
      Zico,  21,  eletr.	
      Juca,  19,  odonto.	
      Tuca,  19,  comput.}	
	
Professor  =  {nome,  idade,  depto.}	
    {Ari,  35,  comput.	
      Wilma,  32,  eletr.	
      Zeca,  25,  comput.}	
  Aluno  ∪  Professor  =  {nome,  idade,  curso}	
    {  Zeca,  25,  comput.	
    Zico,  21,  eletr.	
    Juca,  19,  odonto.	
    Tuca,  19,  comput.	
    Ari,  35,  comput.	
    Wilma,  32,  eletr.  }	
	
Apresente uma relação com todos os alunos e também com todos os 
professores: 
Operação  de  União	
Tabela  
Resultante	
a  operação  de  UNIÃO  elimina  duplicatas,  mas  existem  SGBDs  (ex.:INGRES)  
que  permitem  que  o  usuário  determine  se  tuplas  duplicadas  devem  ser  
eliminadas  do  resultado  ou  não.	
21 
Aluno  =  {nome,  idade,  curso}	
{Zeca,  25,  comput.	
Zico,  21,  eletr.	
Juca,  19,  odonto.	
Tuca,  19,  comput.}	
	
Professor  =  {nome,  idade,  depto.}	
{Ari,  35,  comput.	
Wilma,  32,  eletr.	
Zeca,  25,  comput.}	
  Aluno  ∩  Professor  =  {nome,  idade,  curso}	
  {  Zeca,  25,  comput}	
	
	
Operação  de  Intersecção	
Apresente uma relação de todos os alunos que são professores 
há  operadores  de  álgebra  que  são  deriváveis  de  outros.  A  operação  de  
intersecção  é  derivável  de  união  e  diferença:	
A  ∩  B  =  A  –  (A  –  B)	
Operadores  derivados	
22 
Aluno  =  {nome,  idade,  curso}	
{Zeca,  25,  comput.	
Zico,  21,  eletr.	
Juca,  19,  odonto.	
Tuca,  19,  comput.}	
	
Professor  =  {nome,  idade,  depto.}	
{Ari,  35,  comput.	
Wilma,  32,  eletr.	
Zeca,  25,  comput.}	
  Aluno  -­‐‑  Professor  =  {nome,  idade,  curso}	
  {  Zico,  21,  eletr.	
  Juca,  19,  odonto.	
  Tuca,  19,  comput.}	
	
 Note-­‐‑se  que  a  DIFERENÇA  não  é  comutativa  !	
  Professor  -­‐‑  Aluno  =  {nome,  idade,  depto.}	
  {Ari,  35,  comput.	
  Wilma,  32,  eletr.}	
Operação  de  Diferença	
Apresente uma relação de todos os alunos que não são professores 
23 
Operação de Divisão 
§  Produz como resultado a projeção de 
todos os elementos da primeira tabela 
que se relacionam com todos os 
elementos da segunda tabela. 
X1 
X2 
X3 
Y1 
Y2 
Y3 
÷ 
X 
Y 
1 
2 
3 
= 
R
A B C D
a b c d
a b e f
b c e f
e d c d
e d e f
a b d e
S
E F
c d
e f
R/S
A B
a b
e d
S
E F
c d
e f
R/S
A B
a b
e d
(R/S) × S
A B E F
a b c d
a b e f
e d c d
e d e f
/ 
× 
= 
= 
24 
Explicação alternativa 
§  Forma de proceder à divisão 
•  reordenar as colunas de forma a que as últimas correspondam ao 
quociente 
•  ordenar a tabela pelas primeiras colunas 
•  cada subtupla das primeiras colunas pertence ao resultado se o 
conjunto de subtuplas das últimas colunas que lhe corresponde 
contiver o quociente 
R
A B C D
a b c d
e f
d e
b c e f
e d c d
e f
S
E F
c d
e f
R/S
A B
a b
e d
/ = 
5 
25 
Operação Renomear 
§  Utilizado para alterar o nome das colunas de uma tabela. 
Utilizado para relacionamentos onde possam surgir nomes 
iguais para as colunas, como num relacionamento da tabela 
com ela mesma. 
SELECT x AS a, y AS b, z AS c 
FROM R 
26 
Operações Atribuição 
Nome e sobrenome dos funcionários que pertencem ao 
departamento 002 e que entraram na empresa após 2010 
27 
Árvore de Expressões 
§  Pode-se combinar vários operadores da 
Álgebra Relacional em uma expressão, 
constituindo uma árvore de expressões. 
Ex. Π nome_cliente, nro_emprestimo, total 
 (σnome_agencia = “Blumenau” 
 (emprestimo ⋈ devedores)) 
SELECT nome_cliente, nro_emprestimo, total 
FROM emprestimo, devedores 
WHERE emprestimo.nro_emprestimo = devedores.nro_emprestimo 
 and nome_agencia = ‘Blumenau’ 
28 
Árvore de Expressões 
Π nome_cliente, nro_emprestimo, total 
 
 
σnome_agencia = “Blumenau” 
 
 ⋈ 
 
 
emprestimo devedores 
Plano lógico de consulta 
29 
Árvore de Expressões 
otimização 
Π nome_cliente, nro_emprestimo, total 
 
 
 ⋈ 
 
 
 
emprestimo devedores 
Plano lógico de consulta 
σnome_agencia = “Blumenau” 
30 
Exercícios 
Para os exercícios, 
considere 
as tabelas cargo, 
depto e 
funcionário 
6 
31 
Exercícios 
32 
Para casa 
§  Lista de exercícios disponível no site da disciplina 
(com gabarito) 
§  Próxima aula 
•  Laboratório Prático de Consultas em Álgebra 
Relacional 
•  Local: Lab Didático I – Sala 140 (IM)

Outros materiais