Normalização elimina redundância e anomalias. 1NF, 2NF, 3NF progressivamente refinam design. Aprenda com exemplos práticos.
Conceitos Principais
1NF (First Normal Form)
Valores atômicos. Sem arrays ou listas. Cada cell um valor. Remove repeating groups.
2NF (Second Normal Form)
1NF + sem partial dependencies. Non-key columns dependem de toda PK. Relevante para composite keys.
3NF (Third Normal Form)
2NF + sem transitive dependencies. Non-key columns dependem apenas de PK. Elimina redundância.
Denormalização
Duplicação intencional. Trade-off: complexity vs performance. Use em read-heavy, agregações.
Passo a Passo
- Identifique Violações 1NF: Table Users: id, name, phones (array). Viola 1NF. Solução: tabela UserPhones: user_id, phone.
- Normalize para 1NF: Users: id, name. UserPhones: id, user_id, phone. Atomic values. Uma row por phone.
- 2NF: Remove Partial Deps: OrderItems: order_id, product_id, product_name, quantity. product_name depende só de product_id. Solução: Products table.
- 3NF: Remove Transitive Deps: Orders: id, user_id, user_email. user_email depende de user_id, não de id. Solução: remove user_email, JOIN Users.
- Quando Denormalizar: Analytics: pre-aggregate em materialized views. Leaderboards: cache ranks. Read-heavy dashboards. Mantenha source normalizado.
Boas Praticas
Recomendacoes
• Normalize até 3NF por padrão
• Denormalize apenas com métricas
• Mantenha source of truth normalizado
• Document decisões de denormalização
• Use materialized views para agregações
• Monitor redundancy impact
Erros Comuns
Evite estes erros
• Denormalizar prematuramente
• Arrays/JSON quando relacionamento resolve
• Duplicar dados sem estratégia de sync
• Não normalizar por "simplicidade"
• Ignorar anomalias
Checklist
- Schema em 1NF
- Partial dependencies removidas (2NF)
- Transitive dependencies removidas (3NF)
- Redundância eliminada
- Denormalização documentada
- Queries testadas