0Pricing
SQL Academy · Aula

Escolhendo chaves e tipos

Escolha entre chaves primárias BIGSERIAL e UUID, decida entre TEXT e VARCHAR(n) e selecione o tipo certo para cada coluna.

Escolhendo chaves e tipos é uma aula grátis de SQL Academy no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de SQL Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de SQL Academy inclui 4 aulas no total.

Escolhendo uma PK

Três opções reais:

  1. BIGSERIAL — inteiro de 64 bits que aumenta monotonicamente
  2. UUID — identificador globalmente exclusivo de 128 bits
  3. Chave natural — um identificador do mundo real (e-mail, ISBN)

Quando BIGSERIAL é a melhor opção

Opção padrão para a maioria das aplicações:

  • Pequeno (8 bytes), índice rápido, favorável ao cache
  • Monotônico → os dados recentes se agrupam no final do índice
  • Legível em URLs (por exemplo, /posts/42)

Quando UUID é a melhor opção

Escolha UUID quando:

  • Você precisar de identificadores globalmente exclusivos (vários datacenters, aplicações que funcionam primeiro offline)
  • Não quiser que os identificadores revelem o volume do negócio nas URLs
  • Quiser gerar o identificador no lado do cliente antes da inserção

Custo: 16 bytes (contra 8 para BIGINT), e UUIDs v4 aleatorizam as inserções no índice.

Por que chaves naturais são arriscadas

Os e-mails mudam. Os SKUs são renomeados. Códigos de país são divididos. Use uma chave substituta como PK e uma restrição UNIQUE na chave natural.

Tipos de coluna: texto

Para a maioria das colunas de texto:

  • VARCHAR(n) — quando houver um limite superior rígido (e-mails, códigos)
  • TEXT — para conteúdo livre e longo
  • CITEXT — quando a comparação sempre deverá ignorar maiúsculas e minúsculas (e-mails!)

Tipos de coluna: números

Para colunas numéricas:

  • BIGINT para identificadores e contadores
  • NUMERIC(p, s) para valores monetários
  • REAL/DOUBLE PRECISION somente para ciência

Tipos de coluna: tempo

Para colunas de tempo:

  • TIMESTAMPTZ para eventos (padrão)
  • DATE para dias do calendário (datas de nascimento, feriados)
  • TIME para horários do dia sem uma data (horários de funcionamento de lojas)

Booleano versus estado

Se uma coluna tiver mais de dois estados futuros, prefira um texto de estado com CHECK em vez de um booleano:

-- Will probably grow:
status TEXT NOT NULL CHECK (status IN ('draft','published','archived'))

-- vs the trap of "is_published BOOLEAN" when you later need a third state.

Restrições essenciais

Toda coluna deve ter:

  • O tipo mais restrito que seja adequado
  • NOT NULL, a menos que NULL tenha significado
  • Um DEFAULT se a coluna tiver quase sempre o mesmo valor
  • Um CHECK se houver uma regra de domínio
  • Um índice se for usada em WHERE/JOIN/ORDER

Implicações de armazenamento

Tipos menores = linhas menores = mais linhas por página = melhor taxa de acerto do cache. Trocar TEXT por VARCHAR(20) não economiza espaço (o armazenamento é o mesmo). Trocar BIGINT por INT reduz pela metade a largura da coluna.

Os tipos das chaves estrangeiras devem corresponder

Os tipos das colunas de chaves estrangeiras devem corresponder exatamente ao tipo da PK referenciada:

-- Wrong (silently won't use the index efficiently):
user_id INT REFERENCES users(id)   -- where users.id is BIGINT

-- Right:
user_id BIGINT REFERENCES users(id)

Resumo

A escolha do tipo faz parte do design.

  • BIGSERIAL ou UUID para PK
  • NUMERIC para valores monetários
  • TIMESTAMPTZ para eventos
  • TEXT com CHECK para estados que evoluem
  • NOT NULL por padrão

Verificação rápida

Você está armazenando os horários dos eventos de usuários em vários fusos horários. Qual tipo deve usar?

Perguntas Frequentes

A aula “Escolhendo chaves e tipos” é grátis?

Sim — o texto completo de “Escolhendo chaves e tipos” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de SQL Academy, atualize para CoddyKit PRO. O curso de SQL Academy inclui 4 aulas no total.

O que vou aprender em “Escolhendo chaves e tipos”?

Escolha entre chaves primárias BIGSERIAL e UUID, decida entre TEXT e VARCHAR(n) e selecione o tipo certo para cada coluna. Você pratica SQL Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar SQL Academy?

Nenhuma experiência prévia é necessária. SQL Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.

Quanto tempo leva a aula “Escolhendo chaves e tipos”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de SQL Academy?

Sim. Cada aula de SQL Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Modelando um blog: usuários, publicações e comentários
  2. Escolhendo chaves e tipos
  3. Índices para consultas comuns
  4. Populando o banco de dados com dados de teste
← Voltar para SQL Academy