0% acharam este documento útil (0 voto)
5 visualizações46 páginas

Algebra

O documento apresenta a álgebra relacional como um conjunto de operações fundamentais para manipulação de dados em bancos de dados relacionais. Ele detalha operações como Select, Project, Join, e suas variantes, além de discutir propriedades como encerramento e a importância de esquemas compatíveis. A álgebra relacional serve como base para a implementação e otimização de consultas em sistemas de gerenciamento de banco de dados (SGBDs).

Enviado por

carlos
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
5 visualizações46 páginas

Algebra

O documento apresenta a álgebra relacional como um conjunto de operações fundamentais para manipulação de dados em bancos de dados relacionais. Ele detalha operações como Select, Project, Join, e suas variantes, além de discutir propriedades como encerramento e a importância de esquemas compatíveis. A álgebra relacional serve como base para a implementação e otimização de consultas em sistemas de gerenciamento de banco de dados (SGBDs).

Enviado por

carlos
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd

BANCO DE DADOS

Álgebra Relacional

Versão dos Slides: 0.802

Prof. Dr.-Ing. Leonardo Andrade Ribeiro

INF-UFG, Goiânia
Álgebra Relacional
▪ Todo modelo de dados deve prover um conjunto básico de operações
para manipulação de dados
▪ O conjunto de operações para manipulação de dados do modelo
relacional é a álgebra relacional
▪ Toda operação possui recebe uma ou duas relações como entrada e o
resultado de cada operação é uma relação:
• Propriedade de encerramento (closure)
• Set-at-a-time
▪ Operações podem ser concatenadas formando uma expressão cujo
resultado é também uma relação
▪ Linguagem procedural: a ordem das operações deve ser especificada
• Um mesmo resultado pode ser produzido por diferentes sequências de
operações

Prof. Dr.-Ing. Leonardo Andrade Ribeiro 2


Álgebra Relacional
▪ Fundação formal para operações do modelo
relacional
▪ Provê uma base para implementação e
otimização de consultas em SGBDs (por
exemplo, SQL)

Prof. Dr.-Ing. Leonardo Andrade Ribeiro 3


Componentes da Álgebra
Relacional
▪ Categorias de operações
• Operações baseada na teoria dos conjuntos: União, Diferença, Interseção,
Produto Cartesiano
• Operações específicas para o modelo relacional: Select, Project, Join, etc
• Extensões: operações de agregação e agrupamento
▪ Operações podem ser unárias (uma relação de entrada) ou binárias (duas
relações de entrada)
▪ O resultado de toda operação é uma única relação
• Por convenção, o nome da relação resultante de uma operação op aplicada
sobre uma relação R é [Link]; no caso de uma operação binária op aplicada
sobre as relações R e S, o nome da relação resultante é [Link]
• Quando não for importante para a discussão, o nome da relação resultante
será omitido
• É possível nomear relações e atributos de saída e renomear relações
existentes

Prof. Dr.-Ing. Leonardo Andrade Ribeiro 4


A Operação Select (𝜎)
▪ Seleciona um subconjunto das tuplas de uma
relação que satisfazem a condição de seleção
▪ Interpretações:
• Filtro
• Particionamento horizontal da relação
▪ Notação: σ<condição de seleção> (R)
▪ Exemplo: σ<Salario > 30000> (Funcionario)

Prof. Dr.-Ing. Leonardo Andrade Ribeiro 5


A Operação Select (𝜎)
▪ Condição de seleção é um expressão Booleana
formada por um conjunto de cláusulas com o
seguinte formato:
<nome do atributo> <op de comparação> <constante>, ou
<nome do atributo> <op de comparação> <nome de atributo>
▪ Op de Comparação: {=, ≠, <, ≤, >, ≥}
▪ Conectivos: and, or, not
▪ Exemplo:
σ<(Dno = 4 AND Salario > 25000) OR (Dno = 5 AND Salario > 30000)>
(Funcionario)

Prof. Dr.-Ing. Leonardo Andrade Ribeiro 6


A Operação Select (𝜎)
▪ Operador unário
▪ Condição de seleção testada em cada tupla
individualmente
▪ Mantém o esquema da relação original
▪ Cardinalidade da relação resultante é menor ou igual
à cardinalidade da relação de entrada
• Obviamente, a cardinalidade será igual somente se todas
as tuplas satisfazerem a condição do SELECT
R R
x y x y x y x y
1 a 𝜎 𝑥=1 (𝑅) 1 a 1 a 𝜎 𝑦=𝑎 (𝑅) 1 a
1 b 1 b 1 b

