Questão nº 39
Questão de Tecnologia da Informação · FGV STN 2024 (nº 39)
Considere que um erro de programa na manipulação da tabela IPCA apresentada produziu a inserção de registros duplicados, de modo que algumas linhas da tabela ficaram com valores idênticos em suas colunas.
Analise as alternativas SQL que foram consideradas para a remoção das linhas redundantes.
I. Utilizar o comando delete com a cláusula except one.
II. Utilizar o comando delete incluindo a cláusula exists, o que faria com que a última linha de cada grupo de repetições não seria removida uma vez que não mais existiria uma outra linha idêntica.
III. Introduzir, temporariamente, uma nova coluna na tabela, com valores gerados por meio de um mecanismo de auto increment, ou sequence, e utilizar o uso do comando delete incluindo a cláusula exists.
Em relação a essas alternativas, é correto afirmar que
- Anenhuma funcionaria.
- Btodas funcionariam.
- Csomente I funcionaria.
- Dsomente II funcionaria.
- Esomente III funcionaria. (alternativa correta)
Resposta comentada
Gabarito Alternativa E
Remover linhas duplicadas em um banco de dados significa apagar cópias idênticas de registros em uma tabela, mantendo apenas uma única ocorrência de cada um. O desafio é identificar qual cópia manter quando todas as colunas são iguais.
- (A) Incorreta: A alternativa III apresenta uma solução viável.
- (B) Incorreta: As alternativas I e II não são soluções válidas ou confiáveis para o problema.
- (C) Incorreta: A cláusula
except onenão é um comando SQL padrão paraDELETE. - (D) Incorreta: Embora
DELETEcomEXISTSpossa ser usado em alguns cenários, sem uma coluna de identificação única (como um ID auto-incremento) para diferenciar as linhas duplicadas, não há um critério confiável para determinar qual "última linha" manter. Se todas as colunas são idênticas, o SGBD não tem como distinguir uma cópia da outra para decidir qual remover ou qual manter, tornando a operação imprevisível ou ineficaz. Armadilha da banca: A tentação é pensar queEXISTSé sempre a resposta para duplicatas, mas sem um critério de desempate (como um ID), ele não funciona de forma consistente para manter "uma" cópia. - (E) Correta: Esta é uma técnica padrão e eficaz. Ao adicionar temporariamente uma coluna com valores únicos (como um
AUTO_INCREMENTouSEQUENCE), cada linha, mesmo que seu conteúdo original seja duplicado, ganha um identificador exclusivo. Com esse identificador, é possível usar o comandoDELETEem conjunto comEXISTS(ou outras técnicas comoGROUP BYeMIN/MAXdo novo ID) para remover todas as cópias, exceto aquela com o menor (ou maior)temp_id, garantindo que apenas uma ocorrência de cada conjunto de valores duplicados seja mantida. Após a remoção, a coluna temporária pode ser descartada.
Fonte: FGV STN 2024 Auditor Federal de Finanças e Controle - Tecnologia da Informação (Operação e Infraestrutura) (Caderno Tipo 1). Reproduzida para fins de estudo.
