Projeção
A operação de projeção () 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:
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 é 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) | nome | curso | ano_ingresso |
---|---|---|---|
20221234 | Ana Santos | Engenharia | 2022 |
20215478 | João Pereira | Administração | 2021 |
20231001 | Maria Souza | Computação | 2023 |
20201234 | Lucas Lima | Direito | 2020 |
20227862 | Ana Santos | Zootecnia | 2022 |
Ao aplicarmos a operação , 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 |
---|---|
Ana Santos | Engenharia |
João Pereira | Administração |
Maria Souza | Computação |
Lucas Lima | Direito |
Ana Santos | Zootecnia |
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.