Álgebra relacional

Projeção

A operação de projeção (π\pi) possibilita a seleção de determinadas colunas de uma tabela. Tal operação corresponde a uma partição vertical lógica, produzindo uma nova relação contendo apenas os atributos selecionados.

A projeção é representada por:

π<lista de atributos>(R)\pi_{\text{<lista de atributos>}}(R)

Um aspecto muito importante que precisamos considerar com relação à projeção é a remoção de duplicatas:

⚠️ Essa operação remove tuplas duplicadas, ou seja, resultado dessa operação é um conjunto de tuplas distintas, e, portanto, uma relação válida.

Note que a eliminação de duplicatas envolve a classificação ou alguma outra técnica para detectar duplicatas e, portanto, aumenta o custo de processamento.

Há também um outro aspecto importante a ser considerado: o número de tuplas em uma relação resultante de uma operação π\pi é sempre menor ou igual ao número de tuplas da relação original. Se a operação de projeção for aplicada sobre todos os atributos que compõem uma superchave, a relação resultante terá a mesma quantidade de tuplas da relação original.

Exemplos

Considere a seguinte relação a seguir, que representa a lista de alunos de uma universidade.

ALUNO

🔑 rga (PK)nomecursoano_ingresso
20221234Ana SantosEngenharia2022
20215478João PereiraAdministração2021
20231001Maria SouzaComputação2023
20201234Lucas LimaDireito2020
20227862Ana SantosZootecnia2022

Ao aplicarmos a operação π<nome>(ALUNO)\pi_{\text{<nome>}}(ALUNO), teremos o seguinte resultado:

nome
Ana Santos
João Pereira
Maria Souza
Lucas Lima

Note que, no exemplo acima, o nome Ana Santos aparece uma única vez, embora duas alunas com esse nome tenham sido cadastradas na relação ALUNO. Isso ocorre pelo processo de remoção de duplicatas.

Agora, se tivéssemos incluído mais um atributo na operação, o resultado seria diferente. Veja, agora, com a projeção de nome e curso:

πnome, curso(ALUNO)\pi_{\text{nome, curso}}(ALUNO)

nomecurso
Ana SantosEngenharia
João PereiraAdministração
Maria SouzaComputação
Lucas LimaDireito
Ana SantosZootecnia

Observe que, agora, as duas alunas homônimas aparecem, mas porque elas estão em cursos diferentes - o que garante que a tupla inteira não seja duplicada.

Cuidado especial

Assim como na operação de seleção, há um cuidado especial quando pensamos na equivalência com o SQL. A tendência natural é associarmos a operação de projeção ao SELECT.

Pela definição formal da álgebra relacional, o comando SQL equivalente seria SELECT DISTINCT, pois a álgebra relacional assume a remoção de duplicatas, o que não ocorre por padrão no SQL.