Entendendo as Formas Normais no Banco de Dados


Entendendo as Formas Normais no Banco de Dados

Organizar dados não é apenas uma questão de estética: é essencial para evitar redundâncias, inconsistências e anomalias. Foi Edgar F. Codd, criador do modelo relacional, quem introduziu o conceito de normalização — e mais tarde, junto com Raymond Boyce, surgiu a famosa Forma Normal de Boyce-Codd (BCNF).

Mas afinal, o que são essas formas normais?

🔹 Primeira Forma Normal (1FN)

  • Definição: todos os atributos devem conter valores atômicos (simples e indivisíveis).
  • Problema que resolve: elimina colunas com listas, valores compostos ou aninhados.
  • Exemplo: em vez de ter uma coluna “telefones” com vários números, criamos uma tabela separada para armazenar cada telefone.

🔹 Segunda Forma Normal (2FN)

  • Definição: a tabela deve estar na 1FN e não conter dependências parciais.
  • Problema que resolve: evita que atributos não chave dependam apenas de parte da chave primária composta.
  • Exemplo: separar informações de projetos e empregados em tabelas distintas, evitando que o nome do empregado dependa apenas do CPF ou apenas do código do projeto.

🔹 Terceira Forma Normal (3FN)

  • Definição: a tabela deve estar na 2FN e não conter dependências transitivas.
  • Problema que resolve: impede que atributos não chave dependam de outros atributos não chave.
  • Exemplo: se “sexo” depende de “nome do empregado”, que por sua vez depende do CPF, temos uma dependência transitiva. A solução é reorganizar em tabelas independentes.

 

A normalização é como uma “faxina” nos dados: elimina redundâncias, garante integridade e facilita manutenção. Em sistemas transacionais (OLTP), ela é indispensável. Já em ambientes analíticos (OLAP), muitas vezes ocorre a desnormalização para otimizar consultas.

Acesse meu artigo no Linkedin sobre o assunto:



https://www.linkedin.com/pulse/normaliza%25C3%25A7%25C3%25A3o-daniel-fran%25C3%25A7a-dejif

Comentários

Postagens mais visitadas deste blog

Projeto de Banco de Dados: Setor Varejo

Projeto Prático de Engenharia de Dados com Python, SQL e GitHub

Um breve conceito prático sobre Engenharia de Dados