1. Identificadores & Chaves
BIGINT UNSIGNED AUTO_INCREMENT
Chave primária de 64 bits para tabelas massivas (padrão em frameworks modernos como Laravel).
💾 Espaço em Disco: 8 Bytes (64 bits)
📏 Limites: De 0 até 18.446.744.073.709.551.615 (Unsigned)
Ocupa o dobro do espaço de um INT (8 bytes em vez de 4), mas permite até 18 quintilhões de registros. Frameworks modernos como Laravel utilizam BIGINT UNSIGNED como padrão (`$table->id()`) para garantir que nenhuma tabela esgote seus IDs, mesmo em sistemas de grande escala.
✅ Quando Usar
- •Tabelas que crescem rapidamente: pedidos, itens_pedido, logs_acesso, mensagens_chat, notificações, movimentações.
- •Como padrão geral de chave primária caso queira total padronização no banco inteiro.
🚫 Quando NÃO Usar
- •Tabelas auxiliares estáticas minúsculas (ex: estados_brasileiros com 27 linhas), onde `TINYINT` ou `INT` economiza memória em milhões de FKs.
- •ATENÇÃO NO DRAWDB: Nunca crie uma FK `INT` apontando para uma PK `BIGINT`! O MySQL recusará criar a Foreign Key (Erro 150 / 3780).
📐 Configuração no DrawDB
- Type:
- BIGINT
- Size / Values:
- Vazio
- Default:
- Vazio
MySQL / MariaDB
BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY
PostgreSQL
BIGSERIAL PRIMARY KEY
SQLite
INTEGER PRIMARY KEY AUTOINCREMENT
🗄️ SQL DDL (Pronto para Importar no DrawDB)
CREATE TABLE usuarios (
id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
email VARCHAR(150) NOT NULL UNIQUE
);
CREATE TABLE logs_auditoria (
id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
usuario_id BIGINT UNSIGNED NOT NULL,
acao VARCHAR(100) NOT NULL,
criado_em TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT fk_logs_usuario
FOREIGN KEY (usuario_id) REFERENCES usuarios(id)
ON DELETE CASCADE
);
🐘 Exemplo Prático em PHP 8 + PDO
<?php
declare(strict_types=1);
// Em PHP de 64-bits (padrão atual), o tipo `int` suporta até 9 quintilhões (PHP_INT_MAX).
$usuarioId = 9876543210;
$stmt = $pdo->prepare('
INSERT INTO logs_auditoria (usuario_id, acao)
VALUES (:usuario_id, :acao)
');
$stmt->bindValue(':usuario_id', $usuarioId, PDO::PARAM_INT);
$stmt->bindValue(':acao', 'LOGIN_SUCESSO', PDO::PARAM_STR);
$stmt->execute();
$logId = (int) $pdo->lastInsertId();