Design de database ruim causa bugs, performance issues e refactors caros. Aprenda princípios que criam schemas escaláveis e maintainable.
Conceitos Principais
Normalização
1NF: atomic values. 2NF: sem partial dependencies. 3NF: sem transitive dependencies. Reduz redundância.
Primary Keys
Único, não-null, imutável. SERIAL, UUID, ou composite. Index automático. Escolha afeta joins.
Foreign Keys
Referencia PK de outra tabela. Garante integridade referencial. ON DELETE CASCADE/SET NULL/RESTRICT.
Denormalização
Duplicação intencional para performance. Trade-off: storage vs speed. Use em read-heavy.
Passo a Passo
Boas Praticas
Recomendacoes
• Normalize até 3NF
• UUID ou BIGSERIAL para PKs
• Foreign keys com ON DELETE definido
• NOT NULL quando aplicável
• Naming conventions consistentes
• Índices em FKs
• Created_at, updated_at timestamps
• Soft deletes (deleted_at) para audit
• Enums para status fields
• JSON para dados flexíveis
• Comentários em tabelas complexas
• Version schema (migrations)
• Backup strategy
• Test em staging primeiro
• Document decisions
Erros Comuns
Evite estes erros
• Sem primary keys
• Sem foreign keys (integridade app-level)
• Naming inconsistente
• Denormalização prematura
• Sem índices em FKs
• VARCHAR(255) para tudo