Prof. Dr.-Ing. Leonardo Andrade Ribeiro 7


A Operação Project (𝜋)
▪ Interpretação:
• Seleção de atributos de uma relação
• Particionamento vertical da relação
▪ Notação: 𝜋<lista de atributos>(R)
▪ Exemplo: 𝜋<Fname, Lname, Salario>(Funcionario)
▪ O grau da relação resultante é igual ao número de
atributos na lista
• A ordem dos atributos na relação resultante
corresponderá à ordem especificada no PROJECT

Prof. Dr.-Ing. Leonardo Andrade Ribeiro 8


A Operação Project (𝜋)
▪ Se a lista de atributos formar pelo menos uma
superchave, então a cardinalidade da relação
resultante será igual à cardinalidade da relação
de entrada
▪ Caso contrário, tuplas duplicadas são eliminadas
• Evita que o resultado seja uma bag

R R
x y x x y y
1 a 𝜋 𝑥 (𝑅) 1 1 a 𝜋 𝑦 (𝑅) a
1 b 1 b b

Prof. Dr.-Ing. Leonardo Andrade Ribeiro 9


Sequência de Operações
▪ Uma sequência de operações pode ser
representada de diversas maneiras; duas delas são:
1. Uma única expressão de álgebra relacional
2. Usando resultados intermediários (nomeados)

1. 𝜋<Nome,Salario>(𝜎 𝐷𝑛𝑜=5 (Funcionario))

2. TEMP ← 𝜎 𝐷𝑛𝑜=5 (Funcionario) Melhor


RESULT ← π<Nome,Salario>(TEMP) legibilidade
Prof. Dr.-Ing. Leonardo Andrade Ribeiro 10
Renomeando Relações e Atributos
▪ Para facilitar legibilidade podemos renomear
relações e atributos
▪ 𝑅𝑒𝑠𝑢𝑙𝑡𝑎𝑑𝑜 ← 𝑇𝑀𝑃
• Muda o nome da relação 𝑇𝑀𝑃 para 𝑅𝑒𝑠𝑢𝑙𝑡𝑎𝑑𝑜
▪ 𝑅 𝑎, 𝑏, 𝑐 ← 𝑅 𝑟, 𝑠, 𝑡
• Muda o nome dos atributos 𝑟, 𝑠 𝑒 𝑡 de 𝑅 para
𝑎, 𝑏 𝑒 𝑐, respectivamente
▪ 𝑅 𝑎, 𝑏, 𝑐 ← 𝑆 𝑟, 𝑠, 𝑡
• Muda o nome e os atributos de 𝑆
Prof. Dr.-Ing. Leonardo Andrade Ribeiro 11
A Operação Rename
▪ Pode-se também definir formalmente um operador,
RENAME (𝜌), para renomear relações e atributos
• Modifica somente o esquema da relação
▪ 𝜌𝑆 𝑅
• Renomeia a relação R para S
▪ 𝜌 𝐵1 ,𝐵2 ,…,𝐵𝑛 𝑅
• Renomeia os atributos de R para 𝐵1 , 𝐵2 , … , 𝐵𝑛
▪ 𝜌𝑆 𝐵1 ,𝐵2 ,…,𝐵𝑛 𝑅
• Renomeia a relação R para S e os atributos para
𝐵1 , 𝐵2 , … , 𝐵𝑛

Prof. Dr.-Ing. Leonardo Andrade Ribeiro 12


União ∪ , Interseção ⋂ e
Diferença −
▪ Operações binárias
▪ Esquemas de relações devem ser compatíveis em união
• Dois esquemas são compatíveis em união se eles possuem o mesmo
grau e o mesmo domínio para todo par formado por um atributo de
cada esquema em uma mesma posição
• Também é chamado de compatibilidade de tipo
▪ Por convenção, os nomes dos atributos do esquema de relação
resultante são os mesmos da primeira relação
• 𝑅 𝑥, 𝑦 ∪ 𝑆 𝑦, 𝑧 = 𝑅 ∪ 𝑆(𝑥, 𝑦) e
• 𝑆 𝑦, 𝑧 ∪ 𝑅 𝑥, 𝑦 = 𝑆 ∪ 𝑅(𝑦, 𝑧)
▪ UNIÃO e INTERSEÇÃO são comutativas e associativas
▪ Diferença não é comutativa e também não é associativa
▪ INTERSEÇÃO pode ser representada em termos de UNIÃO e
DIFERENÇA
• 𝑅 ∩ 𝑆 = 𝑅 ∪ 𝑆 – (𝑅 – 𝑆) – (𝑆 – 𝑅)
Prof. Dr.-Ing. Leonardo Andrade Ribeiro 13
UNIÃO ∪ , INTERSEÇÃO ⋂,
DIFERENÇA −
R S
x y y z R e S são compatíveis em união:
1 a 1 b 𝑑𝑜𝑚(𝑅. 𝑥) = 𝑑𝑜𝑚(𝑆. 𝑦) e
1 b 2 c 𝑑𝑜𝑚(𝑅. 𝑦) = 𝑑𝑜𝑚(𝑆. 𝑧)

