2. Sumário
• Álgebra Relacional
• Operações Adicionais de Álgebra Relacional
• Extensão às Operações da Álgebra Relacional
• Exercícios
3. Linguagens de Consulta
• Linguagem com que um utilizador pede informação a um BD
• Categorias de linguagens
• Procedimental
• Não-procedimental (ou declarativa)
• Linguagens formais:
• Álgebra relacional
• Cálculo relacional de tuplos
• Cálculo relacional de domínios
• Linguagens formais são a base teórica das linguagens de consulta
4. Álgebra Relacional
• Linguagem procedimental
• Seis operadores básicos:
• Seleção: 𝜎
• Projeção: 𝜋
• União: ∪
• Diferença entre conjuntos: −
• Produto cartesiano: ×
• Renomeação: 𝜌
• Os operadores aceitam uma ou duas relações como entradas e produzem
uma nova relação como resultado
5. Operação de Seleção
• Utilizada para selecionar um conjunto de tuplos de uma relação
• Notação: 𝜎𝑝 𝑟
• P é designado predicado de seleção
• Definido como: 𝜎p(r) = {t|t ∈ r and p(t)}
• Onde p é uma fórmula de cálculo proposicional composta por termos
ligados por ⋀ (e), ⋁ (ou) e (não)
• Cada termo é uma expressão que pode conter:
• Atributos da relação
• Constantes
• Operadores relacionais ≠, =, >, ≥, <, ≤
• Exemplo: 𝜎𝑎𝑔𝑒𝑛𝑐𝑖𝑎_𝑛𝑜𝑚𝑒="Campolide" (𝑐𝑜𝑛𝑡𝑎)
6. Operação de Seleção - Exemplo
• Relação r
• 𝜎𝐴=𝐵∧𝐷>5 𝑟 =?
A B C D
a a 1 7
a b 5 7
b b 12 3
b b 23 10
7. Operação de Seleção - Exemplo
• Relação r
• 𝜎𝐴=𝐵∧𝐷>5 𝑟 =?
A B C D
a a 1 7
a b 5 7
b b 12 3
b b 23 10
A B C D
a a 1 7
b b 23 10
8. Operação de Projeção
• Notação: 𝜋𝐴1,𝐴2,…,𝐴𝑘
(𝑟)
• Onde A1, A2 são nomes de atributos e r é o nome da relação
• O resultado é definido como a relação de k colunas obtidas
suprimindo as colunas que não estão listadas
• Linhas duplicadas são removidas do resultado (uma vez que as
relações são conjuntos)
• Exemplo: 𝜋𝑛𝑢𝑚𝑒𝑟𝑜_𝑐𝑜𝑛𝑡𝑎,𝑠𝑎𝑙𝑑𝑜(𝑐𝑜𝑛𝑡𝑎)
9. Operação de Projeção - Exemplo
• Relação r
• 𝜋𝐴,𝐶 𝑟 =?
A B C
a 10 1
a 20 1
b 30 1
b 40 2
10. Operação de Projeção - Exemplo
• Relação r
• 𝜋𝐴,𝐶 𝑟 =?
A B C
a 10 1
a 20 1
b 30 1
b 40 2
A C
a 1
a 1
b 1
b 2
11. Operação de Projeção - Exemplo
• Relação r
• 𝜋𝐴,𝐶 𝑟 =?
A B C
a 10 1
a 20 1
b 30 1
b 40 2
A C
a 1
a 1
b 1
b 2
A C
a 1
b 1
b 2
=
12. Operação de União
• Notação: 𝑟 ∪ 𝑠
• Definido como: 𝑟 ∪ 𝑠 = {t|t ∈ r or t ∈ s}
• Para que 𝑟 ∪ 𝑠 seja válido:
1. r e s devem ter mesma aridade (igual número de atributos);
2. Os atributos têm de ser compatíveis (valores de tipos compatíveis);
• Exemplo: obter lista de todos os clientes que sejam titulares de uma
conta ou de um empréstimo
𝜎𝑛𝑜𝑚𝑒_𝑐𝑙𝑖𝑒𝑛𝑡𝑒(𝑡𝑖𝑡𝑢𝑙𝑎𝑟) ∪ 𝜎𝑛𝑜𝑚𝑒_𝑐𝑙𝑖𝑒𝑛𝑡𝑒(𝑑𝑒𝑣𝑒𝑑𝑜𝑟)
13. Operação de União - Exemplo
• Relações r e s
• 𝑟 ∪ 𝑠 =?
A B
a 1
a 2
b 1
A B
a 2
b 3
r =
s =
14. Operação de União - Exemplo
• Relações r e s
• 𝑟 ∪ 𝑠 =?
A B
a 1
a 2
b 1
A B
a 1
a 2
b 1
b 3
A B
a 2
b 3
r =
s =
15. Operação de Diferença
• Notação: 𝑟 − 𝑠
• Definido como: 𝑟 − 𝑠 = {t|t ∈ r and t ∉ s}
• Para que 𝑟 − 𝑠 seja válido:
1. r e s devem ter mesma aridade (igual número de atributos);
2. Os atributos têm de ser compatíveis (valores de tipos compatíveis);
• Exemplo: obter lista de todos os clientes que sejam titulares de uma
conta mas não de um empréstimo
𝜎𝑛𝑜𝑚𝑒_𝑐𝑙𝑖𝑒𝑛𝑡𝑒 𝑡𝑖𝑡𝑢𝑙𝑎𝑟 − 𝜎𝑛𝑜𝑚𝑒_𝑐𝑙𝑖𝑒𝑛𝑡𝑒(𝑑𝑒𝑣𝑒𝑑𝑜𝑟)
16. Operação de Diferença - Exemplo
• Relações r e s
• 𝑟 − 𝑠 =?
A B
a 1
a 2
b 1
A B
a 2
b 3
r =
s =
17. Operação de Diferença - Exemplo
• Relações r e s
• 𝑟 − 𝑠 =?
A B
a 1
a 2
b 1
A B
a 1
b 1
A B
a 2
b 3
r =
s =
18. Operação de Produto Cartesiano
• Notação: 𝑟 × 𝑠
• Definido como: 𝑟 × 𝑠 = {tq|t ∈ r and q ∈ s}
• Para que 𝑟 × 𝑠 seja válido:
1. r e s devem ser disjuntos
• Se os artibutos s(R) e s(S) não forem disjuntos então é necessária a
aplicação de renomeação
19. Operação de Produto Cartesiano - Exemplo
• Relações r e s
• 𝑟 × 𝑠 =?
A B
a 1
b 2
C D E
a 10 x
b 10 x
b 20 y
c 10 y
r =
s =
20. Operação de Produto Cartesiano - Exemplo
• Relações r e s
• 𝑟 × 𝑠 =?
A B
a 1
b 2
A B C D E
a 1 a 10 x
a 1 b 10 x
a 1 b 20 y
a 1 c 10 y
b 2 a 10 x
b 2 b 10 x
b 2 b 20 y
b 2 c 10 y
C D E
a 10 x
b 10 x
b 20 y
c 10 y
r =
s =
21. Operação de Renomeação
• Permite nomear, e fazer referência a, resultados de expressões de álgebra
relacional
• Permite fazer referência a uma relação utilizando vários nomes
• Exemplo: ρ𝑋 𝐸 retorna a expressão E com o nome X
• Se uma expressão de álgebra relacional tem aridade n, então
ρ𝑋(𝐴1,𝐴2,…,𝐴𝑛) 𝐸
• Retorna o valor da expressão E sob o nome X, e com os atributos
renomeados para A1, A2, …, An
• ρ𝑡𝑖𝑡 𝑡𝑖𝑡𝑢𝑙𝑎𝑟 ⟶ 𝑡𝑖𝑡(𝑐𝑙𝑖𝑒𝑛𝑡𝑒_𝑛𝑜𝑚𝑒, 𝑐𝑜𝑛𝑡𝑎_𝑛𝑢𝑚𝑒𝑟𝑜)
• ρ𝑡𝑖𝑡(𝑐𝑙𝑛,𝑐𝑜𝑛) 𝑡𝑖𝑡𝑢𝑙𝑎𝑟 ⟶ 𝑡𝑖𝑡(𝑐𝑙𝑛 𝑐𝑜𝑛)
22. Composição de Operações
• Pode-se construir expressões compostas por múltiplas operações
• Exemplo: 𝜎𝐴=𝐶(𝑟 × 𝑠)
23. Composição de Operações
• Pode-se construir expressões compostas por múltiplas operações
• Exemplo: 𝜎𝐴=𝐶(𝑟 × 𝑠)
A B C D E
a 1 a 10 x
a 1 b 10 x
a 1 b 20 y
a 1 c 10 y
b 2 a 10 x
b 2 b 10 x
b 2 b 20 y
b 2 c 10 y
1) 𝑟 × 𝑠
24. Composição de Operações
• Pode-se construir expressões compostas por múltiplas operações
• Exemplo: 𝜎𝐴=𝐶(𝑟 × 𝑠)
A B C D E
a 1 a 10 x
a 1 b 10 x
a 1 b 20 y
a 1 c 10 y
b 2 a 10 x
b 2 b 10 x
b 2 b 20 y
b 2 c 10 y
1) 𝑟 × 𝑠
2)𝜎𝐴=𝐶
25. Composição de Operações
• Pode-se construir expressões compostas por múltiplas operações
• Exemplo:𝜎𝐴=𝐶(𝑟 × 𝑠)
A B C D E
a 1 a 10 x
a 1 b 10 x
a 1 b 20 y
a 1 c 10 y
b 2 a 10 x
b 2 b 10 x
b 2 b 20 y
b 2 c 10 y
1) 𝑟 × 𝑠
2)𝜎𝐴=𝐶
3)𝜎𝐴=𝐶(𝑟 × 𝑠)
A B C D E
a 1 a 10 x
b 2 b 10 x
b 2 b 20 y
26. Operações Adicionais
• São operações que não aumentam o poder expressivo da álgebra
relacional mas que simplificam consultas habituais
• Intersecção de conjuntos: ∩
• Junção natural: ⋈
• Divisão: ÷
• Atribuição: ⟵
27. Operação de Intersecção de Conjuntos
• Notação: 𝑟 ∩ 𝑠
• Definido como: 𝑟 ∩ 𝑠 = {t|t ∈ r and t ∈ s}
• Nota: 𝑟 ∩ 𝑠 = 𝑟 − (𝑟 − 𝑠)
• Para que 𝑟 ∩ 𝑠 seja válido:
1. r e s devem ter mesma aridade (igual número de atributos);
2. Os atributos têm de ser compatíveis (valores de tipos compatíveis);
• Exemplo: obter lista de todos os clientes que sejam simultaneamente
titulares de uma conta e de um empréstimo
𝜎𝑛𝑜𝑚𝑒_𝑐𝑙𝑖𝑒𝑛𝑡𝑒 𝑡𝑖𝑡𝑢𝑙𝑎𝑟 ∩ 𝜎𝑛𝑜𝑚𝑒_𝑐𝑙𝑖𝑒𝑛𝑡𝑒(𝑑𝑒𝑣𝑒𝑑𝑜𝑟)
28. Operação de Intersecção - Exemplo
• Relações r e s
• 𝑟 ∩ 𝑠 =?
A B
a 1
a 2
b 1
A B
a 2
b 3
r =
s =
29. Operação de Intersecção - Exemplo
• Relações r e s
• 𝑟 ∩ 𝑠 =?
A B
a 1
a 2
b 1
A B
a 2
A B
a 2
b 3
r =
s =
30. Operação de Junção Natural
• Notação: 𝑟 ⋈ 𝑠
• Sejam r e s relações nos esquemas R e S respetivamente. Então 𝑟 ⋈ 𝑠 é
uma relação no esquema 𝑅 ∪ 𝑆 obtida:
• Considerando cada par de tuplos tr de r e ts de s
• Se tr e ts têm o mesmo valor em cada um dos atributos em 𝑅 ∪ 𝑆, adicionar o tuplo t
ao resultado tal que:
• t tem o mesmo valor que tr em r;
• t tem o mesmo valor que ts em s.
• Exemplo:
• 𝑅 = 𝐴, 𝐵, 𝐶, 𝐷 , 𝑆 = 𝐸, 𝐵, 𝐷
• Esquema resultante = (𝐴, 𝐵, 𝐶, 𝐷, 𝐸)
• 𝑟 ⋈ 𝑠 = 𝜋𝑟.𝐴,𝑟.𝐵,𝑟.𝐶,𝑟.𝐷,𝑠.𝐸(𝜎𝑟.𝐵=𝑠.𝐵∧𝑟.𝐷=𝑠.𝐷(𝑟 × 𝑠))
31. Operação de Junção Natural - Exemplo
• Relações r e s
• 𝑟 ⋈ 𝑠 =?
A B C D
a 1 a x
b 2 c x
c 4 b y
a 1 c x
d 2 b y
B D E
1 x a
3 x b
1 x c
2 y d
3 y e
r = s =
32. Operação de Junção Natural - Exemplo
• Relações r e s
• 𝑟 ⋈ 𝑠 =?
A B C D
a 1 a x
b 2 c x
c 4 b y
a 1 c x
d 2 b y
A B C D E
a 1 a x a
a 1 a x c
a 1 c x a
a 1 c x c
d 2 b y d
B D E
1 x a
3 x b
1 x c
2 y d
3 y e
r = s =
33. Operação de Divisão
• Notação: 𝑟 ÷ 𝑠
• Sejam r e s relações nos esquemas R e S respetivamente onde:
• 𝑅 = (𝐴1, … , 𝐴𝑚, 𝐵1, … , 𝐵𝑛)
• 𝑆 = (𝐵1, … , 𝐵𝑛)
Então, 𝑟 ÷ 𝑠 é uma relação no esquema 𝑅 − 𝑆, tal que:
𝑟 ÷ 𝑠 = 𝑡 𝑡 ∈ 𝜋𝑅−𝑆 𝑡 ∧ ∀𝑢∈𝑠 𝑡𝑢 ∈ 𝑟
Onde 𝑡𝑢 representa a concatenação dos tuplos 𝑡 e 𝑢 resultando num único
tuplo
34. Operação de Divisão - Exemplo
• Relações r e s
• 𝑟 ÷ 𝑠 =?
A B
a 1
a 2
a 3
b 1
c 1
d 1
d 3
d 4
e 6
e 1
b 2
B
1
2
r = s =
35. Operação de Divisão - Exemplo
• Relações r e s
• 𝑟 ÷ 𝑠 =?
A B
a 1
a 2
a 3
b 1
c 1
d 1
d 3
d 4
e 6
e 1
b 2
A
a
b
B
1
2
r = s =
36. Operação de Divisão – Exemplo2
• Relações r e s
• 𝑟 ⋈ 𝑠 =?
A B C D E
a x a x 1
a x c x 1
a x c y 1
b x c x 1
b x c y 3
c x c x 1
c x c y 1
c x b y 1
D E
x 1
y 1
r = s =
37. Operação de Divisão – Exemplo2
• Relações r e s
• 𝑟 ⋈ 𝑠 =?
A B C D E
a x a x 1
a x c x 1
a x c y 1
b x c x 1
b x c y 3
c x c x 1
c x c y 1
c x b y 1
A B C
a x c
c x c
D E
x 1
y 1
r = s =
38. Operação de Atribuição
• A operação de atribuição (⟵) oferece uma forma conveniente de
expressar queries complexas.
• Escreve-se uma query como um programa sequencial composto por
• Um conjunto de atribuições
• Seguidos uma expressão cujo valor é o resultado da query
• A atribuição é sempre feita para uma variável de relação temporária
• Exemplo: podemos escrever 𝑟 ÷ 𝑠 como:
• 𝑡𝑒𝑚𝑝1 ⟵ 𝜋𝑅−𝑆 𝑟
• 𝑡𝑒𝑚𝑝2 ⟵ 𝜋𝑅−𝑆 𝑡𝑒𝑚𝑝1 × 𝑆 − 𝜋𝑅−𝑆,𝑆 𝑟
• 𝑟𝑒𝑠𝑢𝑙𝑡 = 𝑡𝑒𝑚𝑝1 − 𝑡𝑒𝑚𝑝2
• O resultado à direita de ⟵ é atribuído à variável de relação à esquerda de
⟵
39. Operações Estendidas
• Definimos operações adicionais que acrescentam poder expressivo à
algebra relacional e permitem definir operações como:
• Projeção generalizada
• Funções de agregação
40. Projeção Generalizada
• Estende a operação de projeção permitindo a utilização de
expressões aritméticas na lista de projeções
𝜋𝐹1,𝐹2,…,𝐹𝑛
𝐸
• 𝐸é qualquer expreção de álgebra relacional
• Cada 𝐹1, 𝐹2, … , 𝐹𝑛são expressões aritméticas envolvendo constantes e
atributos do esquema 𝐸
• Exemplo: Dada a relação
Credito_info(nome_cliente, limite, saldo_credito)
Descubra quanto pode ainda gastar cada pessoa.
𝜋𝑛𝑜𝑚𝑒_𝑐𝑙𝑖𝑒𝑛𝑡𝑒,𝑙𝑖𝑚𝑖𝑡𝑒−𝑠𝑎𝑙𝑑𝑜_𝑐𝑟𝑒𝑑𝑖𝑡𝑜(𝑐𝑟𝑒𝑑𝑖𝑡𝑜_𝑖𝑛𝑓𝑜)
41. Projeção Generalizada - Exemplo
• Relação r
• 𝜋𝐴,𝐶∗10 𝑟 =?
A B C
a 10 1
a 20 1
b 30 1
b 40 2
42. Projeção Generalizada - Exemplo
• Relação r
• 𝜋𝐴,𝐶∗10 𝑟 =?
A B C
a 10 1
a 20 1
b 30 1
b 40 2
A C*10
a 10
b 10
b 20
43. Funções de Agregação
• Funções de agregação aplicam-se a uma coleção de valores e
devolvem um único valor como resultado:
• avg: média dos valores
• min: mínimo dos valores
• max: máximo dos valores
• sum: soma dos valores
• count: número de valores
44. Operação de Agregação
• Operação de agregação em álgebra relacional
𝐺1,𝐺2,…,𝐺𝑛
𝒢𝐹1 𝐴1
,𝐹2 𝐴2
,…,𝐹𝑛 𝐴𝑛
𝐸
• 𝐸 é qualquer expressão de álgebra relacional
• 𝐺1, 𝐺2, … , 𝐺𝑛 é uma lista de atributos nas quais se quer agrupar (pode ser
vazio)
• Cada 𝐹𝑖 representa uma função de agregação
• Cada 𝐴𝑖 representa um nome de atributo
45. Operação de Agregação - Exemplo
• Relação r
• 𝒢𝑠𝑢𝑚 𝐶 𝑟 =?
A B C
a a 7
a b 7
b b 3
b b 10
46. Operação de Agregação - Exemplo
• Relação r
• 𝒢𝑠𝑢𝑚 𝐶 𝑟 =?
A B C
a a 7
a b 7
b b 3
b b 10
sum(C)
27
47. Operação de Agregação – Exemplo2
• Relação conta agrupado por agencia_nome
• 𝑎𝑔𝑒𝑛𝑐𝑖𝑎_𝑛𝑜𝑚𝑒𝒢𝑠𝑢𝑚(𝑠𝑎𝑙𝑑𝑜) 𝑐𝑜𝑛𝑡𝑎
agencia_nome conta_numero saldo
Lumiar A-102 400
Lumiar A-201 900
Amoreiras A-217 750
Amoreiras A-215 750
Campolide A-222 700
49. Operação de Agregação (cont.)
• O resultado da agregação não tem nome
• Pode-se utilizar a operação de renomeação para atribuir um nome
• Por conveniência, é permitida a renomeação como parte da operação de
agregação
𝑎𝑔𝑒𝑛𝑐𝑖𝑎_𝑛𝑜𝑚𝑒𝒢𝑠𝑢𝑚 𝑠𝑎𝑙𝑑𝑜 𝑎𝑠 𝑠𝑜𝑚𝑎_𝑠𝑎𝑙𝑑𝑜 𝑐𝑜𝑛𝑡𝑎
agencia_nome soma_saldo
Lumiar 1300
Amoreiras 1500
Campolide 700