Operações binárias
Até aqui, discutimos as operações unárias da Álgebra Relacional. A partir de agora, veremos um grupo de operações da álgebra relacional que consiste em operações matemáticas padrão sobre conjuntos. Essas operações são chamadas de operações binárias.
Várias operações de teoria de conjunto são usadas para mesclar os elementos de dois conjuntos de diversas maneiras, incluindo:
- união: o resultado dessa operação, indicada por R ∪ S, é uma relação que inclui todas as tuplas que estão em R ou em S ou tanto em R quanto em S. As tuplas duplicadas são eliminadas;
- interseção: o resultado dessa operação, indicada por R ∩ S, é uma relação que inclui todas as tuplas que estão tanto em R quanto em S;
- subtração: o resultado dessa operação, também chamada de diferença de conjunto ou exceto, indicada por R – S, é uma relação que inclui todas as tuplas que estão em R, mas não em S.
Quando essas operações são adaptadas aos bancos de dados relacionais, as duas relações sobre as quais qualquer uma dessas três operações são aplicadas precisam ter o mesmo tipo de tuplas; essa condição é chamada de compatibilidade de união ou compatibilidade de tipo.
Duas relações e são consideradas compatíveis na união (ou compatíveis no tipo) se tiverem o mesmo grau e se para . Em termos simples, isso significa que as duas relações têm o mesmo número de atributos e cada par correspondente de atributos têm o mesmo domínio.
União
Vejamos o seguinte exemplo, com as relações PROFESSOR
e ALUNO
. Essas relações são compatíveis para a operação de união.
PROFESSOR
pNome | uNome |
---|---|
Pedro | Dias |
Ricardo | Vilela |
Francisco | Beltrão |
Maria | Oliveira |
ALUNO
nome | sobrenome |
---|---|
Maria | Oliveira |
João | Santos |
Pedro | Dias |
Francisco | Leme |
Joana | Lima |
PROFESSOR ∪ ALUNO
pNome | uNome |
---|---|
Pedro | Dias |
Ricardo | Vilela |
Francisco | Beltrão |
Maria | Oliveira |
João | Santos |
Francisco | Leme |
Joana | Lima |
Observe que tuplas duplicadas aparecem apenas uma vez no resultado.
Interseção
Considerando o mesmo exemplo das relações anteriores, o resultado de ALUNO ∩ PROFESSOR é:
pNome | uNome |
---|---|
Pedro | Dias |
Maria | Oliveira |
Subtração
Considerando o mesmo exemplo das relações anteriores, o resultado de PROFESSOR - ALUNO é:
pNome | uNome |
---|---|
Ricardo | Vilela |
Francisco | Beltrão |
Ou seja: lista todos os docentes que não são alunos.
🧑🏻🏫 Definição formal
As operações de UNIÃO e INTERSECÇÃO possuem a propriedade da comutatividade, ou seja, a ordem dos operandos não altera o resultado:
Além disso, UNIÃO e INTERSECÇÃO também apresentam a propriedade da associatividade, o que permite estendê-las para qualquer número de relações (operações n-árias):
Por outro lado, a operação de SUBTRAÇÃO não é comutativa, ou seja, a troca da ordem dos conjuntos geralmente altera o resultado:
Vale observar ainda que a INTERSECÇÃO pode ser representada em função da UNIÃO e da DIFERENÇA, conforme a expressão a seguir:
🧑🏻💻 Na prática
Em SQL, existem três operações — UNION
, INTERSECT
e EXCEPT
— que correspondem às operações de conjunto união, intersecção e subtração. Além disso, existem operações de multiconjunto (UNION ALL
, INTERSECT ALL
e EXCEPT ALL
) que não eliminam duplicatas.
União
SELECT City FROM Customers
UNION ALL
SELECT City FROM Suppliers
ORDER BY City;
Interseção
TABLE a INTERSECT TABLE c;
Subtração
TABLE b EXCEPT TABLE c;
🐈⬛ O “pulo do gato”
⚠️ Em determinados casos, para garantirmos a compatibilidade de tipo entre duas relações, podemos aplicar operações de projeção nas relações participantes da operação binária.