𝑅 ∪ 𝑆 𝑅∩𝑆 𝑅−𝑆 S−𝑅


x y x y x y y z
1 a 1 b 1 a 2 c
1 b
2 c

Prof. Dr.-Ing. Leonardo Andrade Ribeiro 14


Produto Cartesiano (×)
▪ Produz um novo conjunto através da combinação
de todas as tuplas em uma relação com todas
tuplas de outra relação
• Não é necessário que os esquemas sejam compatíveis
em união
▪ O grau da relação resultante é 𝑛 + 𝑚, onde 𝑛 e 𝑚
são os graus das relações participantes
▪ A cardinalidade da relação resultante é |𝑟| ∗ |𝑠|,
onde |𝑟| e |𝑠| são as cardinalidades das relações
participantes

Prof. Dr.-Ing. Leonardo Andrade Ribeiro 15


Produto Cartesiano (×)
▪ Como padrão, atributos com o mesmo nome
em ambas relações são renomeados para
nome_da_relação.nome_do_atributo
▪ Exemplo:
• Considere duas relações 𝑅 𝑥, 𝑦 e 𝑆 𝑦, 𝑧 e
relação 𝑇 que é o resultado do produto
cartesiando entre 𝑅 e 𝑆
• Portanto: 𝑇 𝑥, 𝑅. 𝑦, 𝑆. 𝑦, 𝑧 ← 𝑅 × 𝑆

Prof. Dr.-Ing. Leonardo Andrade Ribeiro 16


Produto Cartesiano (×)
𝑅×𝑆
𝑅
x R.y S.y z
x y
1 a 1 b
1 a
1 a 2 c
1 b
1 b 1 b
1 b 2 c

𝑆×𝑅
𝑆 S.y z x R.y
y z 1 b 1 a
1 b 1 b 1 b
2 c 2 c 1 a
2 c 1 b

Prof. Dr.-Ing. Leonardo Andrade Ribeiro 17


A Operação Join (⋈)
▪ Combina tuplas relacionadas de duas relações em um única
tupla
▪ Notação: R ⋈ 𝑐𝑜𝑛𝑑𝑖çã𝑜 𝑆
▪ Exemplo:
• 𝐷𝑒𝑝𝑎𝑟𝑡𝑎𝑚𝑒𝑛𝑡𝑜 ⋈ 𝐶ℎ𝑒𝑓𝑒_𝐶𝑃𝐹=𝐶𝑃𝐹 𝐹𝑢𝑛𝑐𝑖𝑜𝑛𝑎𝑟𝑖𝑜
▪ Interpretação: Produto Cartesiano seguido de uma seleção
• 𝜎 𝐶ℎ𝑒𝑓𝑒_𝐶𝑃𝐹=𝐶𝑃𝐹 𝐷𝑒𝑝𝑎𝑟𝑡𝑎𝑚𝑒𝑛𝑡𝑜 × 𝐹𝑢𝑛𝑐𝑖𝑜𝑛𝑎𝑟𝑖𝑜
▪ Em sua definição mais geral, uma junção pode envolver condições
arbitrárias
• Por exemplo, condições envolvendo comparações entre um atributo e uma
constante, condições entre dois atributos de uma mesma relação, e
conectores OR
▪ Na prática, são usadas variantes da operação JOIN que especificam
restrições nas condições permitidas

Prof. Dr.-Ing. Leonardo Andrade Ribeiro 18


