Base de Dados
Álgebra Relacional
2018/2019
Sumário
• Álgebra Relacional
• Operações Adicionais de Álgebra Relacional
• Extensão às Operações da Álgebra Relacional
• Exercícios
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
Á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
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" (𝑐𝑜𝑛𝑡𝑎)
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
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
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: 𝜋𝑛𝑢𝑚𝑒𝑟𝑜_𝑐𝑜𝑛𝑡𝑎,𝑠𝑎𝑙𝑑𝑜(𝑐𝑜𝑛𝑡𝑎)
Operação de Projeção - Exemplo
• Relação r
• 𝜋𝐴,𝐶 𝑟 =?
A B C
a 10 1
a 20 1
b 30 1
b 40 2
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
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
=
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
𝜎𝑛𝑜𝑚𝑒_𝑐𝑙𝑖𝑒𝑛𝑡𝑒(𝑡𝑖𝑡𝑢𝑙𝑎𝑟) ∪ 𝜎𝑛𝑜𝑚𝑒_𝑐𝑙𝑖𝑒𝑛𝑡𝑒(𝑑𝑒𝑣𝑒𝑑𝑜𝑟)
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 =
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 =
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
𝜎𝑛𝑜𝑚𝑒_𝑐𝑙𝑖𝑒𝑛𝑡𝑒 𝑡𝑖𝑡𝑢𝑙𝑎𝑟 − 𝜎𝑛𝑜𝑚𝑒_𝑐𝑙𝑖𝑒𝑛𝑡𝑒(𝑑𝑒𝑣𝑒𝑑𝑜𝑟)
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 =
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 =
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
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 =
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 =
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
• ρ𝑡𝑖𝑡 𝑡𝑖𝑡𝑢𝑙𝑎𝑟 ⟶ 𝑡𝑖𝑡(𝑐𝑙𝑖𝑒𝑛𝑡𝑒_𝑛𝑜𝑚𝑒, 𝑐𝑜𝑛𝑡𝑎_𝑛𝑢𝑚𝑒𝑟𝑜)
• ρ𝑡𝑖𝑡(𝑐𝑙𝑛,𝑐𝑜𝑛) 𝑡𝑖𝑡𝑢𝑙𝑎𝑟 ⟶ 𝑡𝑖𝑡(𝑐𝑙𝑛 𝑐𝑜𝑛)
Composição de Operações
• Pode-se construir expressões compostas por múltiplas operações
• Exemplo: 𝜎𝐴=𝐶(𝑟 × 𝑠)
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) 𝑟 × 𝑠
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)𝜎𝐴=𝐶
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
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: ⟵
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
𝜎𝑛𝑜𝑚𝑒_𝑐𝑙𝑖𝑒𝑛𝑡𝑒 𝑡𝑖𝑡𝑢𝑙𝑎𝑟 ∩ 𝜎𝑛𝑜𝑚𝑒_𝑐𝑙𝑖𝑒𝑛𝑡𝑒(𝑑𝑒𝑣𝑒𝑑𝑜𝑟)
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 =
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 =
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 = (𝐴, 𝐵, 𝐶, 𝐷, 𝐸)
• 𝑟 ⋈ 𝑠 = 𝜋𝑟.𝐴,𝑟.𝐵,𝑟.𝐶,𝑟.𝐷,𝑠.𝐸(𝜎𝑟.𝐵=𝑠.𝐵∧𝑟.𝐷=𝑠.𝐷(𝑟 × 𝑠))
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 =
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 =
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
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 =
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 =
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 =
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 =
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
⟵
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
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.
𝜋𝑛𝑜𝑚𝑒_𝑐𝑙𝑖𝑒𝑛𝑡𝑒,𝑙𝑖𝑚𝑖𝑡𝑒−𝑠𝑎𝑙𝑑𝑜_𝑐𝑟𝑒𝑑𝑖𝑡𝑜(𝑐𝑟𝑒𝑑𝑖𝑡𝑜_𝑖𝑛𝑓𝑜)
Projeção Generalizada - Exemplo
• Relação r
• 𝜋𝐴,𝐶∗10 𝑟 =?
A B C
a 10 1
a 20 1
b 30 1
b 40 2
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
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
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
Operação de Agregação - Exemplo
• Relação r
• 𝒢𝑠𝑢𝑚 𝐶 𝑟 =?
A B C
a a 7
a b 7
b b 3
b b 10
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
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
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
agencia_nome sum(saldo)
Lumiar 1300
Amoreiras 1500
Campolide 700
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

Base de Dados - Álgebra Relacional

  • 1.
    Base de Dados ÁlgebraRelacional 2018/2019
  • 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 • Linguagemprocedimental • 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 ProdutoCartesiano • 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 ProdutoCartesiano - 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 ProdutoCartesiano - 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ãooperaçõ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çãode 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çãoNatural • 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çãoNatural - 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çãoNatural - 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 • Definimosoperaçõ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 • Estendea 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
  • 48.
    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 agencia_nome sum(saldo) Lumiar 1300 Amoreiras 1500 Campolide 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