Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

🔢 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

CategoriaMySQL 8.4 LTSPostgreSQL 17Aplicação Profissional
InteirosINT, BIGINTINT, BIGINTIDs, Contadores.
DecimaisDECIMAL(10,2)NUMERIC(10,2)Finanças.
TextosVARCHAR(N)VARCHAR(N)Nomes, Descrições.
DatasDATE, DATETIMEDATE, TIMESTAMPLogs, Prazos.
HíbridosJSONJSONBEstruturas 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

  1. ✅ CHECK: Valida o valor antes de aceitá-lo (ex: CHECK (preco > 0)).
  2. 📌 DEFAULT: Insere um valor padrão (ex: DEFAULT 'Ativo').
  3. 🔢 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 BIGINT para tudo. No MySQL, se um campo nunca passará de 255 (ex: idade), use TINYINT. Economia de espaço é performance! 🚀🛡️