Questão de Banco de Dados — Normalização — CESPE / CEBRASPE 2025
Banco de Dados›Normalização
Código
ce417272
Banca
CESPE / CEBRASPE
Órgão
FUNPRESP-EXE
Ano
2025
Cargo
APC ( )
No que se refere à normalização de banco de dados, julgue o próximo item.
Em um banco de dados em que são armazenados dados previdenciários, a tabela contribuintes a seguir, que possui os seguintes atributos, não está na terceira forma normal, pois apresenta dependência funcional transitiva entre atributos.
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”.
Normalização de Dados – Terceira Forma Normal (3FN)
Gabarito: Certo. A tabela contribuintes não está na terceira forma normal (3FN) porque o atributo contribuicao_mensal é um campo calculado a partir de outros dois atributos não chave (renda_mensal e aliquota_contribuicao), configurando uma dependência funcional transitiva. A 3FN exige que todo atributo não chave dependa exclusivamente da chave primária, sem depender de outros atributos não chave.
A normalização é um processo de organização de dados em um banco de dados relacional que visa reduzir a redundância e evitar anomalias de inserção, exclusão e atualização. Ela é realizada por meio de um conjunto de regras chamadas formas normais, cada uma representando um nível mais estrito de organização. A terceira forma normal (3FN) é um dos níveis mais importantes e, na prática, é considerada o padrão mínimo para a maioria dos bancos de dados relacionais.
Para entender a 3FN, é preciso primeiro compreender o conceito de dependência funcional. Dizemos que um atributo B depende funcionalmente de um atributo A (A → B) se, para cada valor de A, existe exatamente um valor de B. A chave primária é o atributo (ou conjunto de atributos) que determina funcionalmente todos os outros atributos da tabela.
A 3FN estabelece que uma tabela deve estar na 2FN e que nenhum atributo não chave pode depender transitivamente da chave primária. Uma dependência transitiva ocorre quando um atributo não chave depende de outro atributo não chave, que por sua vez depende da chave primária. Em outras palavras, se A → B e B → C, então C depende transitivamente de A. Isso cria uma redundância e pode levar a anomalias.
No caso da tabela contribuintes, temos a chave primária cpf. Os atributos nome, data_nascimento, cod_municipio, aliquota_contribuicao e renda_mensal dependem diretamente do cpf. No entanto, o atributo contribuicao_mensal é calculado como renda_mensal × aliquota_contribuicao. Isso significa que contribuicao_mensal depende de renda_mensal e aliquota_contribuicao, que são atributos não chave. Portanto, há uma dependência transitiva: cpf → renda_mensal e cpf → aliquota_contribuicao, e renda_mensal, aliquota_contribuicao → contribuicao_mensal. Logo, contribuicao_mensal depende transitivamente de cpf.
A presença de um campo calculado ou derivado de outros campos não chave é uma violação clássica da 3FN. Para normalizar a tabela, seria necessário remover o atributo contribuicao_mensal e calculá-lo apenas quando necessário, ou então criar uma tabela separada para armazenar a contribuição, se houvesse uma razão para isso. A regra geral é que atributos derivados não devem ser armazenados na mesma tabela, pois violam a independência dos atributos não chave.
É importante distinguir a dependência transitiva da dependência parcial, que é uma violação da 2FN. A dependência parcial ocorre quando um atributo não chave depende de apenas parte de uma chave composta. Como a chave primária da tabela contribuintes é simples (cpf), não há dependência parcial, e a tabela está na 2FN. No entanto, a dependência transitiva a impede de estar na 3FN.
A banca explora exatamente essa distinção: o candidato pode confundir a violação da 3FN com a da 2FN, ou pode não reconhecer que um campo calculado gera uma dependência transitiva. A chave para resolver a questão é identificar que contribuicao_mensal é um atributo derivado de outros atributos não chave, o que configura a violação da 3FN.
cpf → contribuicao_mensal (via renda_mensal e aliquota_contribuicao) — transitiva
cpf → todos os demais atributos — direta
Conformidade com 3FN
❌ Não (viola por campo calculado)
✅ Sim
Ação necessária
Remover contribuicao_mensal ou calcular sob demanda
Armazenar apenas dados atômicos e não derivados
Item — ✅ CERTO
A afirmação está correta. A tabela contribuintes não está na 3FN porque apresenta dependência funcional transitiva. O atributo contribuicao_mensal é calculado a partir de renda_mensal e aliquota_contribuicao, que são atributos não chave. Isso viola a regra da 3FN, que exige que todos os atributos não chave dependam exclusivamente da chave primária, sem depender de outros atributos não chave.
PEGA ESSA DICA!
Para identificar uma violação da 3FN, procure por atributos que são calculados ou derivados de outros atributos não chave. Se um atributo depende de outro atributo não chave, há uma dependência transitiva. Lembre-se: a 3FN exige que cada atributo não chave dependa apenas da chave primária.