r – s

Propaganda
Álgebra Relacional
Prof.: José Antônio da Cunha
CEFET-RN
1
Modelo Relacional – Álgebra Relacional
• SELEÇÃO ()
–
–
–
–
Descrição: seleciona tuplas que satisfazem a um predicado
Entrada: uma relação R
Saída: uma relação R’, tal queR’R
Formato: 
(R)
<predicado de seleção>
AND , OR , NOT ,
, , , , , 
– Ex:

(ALUNO)
Nome‘João Azevedo’ AND N_matricula>1111111111
Bancos de Dados I – [email protected]
2
Seleção– Exemplo
• Tabela r
A=B ^ D > 5 (r)
A
B
C
D


1
7


5
7


12
3


23 10
A
B
C
D


1
7


23 10
Em SQL
Select * from R
where a=b and d>5
Bancos de Dados I – [email protected]
3
Modelo Relacional – Álgebra Relacional
• PROJEÇÃO ()
– Descrição: seleciona atributos de uma relação
– Entrada: uma relação R
– Formato: 
<lista de atributos>
(R)
– Ex:
 Nome, N_matricula (ALUNO)
 Nome, Data_nasc ( N_matricula>1111111111 (ALUNO))
Bancos de Dados I – [email protected]
4
Project– Exemplo
• Tabela r:
 A ,C
( R)
A
B
C

10
1

20
1

30
1

40
2
A
C

1

1

1

2
Em SQL
Select a, c from R
Bancos de Dados I – [email protected]
5
Esquema das operações
Bancos de Dados I – [email protected]
6
Modelo Relacional – Álgebra Relacional
• UNIÃO ()
– Descrição: reúne em uma única relação as tuplas das relações de
entrada
– Entrada: duas relações R1 e R2, compatíveis.
• Sejam duas relações de grau n, R1(A1, ..., An) e R2(B1, ..., Bn), se
dom(A1)=dom(B1), ..., dom(An)=dom(Bn), então R1 e R2 são
compatíveis.
– Saída: uma relação R’, tal que grau(R’) = grau(R1) = grau(R2) e
R’R1 e/ou R’R2
– Formato: R1  R2
Bancos de Dados I – [email protected]
7
União– Exemplo
• Tabelas r, s:
A
B
A
B

1

2

2

3

1
s
r
r  s:
A
B

1

2

1

3
Em SQL
Select a, b from R
Union all
Select a,b from S
Bancos de Dados I – [email protected]
8
Modelo Relacional – Álgebra Relacional
• DIFFERENÇA DE CONJUNTOS ()
– Descrição: seleciona as tuplas presentes na primeira relação e não
presentes na segunda
– Entrada: duas relações R1 e R2, compatíveis.
– Saída: uma relação R’, tal que grau(R’) = grau(R1) = grau(R2) e
R’R1
– Formato: R1  R2
– Ex:

(ALUNO)  
Nome
(PROFESSOR)
Nome
Bancos de Dados I – [email protected]
9
Diferença – Exemplo
• Tabelas r, s:
A
B
A
B

1

2

2

3

1
s
r
r – s:
A
B

1

1
Em SQL
Select a, b from R
minus
Select a, b from S
Bancos de Dados I – [email protected]
10
Modelo Relacional – Álgebra Relacional
• PRODUTO CARTESIANO ()
– Descrição: concatena as tuplas das relações de entrada de forma
combinatorial
– Entrada: duas relações R1(A1, ..., An) e R2(B1, ..., Bn), não
necessariamente compatíveis.
– Saída: uma relação R’(A1, ..., An, B1, ..., Bn), tal que
grau(R’) = grau(R1) + grau(R2) e R’=R1*R2
– Formato: R1  R2
– Obs: sem significado se aplicada isoladamente
– Ex:
ALUNO  PROFESSOR
Bancos de Dados I – [email protected]
11
Produto Cartesiano – Exemplo
Tabelas r, s:
A
B
C
D
E

1

2




10
10
20
10
+
+
–
–
r
s
r x s:
A
B
C
D
E








1
1
1
1
2
2
2
2