Variantes da Operação Join
▪ Theta Join: Junção entre relações 𝑅 e 𝑆 com condição do tipo
𝑐1 𝐴𝑁𝐷 𝑐2 𝐴𝑁𝐷 … 𝐴𝑁𝐷 𝑐𝑛 , onde 𝑐𝑖 possui a forma 𝑅. 𝑟 𝜃 𝑆. 𝑠, r
e s possuem o mesmo domínio e 𝜃 é um dos operadores básicos de
comparação {=, ≠, <, ≤, >, ≥}
• Informalmente, theta-join permite apenas conectores AND e
comparações entre atributos de mesmo domínio, onde um atributo é
oriundo de uma relação e o outro atributo é oriundo da outra relação
• Note, entretanto, que é permitido que 𝑅 = 𝑆; neste caso temos uma
autojunção
• Considere duas relações 𝑅 𝑥, 𝑦 e 𝑆 𝑦, 𝑧
• 𝑅 ⋈ 𝑅.𝑥>𝑆.𝑧 𝐴𝑁𝐷 𝑅.𝑦<𝑆.𝑦 𝑆 é um theta-join.
▪ Equi Join: adiciona a restrição em relação ao theta-join de que
somente o operador de igualdade é permitido
• 𝑅 ⋈ 𝑅.𝑥=𝑆.𝑧 𝐴𝑁𝐷 𝑅.𝑦=𝑆.𝑦 𝑆 é um EQUI-JOIN

Prof. Dr.-Ing. Leonardo Andrade Ribeiro 19


Variantes da Operação Join
▪ Natural Join: Junção em que a condição é determinada
implicitamente por operações de igualdade sobre os atributos de
mesmo nome das duas relações
• Caso existam mais de um par de atributos de mesmo nome, as
condições são conectadas por AND
▪ Além disso, a junção natural elimina automaticamente da relação
resultante um atributo de cada dupla de atributos de mesmo nome
▪ Representada apenas por 𝑅 ⋈ 𝑆 (dispensa especificação da junção)
• Alternativamente, pode ser representado por 𝑅 ∗ 𝑆
▪ Exemplo
• Considere duas relações 𝑅 𝑥, 𝑦 e 𝑆 𝑦, 𝑧 .
• Portanto: 𝑅 ⋈ 𝑆 ≡ 𝜌 𝑥,𝑦,𝑧 𝜋 𝑥,𝑅.𝑦,𝑧 𝑅 ⋈ 𝑅.𝑦=𝑆.𝑦 𝑆

Prof. Dr.-Ing. Leonardo Andrade Ribeiro 20


Variantes da Operação Join
▪ Nas variantes de junções vistas até o momento, somente as tuplas das duas
relações que satisfazem a condição estarão presentes no resultado
▪ Esses tipos de junção são chamados coletivamente de inner join
▪ Em certas casos, entretanto, é necessário retornar todas as tuplas de uma ou das
duas relações, mesmo aquelas não satisfazem a condição
▪ Junções com essa característica são chamadas coletivamente de outer join
▪ Left Outer Join: retorna todas as tuplas da relação da esquerda na expressão; as
tuplas que não satisfazem a condição são inseridas no resultado com o valor NULL
para os atributos da relação da direita
• Notação: ⟕
▪ Right Outer Join: retorna todas as tuplas da relação da direita na expressão; as
tuplas que não satisfazem a condição são inseridas no resultado com o valor NULL
para os atributos da relação da esquerda
• Notação RIGHT OUTER JOIN: ⟖
▪ Full Outer Join: retorna todas as tuplas das duas relações; as tuplas de uma relação
que não satisfazem a condição são inseridas no resultado com o valor NULL para
os atributos da outra relação
• Notação: RIGHT OUTER JOIN: ⟗
▪ Outer joins não são equivalentes a um Produto Cartesiano seguido de uma seleção
• Extensões da álgebra relacional original

Prof. Dr.-Ing. Leonardo Andrade Ribeiro 21


Variantes da Operação Join
𝑅 𝑆
x y y z
1 a b 2
3 b c 1
inner joins
Theta Join Equi Join Natural Join
𝑅 ⋈ 𝑥<𝑧 𝑆 𝑅 ⋈ 𝑥=𝑧 𝑆 𝑅⋈𝑆

x R.y S.y z x R.y S.y z x y z


1 a b 2 1 a c 1 3 b 2

outer joins
Left Outer Join Right Outer Join Full Outer Join
𝑅⟕ 𝑥=𝑧 𝑆 𝑅⟖ 𝑥=𝑧 𝑆 𝑅⟗ 𝑥=𝑧 𝑆
x R.y S.y z x R.y S.y z x R.y S.y z
1 a c 1 1 a c 1 1 a c 1
3 b NULL NULL NULL NULL b 2 3 b NULL NULL
NULL NULL b 2
Prof. Dr.-Ing. Leonardo Andrade Ribeiro 22
Esquema do BD Compania
Funcionario
Nome CPF D_Nasc Endereco Sexo Salario Super_CPF Dno

