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
- Defina Entidades: Identifique nouns: User, Order, Product. Cada entidade vira tabela. Atributos viram colunas.
- Estabeleça Relacionamentos: 1-to-1: user → profile (FK em profile). 1-to-many: user → orders (FK em orders). Many-to-many: products ↔ orders (junction table).
- Normalize: Remova redundância. Separe em tabelas. Users: id, name. Addresses: id, user_id, street. Não: users.address1, address2, ...
- Adicione Constraints: NOT NULL, UNIQUE, CHECK. PRIMARY KEY, FOREIGN KEY. Garante integridade no DB level.
- Plan Indexes: PK (automático), FKs, WHERE clauses, JOIN columns. Não indexe tudo. Monitor usage.
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
Checklist
- Entidades identificadas
- Relacionamentos definidos
- Schema normalizado
- Constraints adicionadas
- Foreign keys configuradas
- Índices planejados
- Naming conventions aplicadas