📧 Seja contratado, promovido e ouvido no Tech global—em um email semanal. Confiado por +35 mil engenheiros da Meta, Revolut e Amazon

Normalização de Banco de Dados: Entendendo as Formas Normais

Entenda tudo sobre normalização de bancos de dados, desde a 1ª até a 5ª Forma Normal, com exemplos práticos, hacks SQL e dicas de otimização. Aprenda a projetar bancos de dados eficientes, eliminando redundâncias e garantindo integridade!

spot_img

Compartilhe:

Este FAQ detalhado aborda as formas normais de banco de dados, desde a 1ª Forma Normal (1FN) até a 5ª Forma Normal (5FN), incluindo conceitos, exemplos e hacks úteis. Vamos explorar as melhores práticas para criar um banco de dados bem projetado e eficiente.

É também um complemento do artigo: O que é normalização de banco de dados?

O que é Normalização em Banco de Dados?

A normalização é um processo sistemático para organizar dados em tabelas de um banco de dados relacional, reduzindo a redundância e garantindo a integridade dos dados. Ela é dividida em formas normais (normal forms), cada uma com critérios específicos.


1ª Forma Normal (1FN)

Critérios:

  1. Os dados devem ser armazenados em tabelas bidimensionais (linhas e colunas).
  2. Cada célula deve conter um único valor (atomização).
  3. Não deve haver grupos repetitivos ou listas dentro de colunas.

Exemplo:

Tabela Não Normalizada:

ID do ClienteNomeTelefones
1João12345, 67890
2Maria54321

Tabela em 1FN:

ID do ClienteNomeTelefone
1João12345
1João67890
2Maria54321

Hack:

Use o comando UNNEST em SQL para separar valores de uma lista em diferentes linhas:

SELECT ID, Nome, UNNEST(string_to_array(Telefones, ',')) AS Telefone
FROM clientes;

2ª Forma Normal (2FN)

Critérios:

  1. Satisfaz todos os requisitos da 1FN.
  2. Cada coluna não-chave deve depender exclusivamente da chave primária (eliminação de dependências parciais).

Exemplo:

Tabela em 1FN:

ID do PedidoProdutoPreçoClienteEndereço
1Livro30.00JoãoRua A, Nº 123
2Caneta5.00MariaRua B, Nº 456

Problema:

  • Dependência Parcial: O endereço depende apenas do cliente, não do ID do Pedido.

Tabelas em 2FN:

Pedidos:

ID do PedidoProdutoPreçoID do Cliente
1Livro30.001
2Caneta5.002

Clientes:

ID do ClienteNomeEndereço
1JoãoRua A, Nº 123
2MariaRua B, Nº 456

3ª Forma Normal (3FN)

Critérios:

  1. Satisfaz todos os requisitos da 2FN.
  2. Elimina dependências transitivas (uma coluna não-chave não deve depender de outra coluna não-chave).

Exemplo:

Tabela em 2FN:

ID do ClienteNomeCEPCidade
1João12345São Paulo
2Maria67890Rio

Problema:

  • Dependência Transitiva: O CEP determina a cidade.

Tabelas em 3FN:

Clientes:

✨ Novo Curso 2025

Programador com IA — Desenvolva 10x mais rápido

Domine as ferramentas de Inteligência Artificial mais poderosas do mercado aplicadas ao desenvolvimento web. Aprenda a automatizar tarefas, gerar componentes complexos e otimizar código profissionalmente.

Aulas práticas Projeto real completo Certificado incluso
🚀 Quero me inscrever agora 🛡️ Garantia de 7 dias

ID do ClienteNomeCEP
1João12345
2Maria67890

Endereços:

CEPCidade
12345São Paulo
67890Rio

Forma Normal de Boyce-Codd (BCNF)

Critérios:

  1. Satisfaz todos os requisitos da 3FN.
  2. Cada determinante deve ser uma chave candidata (elimina dependências funcionais inadequadas).

Exemplo:

Tabela em 3FN:

ID do CursoProfessorDepartamento
1Dr. SilvaMatemática
2Dr. LimaFísica

Problema:

  • Um professor pode ensinar em mais de um departamento, o que cria uma dependência funcional inadequada.

Tabelas em BCNF:

Cursos:

ID do CursoDepartamento
1Matemática
2Física

Professores:

ProfessorDepartamento
Dr. SilvaMatemática
Dr. LimaFísica

4ª Forma Normal (4FN)

