Álgebra relacional
Operações sobre conjuntos, renomeação, junções, divisão e equivalências.
Regras de conjuntos
A álgebra clássica usa conjuntos: sem duplicados e sem ordem de tuplos. Cada operador recebe relações e devolve uma relação.
| Operador | Condição e efeito |
|---|---|
| Seleção | Conserva os tuplos que satisfazem . Não escolhe colunas. |
| Projeção | Conserva os atributos . Elimina tuplos repetidos. |
| Produto | Combina todos os pares; e tuplos dão . Exige nomes desambiguados. |
| Renomeação | Muda nomes de relação ou atributos, sem mudar valores. Explicita a convenção usada. |
| União | Tuplos de pelo menos um lado. Esquemas compatíveis. |
| Interseção | Tuplos dos dois lados. Vale . |
| Diferença | Tuplos de ausentes de . Não é comutativa. |
A projeção generalizada admite expressões com nomes novos, como preço em euros a partir de cêntimos; a clássica só escolhe atributos existentes. Em SQL, reproduzir a semântica de conjuntos exige DISTINCT.
Que junção usar
- A teta-junção equivale a filtrar o produto: . A equijunção compara por igualdade.
- A natural iguala todos os nomes comuns e conserva uma cópia de cada um. Sem nomes comuns, é o produto cartesiano.
- A semijunção conserva os tuplos de com alguma correspondência, sem trazer colunas de .
Cliente(id, ...) com Encomenda(id, ..., idCliente) não se liga naturalmente pelo cliente: o nome comum id compara um cliente com uma encomenda. Liga por Cliente.id = Encomenda.idCliente ou renomeia antes da junção natural.
A agregação é uma extensão: conta encomendas por cliente, mas não cria grupo para Mia, sem encomendas. Para incluir zeros, parte do universo Cliente com junção externa.
Ausências e universais
Para quem nunca comprou, parte de todos os candidatos e retira os que aparecem:
Renomeia antes da diferença para compatibilizar esquemas. Filtrar só encomendas nunca encontra quem não existe nelas.
Para e requisitos , a divisão devolve os ligados a todos os :
lista os pares em falta. Com compras e requisitos , só falta ; a resposta é . Se estiver vazio, devolve ; para outro universo de candidatos, declara-o. “Comprou algo diferente de rato” aceita quem também comprou rato; “nunca comprou rato” exige a diferença.
Reescrever sem partir
. Antecipa um filtro que só usa um lado antes da junção; ao antecipar projeções, conserva os atributos da condição e da resposta.
Contraexemplo: com e , a junção por dá vazio, mas devolve . A projeção apagou antes de exigir a condição.
Estas equivalências orientam um otimizador, não fixam o plano físico. Com NULL ou junções externas, não apliques automaticamente as identidades da álgebra clássica.