Departamento
DNome DNum Chefe_CPF Chefia_Inicio

Depart_Local
DNum DLocal

Projeto
PNome Pnum PLocal Dnum

Func_Proj
CPF Pno Horas

Dependentes
CPF Nome Sexo Aniversario
23
Exercícios
▪ Considerando o esquema do slide anterior,
apresente a expressão em álgebra relacional para
responder as seguintes consultas:
1. Recupere o nome e o endereço de todos
funcionários que trabalham no departamento
chamado ‘Pesquisa’
2. Para cada projeto localizado em ‘São Paulo’, liste o
nome do projeto, o identificador do departamento
que controla esse projeto, e o nome, endereço e
aniversário do coordenador desse departamento
a. Existe uma eliminação de duplicatas implícita na expressão
desta consulta? Se existe, quando ocorre?

Prof. Dr.-Ing. Leonardo Andrade Ribeiro 24


Exercícios (cont.)
3. Recupere o número e nome de todos os projetos
que envolvam o funcionário “José da Silva”,
como integrante ou como gerente
4. Recupere o nome e CPF dos funcionários que
não possuem dependentes
5. Recupere o nome e CPF dos coordenadores que
possuem pelo menos um dependente
6. *Recupere nome e CPF dos funcionários que
trabalham em todos projetos controlados pelo
departamento de número 5

Prof. Dr.-Ing. Leonardo Andrade Ribeiro 25


Exercício 2: Solução
1. SP ← 𝜎 𝑃𝐿𝑜𝑐𝑎𝑙=′ 𝑆ã𝑜 𝑃𝑎𝑢𝑙𝑜′ (Projeto)
• Seleciona todos os projetos localizados em São Paulo
2. S𝑃𝐷 ← 𝑆𝑃 ∗ 𝐷𝑒𝑝𝑎𝑟𝑡𝑎𝑚𝑒𝑛𝑡𝑜
• Obtém as informações dos departamentos que
controlam os projetos em SP
3. SPDC ← SPD⋈ 𝐶ℎ𝑒𝑓𝑒𝐶𝑃𝐹=𝐶𝑃𝐹 𝐹𝑢𝑛𝑐𝑖𝑜𝑛𝑎𝑟𝑖𝑜
• Obtém as informações dos coordenadores dos
departamentos de SPD
▪ R ← 𝜋 𝑃𝑁𝑜𝑚𝑒, 𝐷𝑁𝑢𝑚,𝑁𝑜𝑚𝑒, 𝐷_𝑁𝑎𝑠𝑐, 𝐸𝑛𝑑𝑒𝑟𝑒𝑐𝑜 (SPDC)
• Realiza a projeção sobre os atributos requisitados

Prof. Dr.-Ing. Leonardo Andrade Ribeiro 26


Exercício 5: Solução
1. FD ← 𝜋 𝐶𝑃𝐹 (Dependentes)
• Produz uma relação contendo o CPF de todos funcionários que
possuem pelo menos um dependente
2. GD(CPF) ← 𝜋 𝐶𝐻𝐸𝐹𝐸_𝐶𝑃𝐹 Departamento
• Produz uma relação contendo o CPF de todos gerentes de
departamento (notem que o atributo CHEFE_CPF foi renomeado
para CPF)
3. R_CPF ← FD ∩ GD
• Usa o operador INTERSEÇÃO para obter o CPF dos gerentes que
possuem dependentes
4. R← 𝜋 𝑁𝑜𝑚𝑒,𝐶𝑃𝐹 (R_CPF ∗ Funcionario)
• Usa junção natural para recuperar as informações dos gerentes que
possuem dependentes (notem que R_CPF e Funcionário possuem o
atributo CPF em comum) e projeção para produzir o resultado
contendo apenas os atributos Nome e CPF

Prof. Dr.-Ing. Leonardo Andrade Ribeiro 27


Conjunto Completo de Operações
da Algebra Relacional
▪ Todas operações da algebra relacional podem
ser expressas como uma sequência das
operações {σ, π, ∪, -, ×}

Prof. Dr.-Ing. Leonardo Andrade Ribeiro 28