Critérios:

  1. Satisfaz todos os requisitos da BCNF.
  2. Elimina dependências multivaloradas (uma entidade não deve ter múltiplos valores independentes associados).

Exemplo:

Tabela em BCNF:

AlunoCursoAtividade
JoãoMatemáticaXadrez
JoãoFísicaFutebol

Problema:

  • A relação entre cursos e atividades não é dependente.

Tabelas em 4FN:

Alunos-Cursos:

AlunoCurso
JoãoMatemática
JoãoFísica

Alunos-Atividades:

AlunoAtividade
JoãoXadrez
JoãoFutebol

5ª Forma Normal (5FN)

Critérios:

  1. Satisfaz todos os requisitos da 4FN.
  2. Remove dependências de junção (a tabela não deve depender de mais de uma relação composta).

Exemplo:

Tabela em 4FN:

AlunoCursoProfessor
JoãoMatemáticaDr. Silva
MariaFísicaDr. Lima

Problema:

  • A dependência entre Aluno e Professor deve ser analisada separadamente.

Tabelas em 5FN:

Alunos-Cursos:

AlunoCurso
JoãoMatemática
MariaFísica

Cursos-Professores:

CursoProfessor
MatemáticaDr. Silva
FísicaDr. Lima

Hacks e Dicas Práticas

  1. Identifique Dependências: Use consultas para detectar dependências não normalizadas:sqlCopiar códigoSELECT coluna1, coluna2, COUNT(*) FROM tabela GROUP BY coluna1, coluna2 HAVING COUNT(*) > 1;
  2. Automatize a Normalização: Utilize ferramentas de modelagem, como o MySQL Workbench ou pgAdmin, para identificar problemas de design.
  3. Desnormalize Quando Necessário: Em sistemas de alto desempenho (OLAP), a desnormalização pode ser útil para reduzir o número de junções:sqlCopiar códigoCREATE VIEW view_denormalizada AS SELECT c.ID, c.Nome, e.Cidade FROM Clientes c JOIN Enderecos e ON c.CEP = e.CEP;
  4. Teste o Desempenho: Utilize índices adequados para evitar lentidão após a normalização:sqlCopiar códigoCREATE INDEX idx_cliente_cep ON Clientes(CEP);

Resumo

A normalização é um processo crucial para o design de bancos de dados eficientes e livres de anomalias. Cada forma normal aborda um problema específico, desde a atomização de dados na 1FN até a eliminação de dependências complexas na 5FN. Aplicar essas técnicas garante um banco de dados robusto e escalável, pronto para atender às demandas do mundo real.

Se você tem dúvidas ou quer aprofundar o conhecimento, sinta-se à vontade para perguntar! 😊

Comandos SQL: 10 essenciais para todo programador!

Compartilhe:

Ramos da Informática
Ramos da Informáticahttps://ramosdainformatica.com.br
Ramos da Informática é um hub de comunidade sobre linguagens de programação, banco de dados, DevOps, Internet das Coisas, tecnologia da indústria 4.0, Cyber Segurança e Startups.

RECENTES

9 Projetos Open Source de IA e MCP para Turbinar a Produtividade do Dev

As equipes do GitHub Copilot e VS Code, juntamente...

Anthropic Lança Claude Skills: para Seus Fluxos de Trabalho

A Anthropic, empresa líder em inteligência artificial, anunciou recentemente...

Microsoft lança novas atualizações de IA para o Windows 11

Por Reuters - 16 de outubro (Reuters) - A...

Claude Sonnet 4.5: Mais Avançado para Programação e Automação

A Anthropic acaba de lançar o Claude Sonnet 4.5,...

AP2 do Google: Desenvolva Pagamentos para agentes de IA

O Google lançou o Agent Payments Protocol (AP2), um...

Curso gratuito de GitHub Copilot para devs e estudantes

A Microsoft abriu as inscrições para o primeiro Bootcamp...
Newsletter semanal no LinkedIn
EZine Dev Ramos da Informática
Grandes dicas em JavaScript, Node, React, Next, Banco de Dados & IA.
Assinar grátis
Abre em nova aba
spot_img

Carreira no exterior

🔥 Ativa

Vagas remotas no exterior + inglês diário

Comunidade #JNG: vagas frescas, mentoria e prática de entrevista.

💼
1000+ vagas/dia
🗣️
Inglês Seg-Sex
👥
Mentoria semanal
24h
Suporte
100%
Remoto
🚀 Entrar na Comunidade
🔒 Seguro e confiável