Pular para o conteúdo principal

Questão de Banco de Dados — Geral — VUNESP 2026

Banco de DadosGeral
Código
vu169455
Banca
VUNESP
Órgão
UNESP
Ano
2026
Cargo
V - - Ana Inf ( )
Considere a seguinte tabela de um banco de dados relacional, bem como um comando escrito em álgebra relacional:   Passageiro (CPF, Nome, Nacionalidade)   \pi_{Nome, Nacionalidade} (\sigma_{CPF>123} (Passageiro))   O comando SQL equivalente a essa consulta é:
  1. ASELECT Nome, Nacionalidade, CPF FROM Passageiro WHERE CPF > 123;
  2. BSELECT CPF FROM Passageiro WHERE CPF > 123;
  3. CSELECT Passageiro (Nome, Nacionalidade) WHERE CPF > 123;
  4. DSELECT CPF FROM Passageiro WHERE (Nome, Nacionalidade) IN CPF>123;
  5. 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: tradução de seleção e projeção

Gabarito: letra E. A expressão πNome,Nacionalidade(σCPF>123(Passageiro))\pi_{Nome, Nacionalidade} (\sigma_{CPF>123} (Passageiro)) combina a operação de seleção (σ, que filtra linhas pela condição CPF > 123) com a operação de projeção (π, que escolhe as colunas Nome e Nacionalidade). No SQL, a seleção vira a cláusula WHERE e a projeção vira a lista de colunas do SELECT — exatamente o que a alternativa E escreve: SELECT Nome, Nacionalidade FROM Passageiro WHERE CPF > 123;.

A álgebra relacional é a base teórica do modelo relacional: cada operação recebe uma ou mais relações (tabelas) como entrada e devolve outra relação como resultado. As duas operações mais fundamentais — e as que aparecem nesta questão — são a seleção e a projeção. A seleção, representada pela letra grega sigma (σ), filtra linhas de uma relação conforme uma condição booleana sobre os atributos; ela não altera o número de colunas, apenas escolhe quais tuplas permanecem. A projeção, representada pela letra grega pi (π), filtra colunas, mantendo apenas os atributos listados; ela não altera o número de linhas (embora elimine duplicatas no modelo teórico).

A tradução para SQL segue uma correspondência direta e sistemática, que é o coração desta questão:

Operação da álgebra relacional

Função

Cláusula SQL correspondente

Seleção (σ)

Filtrar linhas por condição

WHERE

Projeção (π)

Escolher colunas

Lista de colunas do SELECT

Produto cartesiano (×)

Combinar todas as tuplas de duas relações

FROM com múltiplas tabelas

Junção (⋈)

Combinar tuplas que satisfazem condição

JOIN ... ON

União (∪)

Unir tuplas de relações compatíveis

UNION

A pegadinha clássica da banca é inverter essa correspondência: afirmar que o WHERE corresponde à projeção, ou que o SELECT corresponde à seleção. O SELECT do SQL, apesar do nome, cumpre o papel da projeção (escolhe colunas), enquanto o WHERE cumpre o papel da seleção (filtra linhas). Guarde esse par com carinho: é nele que as alternativas desta questão se separam.

No caso concreto, a expressão πNome,Nacionalidade(σCPF>123(Passageiro))\pi_{Nome, Nacionalidade} (\sigma_{CPF>123} (Passageiro)) diz: primeiro, da tabela Passageiro, selecione as tuplas cujo CPF seja maior que 123; depois, projete (mantenha) apenas os atributos Nome e Nacionalidade. A ordem de execução na álgebra é de dentro para fora: primeiro o σ, depois o π. No SQL, a ordem lógica de escrita é SELECT (projeção) → FROM (tabela) → WHERE (seleção), mas a semântica é a mesma: filtra-se pelas linhas que atendem à condição e exibem-se apenas as colunas pedidas.

Alternativa A — ❌ Incorreta

Inclui o atributo CPF na lista do SELECT: SELECT Nome, Nacionalidade, CPF. A projeção da álgebra relacional pede apenas Nome e Nacionalidade; trazer CPF na resposta viola a projeção, pois devolve uma coluna a mais do que a expressão original especifica.

Alternativa B — ❌ Incorreta

Projeta apenas CPF: SELECT CPF FROM Passageiro WHERE CPF > 123;. Além de omitir Nome e Nacionalidade (que a projeção exige), ela devolve justamente a coluna que a expressão original descarta. É o distrator que inverte completamente a lista de atributos.

Alternativa C — ❌ Incorreta

A sintaxe SELECT Passageiro (Nome, Nacionalidade) WHERE CPF > 123; não é válida em SQL. Faltam a cláusula FROM e a vírgula entre os atributos; a forma correta de indicar a tabela é na cláusula FROM, não entre parênteses após o SELECT.

Alternativa D — ❌ Incorreta

A sintaxe SELECT CPF FROM Passageiro WHERE (Nome, Nacionalidade) IN CPF>123; é inválida e semanticamente absurda. Projeta CPF (coluna errada), usa IN de forma incorreta (o IN compara um valor a uma lista de valores, não a uma condição) e mistura a condição CPF>123 dentro de um parêntese sem operador relacional.

Alternativa E — ✅ Correta ⟵ GABARITO

SELECT Nome, Nacionalidade FROM Passageiro WHERE CPF > 123; traduz fielmente a expressão: a lista Nome, Nacionalidade corresponde à projeção π, a tabela Passageiro ao operando da relação, e a condição CPF > 123 na cláusula WHERE corresponde à seleção σ. É a única alternativa que espelha exatamente as duas operações da álgebra relacional.

NÃO CAIA NESSA!

A banca explora a confusão entre seleção e projeção. Lembre-se: o WHERE do SQL filtra linhas (seleção σ) e o SELECT escolhe colunas (projeção π). Nesta questão, a alternativa A tenta incluir CPF na projeção, e a B projeta só CPF — ambas erram ao mexer na lista de colunas. Com esse par na cabeça, você elimina as duas de imediato.

PEGA ESSA DICA!

Ao traduzir álgebra relacional para SQL, siga o passo a passo: (1) identifique a tabela de origem no operando da expressão → vai para o FROM; (2) identifique a condição dentro do σ → vai para o WHERE; (3) identifique os atributos dentro do π → vão para a lista do SELECT. A ordem de escrita no SQL é SELECTFROMWHERE, mas a leitura da álgebra é de dentro para fora: primeiro o filtro de linhas, depois a escolha de colunas.

Gabarito: letra E

Link permanente: /questoes/vu169455