A Operação Divisão (÷)
▪ A operação de Divisão é aplicada em duas
relações R(Z) ÷ S(X), onde X ⊂ Z. Seja Y = Z – X (e
portanto Z = X ∪ Y), isto é, Y é o conjunto de
atributos em R que não são atributos de S. O
resultado da divisão é uma relação T(Y) que inclui
uma tupla t se tuplas tR aparecem em R com tR[Y]
= t, e com tR[X] = tS para toda tupla tS em S
▪ Para uma tupla t aparecer no resultado T da
divisão, os valores em t devem aparecer em R em
combinação com todas as tuplas em S
Prof. Dr.-Ing. Leonardo Andrade Ribeiro 29
A Operação Divisão (÷)
▪ As tuplas no denominador restringem relação no numerador
através da seleção das tuplas no resultado que são pareadas com
todos valores no denoninador
▪ Útil para representar a quantificação universal
• Recupe o nome de todos funcionários que trabalham em todos
projetos controlados pelo departmento nr. 5.

R
cpf pno S
cpf1 1 pno R÷S
cpf2 1 1 cpf
cpf2 2 ÷ 2
= cpf3
cpf3 1 3
cpf3 2
cpf3 3 30
A Operação Divisão (÷)
▪ A divisão pode ser expressada através da
sequência:
1. T1 ← π<cpf>(R)
2. T2 ← T1×S
3. T3 ← T2 – R
4. T4 ← π<cpf> (T3)
5. Res ← T1 – T4

31
Passos 1 e 2
Passo 1 Passo 2
R T1 T1 S T2
cpf pno cpf cpf pno cpf pno
cpf1 1 𝜋 𝑐𝑝𝑓 (𝑅) cpf1 cpf1 1 cpf1 1
cpf2 1 cpf2 cpf2 × 2 cpf1 2
cpf2 2 cpf3 cpf3 3 cpf1 3
cpf3 1 cpf2 1
cpf3 2 cpf2 2
cpf3 3 cpf2 3
cpf3 1
cpf3 2
cpf3 3

32
Passos 3, 4 e 5
Passo 3 Passo 4
T2 R T3 T3 T4
cpf pno cpf pno cpf pno cpf pno cpf
cpf1 1 cpf1 1 cpf1 2 cpf1 2 𝜋 𝑐𝑝𝑓 (𝑇3) cpf1
cpf1 2 − cpf2 1 cpf1 3 cpf1 3 cpf2
cpf1 3 cpf2 2 cpf2 3 cpf2 3
cpf2 1 cpf3 1
cpf2 2 cpf3 2
cpf2 3 cpf3 3
Passo 5
cpf3 1
T1 T4 Res
cpf3 2
cpf cpf y
cpf3 3
cpf1 − cpf1 cpf3
cpf2 cpf2
cpf3
33
Extensões para Álgebra Relacional

▪ Algumas operações frequentemente necessárias


em aplicações de banco de dados não podem ser
expressadas em álgebra relacional
▪ Exemplo
• Agregação de valores
• Agrupamento de valores
• Projeções generalizadas
▪ Por este motivo, operações adicionais foram
criadas para aumentar o poder de expressão do
modelo relacional
Prof. Dr.-Ing. Leonardo Andrade Ribeiro 34
Operações de Agregação
▪ Operadores usados para sumarizar ou agregar valores de uma
tabela
▪ Retornam uma relação (e não um valor escalar!) contendo apenas
um atributo com o mesmo nome da operação e uma tupla com o
valor resultante
▪ Operações:
• 𝑆𝑈𝑀<𝐴> 𝑅 : retorna a soma dos valores do atributo R.A; o domínio
do atributo A deve ser do tipo numérico
• 𝐴𝑉𝐺<𝐴> 𝑅 : retorna a média dos valores do atributoR.A; o domínio
do atributo A deve ser do tipo numérico
• 𝑀𝐼𝑁<𝐴> 𝑅 e 𝑀𝐴𝑋<𝐴> 𝑅 retorna o maior e o menor valor entre os
valores da R.A. Caso A seja do tipo alfanumérico, o valor retornado
será o primeiro (MIN) ou último (MAX) valor em ordem alfabética
• COUNT 𝑅 : retorna o número de tuplas em R; note que R pode ser
uma BAG

Prof. Dr.-Ing. Leonardo Andrade Ribeiro 35


Operações de Agregação
𝑆𝑈𝑀 𝑥 (𝑅) SUM
10
R
x y
𝐴𝑉𝐺 𝑥 (𝑅) AVG
1 a
1.6
1 b
2 b MAX
𝑀𝐴𝑋 𝑥 (𝑅)
1 c 3
2 c
3 c 𝑀𝐼𝑁 𝑥 (𝑅) MIN
1

𝐶𝑂𝑈𝑁𝑇(𝑅) COUNT
6

Prof. Dr.-Ing. Leonardo Andrade Ribeiro 36


