Questão de Banco de Dados — Normalização — CESPE / CEBRASPE 2024
- Código
- ce403609
- Banca
- CESPE / CEBRASPE
- Órgão
- INPI
- Ano
- 2024
- Cargo
- APGIPI ( )
- CCerto
- EErrado
GabaritoE — Errado
Gabarito: Errado. A tabela não está na segunda forma normal (2FN) apenas por não possuir grupos repetitivos — esse é um requisito da primeira forma normal (1FN). Para estar na 2FN, a tabela deve estar na 1FN e todos os atributos não chave devem depender da chave primária inteira, ou seja, não pode haver dependência parcial de atributos não chave em relação a apenas parte de uma chave composta. Como a chave é composta por cod_cliente e cod_produto, e atributos como nome_produto e preço provavelmente dependem apenas de cod_produto, há dependência parcial — o que viola a 2FN.
A normalização é um processo de organização de tabelas em bancos de dados relacionais, dividido em formas normais (1FN, 2FN, 3FN, etc.), cada uma com requisitos específicos. A 1FN exige que todos os atributos tenham valores atômicos (indivisíveis) e que não existam grupos repetitivos (ou seja, cada célula contém um único valor, e não uma lista ou conjunto). A 2FN vai além: além de estar na 1FN, exige que cada atributo não chave seja totalmente dependente da chave primária — se a chave for composta, nenhum atributo não chave pode depender de apenas parte dela. Isso é chamado de dependência funcional total. A 3FN, por sua vez, exige que não haja dependências transitivas entre atributos não chave.
No caso da tabela Produto, a chave primária é composta por cod_cliente e cod_produto. Isso significa que, para identificar uma linha, precisamos da combinação dos dois. Agora, observe os atributos não chave: nome_produto e preço — é razoável supor que eles dependem apenas de cod_produto, e não de cod_cliente. Por exemplo, o nome e o preço de um produto são características do próprio produto, independentemente de qual cliente o comprou. Isso configura uma dependência parcial: nome_produto e preço dependem de apenas parte da chave (cod_produto), e não da chave inteira. Portanto, a tabela viola a 2FN.
A banca explora aqui uma confusão clássica: trocar o requisito da 1FN (ausência de grupos repetitivos) pelo da 2FN (ausência de dependência parcial). O enunciado afirma que a tabela está na 2FN porque não possui grupos repetitivos — isso é um erro conceitual. A ausência de grupos repetitivos é condição para a 1FN, não para a 2FN. Além disso, mesmo que a tabela estivesse na 1FN, ela não estaria na 2FN justamente por causa da dependência parcial.
Para fixar: a 2FN não se verifica olhando para a tabela em si, mas sim para as dependências funcionais entre os atributos. A pergunta-chave é: "cada atributo não chave depende da chave inteira ou apenas de parte dela?" Se depender de parte, a tabela está apenas na 1FN (no máximo).
Critério | 1FN | 2FN | 3FN |
|---|---|---|---|
Requisito principal | Atributos atômicos, sem grupos repetitivos | Estar na 1FN + dependência total de atributos não chave em relação à chave inteira | Estar na 2FN + sem dependência transitiva entre atributos não chave |
Foco da verificação | Estrutura da tabela (valores indivisíveis) | Dependências funcionais com chave composta | Dependências funcionais entre atributos não chave |
Exemplo na questão | ✅ Atendida (não há grupos repetitivos) | ❌ Violada — | Não avaliada (a tabela já falha na 2FN) |
Conclusão para a tabela Produto | Está na 1FN | Não está na 2FN | Não se aplica |
A afirmação está errada por dois motivos: (1) a ausência de grupos repetitivos é requisito da 1FN, não da 2FN; (2) a tabela provavelmente viola a 2FN porque nome_produto e preço dependem apenas de cod_produto, caracterizando dependência parcial em relação à chave composta. Portanto, a tabela está, no máximo, na 1FN.
A banca troca o requisito da 1FN (sem grupos repetitivos) pelo da 2FN (sem dependência parcial). Cuidado: a 2FN só se aplica quando há chave composta, e exige que todo atributo não chave dependa da chave inteira — se depender de parte, não está na 2FN.
Gabarito: Errado
Link permanente: /questoes/ce403609