Questão de Banco de Dados — SQL — FGV 2022
- 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
- A

- B

- C

- D

- E






GabaritoE — [imagem]
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.
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.
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).
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.
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.
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.
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