Operações de Agregação
▪ Múltiplas operações de agregação podem ser aplicadas sobre
uma relação simultaneamente (separadas por vírgula)
▪ O esquema de relação resultante conterá um atributo para
cada operação e o nome de cada atributo será
nome_do_atributo.operação (com exceção de COUNT)
R
x y
1 a
1 b
𝑆𝑈𝑀 𝑥 , 𝐴𝑉𝐺 𝑥 , 𝑀𝐴𝑋 𝑥 𝑀𝐼𝑁 𝑥 , 𝐶𝑂𝑈𝑁𝑇(𝑅) [Link] [Link] [Link] .xMIN COUNT
2 b
10 1.6 3 1 6
1 c
2 c
3 c
Prof. Dr.-Ing. Leonardo Andrade Ribeiro 37
A Operação Agrupamento (𝛾)
▪ Agrupamento: agrupa as tuplas em uma
relação baseado no valor de alguns atributos
• Exemplo: agrupamento das tuplas da relação
Funcionário baseando no número do
departamento
▪ A operação 𝛾 𝐿 𝑅 particiona R de acordo
com os valores da lista de atributos 𝐿
▪ Para cada grupo é retornada uma tupla
contendo os atributos do agrupamento

Prof. Dr.-Ing. Leonardo Andrade Ribeiro 38


A Operação Agrupamento (𝛾)
agrupamento intermediário
R R
x y x y
Resultado
1 a a
x
1 b 1 b
𝛾 𝑥 (𝑅) 𝛾 𝑥 (𝑅) 1
2 b c
2
1 c b
2 3
2 c c
3 c 3 c

▪ Resultado da operação de agrupação é uma relação formada apenas pelos


atributos do agrupamento
• Contém uma tupla para cada grupo formado
• Os valores de cada tupla são os valores dos atributos do agrupamento
• Produz o mesmo resultado que uma operação de projeção!
Prof. Dr.-Ing. Leonardo Andrade Ribeiro 39
Agrupamento e Agregação
▪ Operações de agrupamento são frequentemente
combinadas com funções de agregação
▪ Denotado por 𝛾 𝐿 𝐴𝐺𝐺 𝑅 , onde AGG é uma ou
mais funções de agregação
• “Retorne o menor e o maior salário dos funcionários
de cada departamento, assim como o número de
funcionários do departamento”
• Expressão: RES(dno, min_sal, max_sal, count) ←
𝛾 𝐷𝑛𝑜 𝑀𝐴𝑋<𝑆𝑎𝑙𝑎𝑟𝑖𝑜> , 𝑀𝐼𝑁<𝑆𝑎𝑙𝑎𝑟𝑖𝑜> , 𝐶𝑜𝑢𝑛𝑡 𝐹𝑢𝑛𝑐𝑖𝑜𝑛𝑎𝑟𝑖𝑜

Prof. Dr.-Ing. Leonardo Andrade Ribeiro 40


Agrupamento e Agregação
agrupamento intermediário
R R
x y x y
Resultado
1 a a
X COUNT
1 b 1 b
𝛾 𝑋 𝐶𝑂𝑈𝑁𝑇 (𝑅) 𝛾 𝑋 𝐶𝑂𝑈𝑁𝑇 (𝑅) 1 3
2 b c
2 2
1 c b
2 3 1
2 c c
3 c 3 c

▪ Resultado da operação de agrupação é uma relação formada pelos


atributos do agrupamento um atributo para cada agregação
• Contém uma tupla para cada grupo formado
• Os valores de cada tupla são os valores dos atributos do agrupamento
e o resultados de cada agregação aplicada ao grupo em isolamento
Prof. Dr.-Ing. Leonardo Andrade Ribeiro 41
Exercícios (3)
7. Para cada deparmento, liste o nome do(s)
funcionário(s) com o maior e o menor salário
juntamente com o respectivo supervisor
8. Liste o nome e identificador do
departamento com a maior média salarial
juntamente com o nome e CPF do respectivo
gerente
9. Liste o nome de todos funcionários com mais
de dois dependentes

Prof. Dr.-Ing. Leonardo Andrade Ribeiro 42