10
19
20
10
10
10
20
10
+
+
–
–
+
+
–
–
Em SQL
Select * from R,S
Bancos de Dados I – [email protected]
12
Operador relacional de DIVISÃO
COL1
COL2
COL2
COL1
A
1
2
C
B
1
3
A÷B
C
2
A
2
Tabela_B
B
3
C
3
A
4
B
4
C
5
Tabela_A
As linhas da Tabela A que não possuem correspondência com
todas as linhas da Tabela B serão excluídas.
Em SQL
Select distinct col1 from Tabela_A a
where not exists (select null from Tabela_B b
where not exists (select null
from Tabela_A
where col2=b.col2 and
a.col1=col1));
Bancos de Dados I – [email protected]
Operador relacional de RENOMEAR
Sintaxe
ρ<novo nome (R)
Exemplo
TB_ESTADO_CIVIL (estado_civil, descrição)
ρEA(cod,desc) (TB_ESTADO_CIVIL)
Em SQL
Select estdo_civil as cod, descrição as desc
from TB_ESTADO_CIVIL EA
Bancos de Dados I – [email protected]
Representação Gráfica
• Operadores Tradicionais
• União
Intersecção
Diferença
Bancos de Dados I – [email protected]
15
Representação Gráfica
• Operadores Tradicionais
• Produto Cartesiano
Bancos de Dados I – [email protected]
16
Representação Gráfica
• Operadores Relacionais
• Seleção
Projeção
Bancos de Dados I – [email protected]
17
Simbologia
•
•
•
•
•
União
Diferença
Prod. Cartesiano
Seleção
Projeção
• Junção
RS
R–S
RS
F (R)
 i1, i2, ..., im(R)
R⋈S
Bancos de Dados I – [email protected]
18
Modelo Relacional – Álgebra Relacional
FUNÇÕES DE AGREGAÇÃO ()
• Uma função de agregação tome uma coleção de valores e retorna um
único valor como resultado
avg: média
min: mínimo
max: máximo
sum: soma
count: número de valores
• Formato:
G1, G2, …, Gn
•
•
•
•
 F1( A1), …, Fn( An) (R)
R é uma relação
G1, G2 …, Gn é a lista de atributos de agrupamento (pode ser vazia)
Cada Fi é uma função de agregação
Cada Ai é um atributo
Bancos de Dados I – [email protected]
19
Funções agregadas – Exemplo
• Tabela r:
Sum c(r)
A
B
C








7
7
3
10
sum-C
27
Bancos de Dados I – [email protected]
20
Funções agregadas – Exemplo
• Tabela contas agrupada por branch-name (filial):
branch-name
Perryridge
Perryridge
Brighton
Brighton
Redwood
branch-name
account-number
balance
A-102
A-201
A-217
A-215
A-222
400
900
750
750
700
 sum balance (account)
branch-name
Perryridge
Brighton
Redwood
balance
1300
750
700
Bancos de Dados I – [email protected]
21
Exemplos
•
•
•
•
sum salario (trabalhador)
count nome_agencia(trabalhador)
Count-distinct nome_agencia(trabalhador)
Nome_agência G sum salario (trabalhador)
– Dividirá as tuplas de trabalhador em grupos, conforme os nomes
das agências
– Somará os valores dos salários de cada grupo
– Apresentará o resultado
Bancos de Dados I – [email protected]
22
Exercícios
empregado(RG, sexo,
dt_nasc,pnome,unome,rua,cida
de,estado,salario,dnum,supRG
)
supRG references
empregado(RG)
dnum references
departamento(dnum)
departamento(dnum,dnome,
gerRG,dt_inicio)
gerRG references
empregado(rg)
projeto (pnum,
pnome,localização,dnum)
dnum references
departamento(dnum)
dependente(dep_nome,dep_sexo,
dep_dt_nasc,empRG)
empRG references
empregado(RG)
trabalha_em(RG,pnum,horas)
RG references empregado(RG)
pnum references
projeto(pnum)
localizacao(localizacao,dnum)
dnum references
13. Retorne o nome do empregado e o
nome de cada projeto em que ele
trabalha
14. Retorne o nome dos empregados
que trabalham em algum projeto
controlado pelo departamento 5
15. Retorne o número de empregados
da empresa
16. Retorne o número do
departamento e o número de
empregados de CADA
departamento da empresa
17. Retorne o número do
departamento e a média do salário
dos empregados de CADA
departamento da empresa
18. Retorne o nome e o endereço de
todos os empregados que
trabalham no departamento
‘Pesquisa’
19. Para cada projeto localizado em
‘Londrina’, retorne o número do
projeto, o número do departamento
que o controla, o nome e sexo do
gerente do departamento
23
Download