03 Tipos e modelagem - rodrigomourapinto/aprenda_postgresql GitHub Wiki
Tipos de dados e modelagem
Escolher o tipo certo reduz ambiguidades e evita conversões desnecessárias.
Tipos comuns
| Necessidade | Tipo sugerido |
|---|---|
| identificador inteiro | integer ou bigint |
| texto livre | text |
| texto com limite explícito | varchar(n) |
| valor monetário calculado | numeric(p,s) |
| verdadeiro/falso | boolean |
| data | date |
| data e hora | timestamp |
| data e hora com fuso | timestamptz |
| valor único identificável | uuid |
| lista simples | array |
| documento estruturado | jsonb |
Exemplo
CREATE TABLE clientes (
cliente_id bigint GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
nome text NOT NULL,
email text NOT NULL UNIQUE,
ativo boolean NOT NULL DEFAULT true,
criado_em timestamptz NOT NULL DEFAULT now()
);
Regras de modelagem
Comece pelos fatos que precisam ser armazenados. Depois defina as entidades, relações e regras de integridade. Não use text para tudo: o tipo deve representar a regra do domínio.
Também vale distinguir NULL de valor vazio. NULL significa ausência ou desconhecimento do valor; '' é uma string vazia.