Exercício 8: Solução
1. MD 𝐷𝑛𝑢𝑚, 𝑀𝑒𝑑𝑖𝑎 ← 𝛾 𝐷𝑛𝑜 𝐴𝑉𝐺 𝑆𝑎𝑙𝑎𝑟𝑖𝑜 𝐹𝑢𝑛𝑐𝑖𝑜𝑛𝑎𝑟𝑖𝑜
• Produz uma relação contendo o identicador e a média salarial de todos
departamentos
2. M(Max_Media) ← 𝑀𝐴𝑋 𝑀𝑒𝑑𝑖𝑎 (MD)
• Produz uma relação com um atributo e uma tupla contendo a maior média
salarial
3. MMD ← 𝑀𝐷 ⋈ 𝑀𝑒𝑑𝑖𝑎=𝑀𝑎𝑥_𝑀𝑒𝑑𝑖𝑎 𝑀
• Usa junção para recuperar o identificador do(s) departamento(s) com a maior
média salarial
4. M_DEP ← 𝑀𝑀𝐷 ∗ 𝐷𝑒𝑝𝑎𝑟𝑡𝑎𝑚𝑒𝑛𝑡𝑜
• Usa junção natural para recuperar as demais informações do(s) departamento(s)
com a maior média salarial (notem que MMD e Departamento possuem o
atributo Dnum em comum)
5. R← 𝜋 𝐷𝑛𝑜𝑚𝑒,𝐷𝑛𝑢𝑚,𝑁𝑜𝑚𝑒,𝐶𝑃𝐹 𝑀_𝐷𝐸𝑃 ⋈ CHEFE_CPF=CPF 𝐹𝑢𝑛𝑐𝑖𝑜𝑛𝑎𝑟𝑖𝑜
• Usa junção para recuperar as informações do(s) gerente(s) do(s)
departamento(s) com a maior média salarial e projeção para produzir o
resultado contendo apenas os atributos solicitados

Prof. Dr.-Ing. Leonardo Andrade Ribeiro 43


Utilizando o
Resultado de Agregações
▪ Relembrando, o resultado de uma agregação é uma
relação contendo um atributo e uma tupla
▪ Em princípio, não é permitido comparar diretamente
essa relação com um valor escalar associado a um
atributo, pois são tipos diferentes
▪ Notem que no passo 3 da solução do exercício 8, o
resultado da agregação foi usado como entrada de uma
junção e não diretamente em uma condição do
operador SELECT
• 𝜎 𝑀𝑒𝑑𝑖𝑎=𝑀 𝑀𝐷 : ERRADO, pois M é uma relação
▪ Veremos que essa restrição da álgebra relacional é
flexibilizada em SQL

Prof. Dr.-Ing. Leonardo Andrade Ribeiro 44


Projeções Generalizadas
▪ Projeções generalizadas estendem o operador de
projeção permitindo funções sobre o atributos da
relação de entrada na lista de projeção
▪ O formato é o mesmo de uma projeção comum
• 𝜋 𝐹1 ,𝐹2 ,…,𝐹𝑛 (𝑅) onde 𝐹1 , 𝐹2 , … , 𝐹𝑛 são atributos de R
ou funções envolvendo expressões aritméticas e
constantes sobre os atributos de 𝑅
• Note que o grau da relação de saída pode ser maior
que o grau da relação de entrada

Prof. Dr.-Ing. Leonardo Andrade Ribeiro 45


Projeções Generalizadas: Exemplo
▪ Considere a relação
𝐹𝑢𝑛𝑐𝑖𝑜𝑛𝑎𝑟𝑖𝑜(𝐶𝑃𝐹, 𝑆𝑎𝑙á𝑟𝑖𝑜, 𝐷𝑒𝑑𝑢çã𝑜, 𝑇𝑒𝑚𝑝𝑜𝑆𝑒𝑟𝑣𝑖ç𝑜)
▪ É requerido a construção de um relatório com as
informações de salário líquido, bônus e imposto para cada
funcionário
▪ Temos que:
• Salário líquido = salário – dedução
• Bônus = 2000 * ´tempo de serviço
• Imposto = 25% do salário
▪ A expressão abaixo usando projeção generalizada pode ser
usada para obter o relatório requerido
• Relatorio(CPF, Sal_Liquido, Bônus, Imposto) ←
𝜋 𝐶𝑃𝐹, 𝑆𝑎𝑙á𝑟𝑖𝑜 −𝐷𝑒𝑑𝑢çã𝑜,2000∗𝑇𝑒𝑚𝑝𝑜𝑆𝑒𝑟𝑣𝑖ç𝑜,𝑆𝑎𝑙á𝑟𝑖𝑜∗0.25 (𝐹𝑢𝑛𝑐𝑖𝑜𝑛𝑎𝑟𝑖𝑜)

Prof. Dr.-Ing. Leonardo Andrade Ribeiro 46

Você também pode gostar