Questão de Banco de Dados — Álgebra relacional — VUNESP 2026
Banco de Dados›Álgebra relacional
Código
gp018321
Banca
VUNESP
Órgão
UNESP
Ano
2026
Cargo
V - - Analista de Informática I - Área de Atuação: Desenvolvimento de Sistemas - São Paulo
Considere a seguinte tabela de um banco de dadosrelacional, bem como um comando escrito em álgebrarelacional: O comando SQL equivalente a essa consulta é:
ASELECT Nome, Nacionalidade, CPF FROM Passageiro WHERE CPF > 123;
BSELECT CPF FROM Passageiro WHERE CPF > 123;
CSELECT Passageiro (Nome, Nacionalidade) WHERE CPF > 123;
DSELECT CPF FROM Passageiro WHERE (Nome, Nacionalidade) IN CPF>123;
ESELECT Nome, Nacionalidade FROM Passageiro WHERE CPF > 123;
Revelar gabarito e comentário▾
GabaritoE — SELECT Nome, Nacionalidade FROM Passageiro WHERE CPF > 123;
Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.
Álgebra relacional e SQL: projeção e seleção
Gabarito: letra E. O comando em álgebra relacional apresentado na figura realiza uma projeção sobre os atributos Nome e Nacionalidade, seguida de uma seleção sobre a condição CPF > 123. Na tradução para SQL, a projeção corresponde à lista de colunas do SELECT e a seleção corresponde à cláusula WHERE, resultando em SELECT Nome, Nacionalidade FROM Passageiro WHERE CPF > 123;.
A álgebra relacional é a base formal das consultas em bancos de dados relacionais. Ela define um conjunto de operações que recebem uma ou mais relações (tabelas) como entrada e produzem uma nova relação como saída. As duas operações fundamentais envolvidas nesta questão são a seleção e a projeção, que, apesar dos nomes parecidos com os comandos SQL, têm significados bem distintos.
A seleção (representada pelo símbolo σ) filtra linhas (tuplas) de uma tabela, ou seja, escolhe quais registros atendem a uma determinada condição. Já a projeção (representada pelo símbolo π) filtra colunas (atributos), ou seja, escolhe quais campos serão exibidos no resultado. Essa distinção é crucial: a seleção trabalha na vertical (linhas), enquanto a projeção trabalha na horizontal (colunas).
No comando da figura, a operação de projeção é aplicada sobre os atributos Nome e Nacionalidade, indicando que apenas essas duas colunas devem aparecer no resultado. Em seguida, a operação de seleção é aplicada com a condição CPF > 123, indicando que apenas as linhas cujo valor do CPF seja maior que 123 devem ser retornadas. A ordem das operações na álgebra relacional não altera o resultado final, mas a tradução para SQL segue uma estrutura fixa.
A tradução direta para SQL segue o mapeamento clássico: a projeção vira a lista de colunas após o SELECT, a tabela de origem vira o FROM, e a seleção vira a condição do WHERE. Assim, a consulta SQL equivalente é SELECT Nome, Nacionalidade FROM Passageiro WHERE CPF > 123;. É importante notar que o SELECT do SQL não é a mesma coisa que a operação de seleção da álgebra relacional — o SELECT do SQL combina projeção e seleção, dependendo de como é usado.
A pegadinha desta questão está justamente na confusão entre os nomes: muitos candidatos associam o SELECT do SQL à operação de seleção da álgebra relacional, mas na verdade o SELECT do SQL corresponde à projeção. A seleção da álgebra relacional é traduzida para o WHERE do SQL. Guarde essa correspondência: projeção → SELECT (colunas) e seleção → WHERE (linhas).
Esta alternativa inclui o atributo CPF na lista de colunas do SELECT. A projeção da álgebra relacional especifica apenas os atributos Nome e Nacionalidade, portanto o CPF não deve aparecer no resultado. Incluir o CPF na projeção altera o resultado da consulta, adicionando uma coluna que não foi solicitada.
Alternativa B — ❌ Incorreta
Esta alternativa projeta apenas o atributo CPF, ignorando completamente os atributos Nome e Nacionalidade que foram especificados na projeção da álgebra relacional. O resultado seria uma tabela com apenas uma coluna (CPF), enquanto o comando original retorna duas colunas (Nome e Nacionalidade).
Alternativa C — ❌ Incorreta
Esta alternativa apresenta uma sintaxe inválida em SQL. A cláusula SELECT não aceita uma lista de colunas entre parênteses dessa forma, e a cláusula FROM está ausente. A sintaxe correta do SQL exige SELECT colunas FROM tabela WHERE condição. Esta alternativa mistura a notação da álgebra relacional com a do SQL de forma incorreta.
Alternativa D — ❌ Incorreta
Esta alternativa também apresenta uma sintaxe inválida. A cláusula WHERE não pode conter uma lista de colunas entre parênteses seguida de IN CPF>123. A condição IN é usada para comparar um valor com uma lista de valores ou com o resultado de uma subconsulta, não para filtrar linhas com base em uma comparação simples. A sintaxe correta para a condição seria WHERE CPF > 123.
Alternativa E — ✅ Correta ⟵ GABARITO
Esta alternativa traduz corretamente a operação da álgebra relacional para SQL. A projeção sobre os atributos Nome e Nacionalidade vira a lista de colunas do SELECT, a tabela Passageiro vira o FROM, e a seleção com a condição CPF > 123 vira o WHERE. O resultado é exatamente o conjunto de linhas com os atributos Nome e Nacionalidade, filtrado pela condição CPF > 123.
NÃO CAIA NESSA!
A banca explora a confusão clássica entre os nomes das operações da álgebra relacional e os comandos SQL. O SELECT do SQL não é a seleção da álgebra relacional — ele é a projeção. A seleção da álgebra relacional corresponde ao WHERE do SQL. Lembre-se: projeção = SELECT (colunas) e seleção = WHERE (linhas). Com esse mapeamento em mente, você resolve qualquer questão desse tipo.