Pular para o conteúdo principal

Questão de Banco de Dados — SQL — FGV 2022

Banco de DadosSQL
Código
fg051452
Banca
FGV
Órgão
SEAD-AP
Ano
2022
Nível
Superior
Cargo
Perito Criminal - Ciência da Computação - Analista de Sistema
Numa prova de concurso, a organizadora estava preocupada com a ocorrência de homônimos fazendo prova na mesma sala, já que isso poderia ocasionar contratempos.Para uma tabela relacional T, contendo as colunas CPF, Nome e CodSala, assinale o comando SQL que identifica corretamente os homônimos em cada sala.
  1. A58_a.png 306×105
  2. B58_b.png 300×120
  3. C58_c .png 205×104
  4. D58_d.png 331×119
  5. E58_e.png 305×118
Revelar gabarito e comentário

GabaritoE — [imagem]

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”.

SQL: Identificação de Homônimos com Subconsultas Correlacionadas

Gabarito: letra E. O comando correto utiliza uma subconsulta correlacionada com o operador EXISTS para identificar registros na tabela T que possuem o mesmo CodSala e o mesmo Nome, mas um CPF diferente, o que caracteriza a homonímia na mesma sala.

Para resolver este problema, precisamos comparar cada linha da tabela T (referenciada como T) com outras linhas da mesma tabela (referenciada pelo alias t1). A condição de homônimo exige que o nome seja idêntico (t1.Nome = T.Nome) e que estejam na mesma sala (t1.CodSala = T.CodSala), mas que se trate de pessoas distintas, garantido pela diferença de CPF (t1.CPF <> T.CPF). O uso do EXISTS garante que, para cada registro em T, o banco de dados verifique se existe pelo menos uma outra linha que satisfaça essas condições.

Alternativa A — ❌ Incorreta

O comando verifica apenas se existe alguém na mesma sala com um CPF diferente, ignorando a condição fundamental de que os nomes devem ser iguais. Isso retornaria todos os alunos que compartilham a sala com qualquer outra pessoa, independentemente de serem homônimos.

Alternativa B — ❌ Incorreta

Além de utilizar uma tabela inexistente (TT), a lógica de comparação está incorreta. Ela busca registros onde o nome é diferente e o CPF é igual, o que é logicamente contraditório para a definição de homônimos (pessoas com nomes iguais e CPFs diferentes).

Alternativa C — ❌ Incorreta

A sintaxe apresentada está incompleta e incorreta, pois tenta realizar uma comparação direta sem o uso de um SELECT principal adequado para filtrar os registros da tabela T com base na subconsulta, além de não utilizar o operador EXISTS para validar a existência da condição.

Alternativa D — ❌ Incorreta

O uso do operador NOT EXISTS inverte a lógica do problema. Este comando retornaria todos os alunos que não possuem homônimos na mesma sala, ou seja, os alunos que possuem nomes únicos dentro de suas respectivas salas.

Alternativa E — ✅ Correta ⟵ Gabarito

Esta alternativa aplica corretamente a lógica de subconsulta correlacionada: para cada linha de T, o EXISTS verifica se há outra linha (t1) na mesma tabela que compartilha o CodSala e o Nome, mas possui um CPF distinto, identificando precisamente os homônimos.

PEGA ESSA DICA!

Em questões de SQL que envolvem comparar uma tabela consigo mesma, o uso de alias (apelidos) é obrigatório. Sempre que precisar identificar duplicidade ou homonímia, pense em uma estrutura de SELECT que filtra a tabela principal com base em uma subconsulta que busca por registros que atendam aos critérios de igualdade (nome/sala) e diferença (chave primária/CPF).

Gabarito: letra E.

Link permanente: /questoes/fg051452