🔢 DOMÍNIOS E TIPOS DE DADOS (MYSQL VS POSTGRES)
O Domínio é o conjunto de valores válidos que um atributo pode aceitar. É a primeira linha de defesa da integridade dos dados. Na engenharia moderna, escolher o tipo de dado correto economiza espaço e aumenta a velocidade. 🛡️🧩
Objetivo: Comparar os tipos de dados entre MySQL 8.4 e PostgreSQL 17, dominando o uso de autoincremento, restrições de domínio e tipos híbridos (JSON/JSONB).
📗 PASSO 1: Mapeamento de Tipos Universais
| Categoria | MySQL 8.4 LTS | PostgreSQL 17 | Aplicação Profissional |
|---|---|---|---|
| Inteiros | INT, BIGINT | INT, BIGINT | IDs, Contadores. |
| Decimais | DECIMAL(10,2) | NUMERIC(10,2) | Finanças. |
| Textos | VARCHAR(N) | VARCHAR(N) | Nomes, Descrições. |
| Datas | DATE, DATETIME | DATE, TIMESTAMP | Logs, Prazos. |
| Híbridos | JSON | JSONB | Estruturas Flexíveis. |
📗 PASSO 2: Autoincremento (A Diferença Técnica)
Uma das maiores dúvidas é como criar IDs automáticos nas duas stacks:
🐬 No MySQL 8.4
CREATE TABLE produtos (
id INT PRIMARY KEY AUTO_INCREMENT
);
🐘 No PostgreSQL 17
CREATE TABLE produtos (
id INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY
);
📗 PASSO 3: Restrições de Domínio (Integridade)
📊 Lógica da Restrição CHECK
flowchart TD
IN[📥 Entrada de Valor] --> CHK{⚠️ Preço > 0?}
CHK -- SIM --> OK[✅ Grava no Banco]
CHK -- NÃO --> ERR[❌ Rejeita e Retorna Erro]
📗 Power Tools de Domínio
- ✅ CHECK: Valida o valor antes de aceitá-lo (ex:
CHECK (preco > 0)). - 📌 DEFAULT: Insere um valor padrão (ex:
DEFAULT 'Ativo'). - 🔢 ENUM: Lista fechada de opções (nativa no MySQL).
📗 PASSO 4: JSON vs JSONB (Arquitetura Híbrida)
Se o seu sistema precisa de campos flexíveis:
- MySQL JSON: Armazena e valida o texto.
- Postgres JSONB: Armazena em binário indexado. É muito mais rápido para filtros.
💡 Dica do Arquiteto: Evite usar
BIGINTpara tudo. No MySQL, se um campo nunca passará de 255 (ex: idade), useTINYINT. Economia de espaço é performance! 🚀🛡️