🏗️ MAPEAMENTO PARA O RELACIONAL
Chegamos ao ápice da nossa jornada! Vamos aplicar o conhecimento na prática para a fábrica TOP UNIFORMES. 🛡️🧩
Objetivo: Implementar o esquema físico (DDL) e desenvolver consultas de inteligência de negócio (JOINs) para extrair faturamento e detalhes de vendas.
📗 PASSO 1: Levantamento Estratégico
Antes de codificar, relembramos o coração do negócio: 🛡️
- 📦 PRODUTOS: Itens fabricados e preço sugerido.
- 👤 CLIENTES: Quem consome nossos produtos profissionais.
- 📄 VENDAS: Registro de faturamento e movimentação.
- 🔗 ITENS DA VENDA: O detalhamento técnico de cada fatura.
📗 PASSO 2: Implementação do Esquema (DDL)
Criaremos as tabelas respeitando a Integridade Referencial: 🛡️
-- 1. Tabelas Independentes
CREATE TABLE PRODUTOS (
ID INT PRIMARY KEY,
DESCRICAO VARCHAR(100) NOT NULL,
VALOR_SUGERIDO DECIMAL(12,2)
);
CREATE TABLE CLIENTES (
ID INT PRIMARY KEY,
NOME VARCHAR(100) NOT NULL,
ESTADO CHAR(2)
);
-- 2. Tabela de Movimentação
CREATE TABLE VENDA (
ID INT PRIMARY KEY,
DATA_MOVTO DATE DEFAULT CURRENT_DATE,
CLIENTE_ID INT,
VALOR_TOTAL DECIMAL(12,2),
FOREIGN KEY (CLIENTE_ID) REFERENCES CLIENTES(ID)
);
-- 3. Detalhamento (Tabela Associativa)
CREATE TABLE VENDA_ITENS (
VENDA_ID INT,
SEQUENCIAL INT,
PRODUTO_ID INT,
QUANTIDADE DECIMAL(10,2),
VALOR_UNIDADE DECIMAL(12,2), -- PREÇO HISTÓRICO
PRIMARY KEY (VENDA_ID, SEQUENCIAL),
FOREIGN KEY (VENDA_ID) REFERENCES VENDA(ID),
FOREIGN KEY (PRODUTO_ID) REFERENCES PRODUTOS(ID)
);
📗 PASSO 3: Inteligência de Negócio (SELECT)
Como extrair um relatório completo de faturamento? Usamos o JOIN: 🛡️
SELECT
V.ID AS "Nº VENDA",
C.NOME AS "CLIENTE",
P.DESCRICAO AS "PRODUTO",
VI.QUANTIDADE AS "QTD",
VI.VALOR_UNIDADE AS "PREÇO UN.",
(VI.QUANTIDADE * VI.VALOR_UNIDADE) AS "SUBTOTAL"
FROM VENDA V
JOIN CLIENTES C ON V.CLIENTE_ID = C.ID
JOIN VENDA_ITENS VI ON V.ID = VI.VENDA_ID
JOIN PRODUTOS P ON VI.PRODUTO_ID = P.ID;
🏆 Desafio de Especialista
Tente criar uma consulta que mostre o Faturamento Total por Estado.
➡️ Clique aqui para revelar a Solução (SPOILER) ⬅️
SELECT C.ESTADO, SUM(V.VALOR_TOTAL) AS FATURAMENTO
FROM VENDA V
JOIN CLIENTES C ON V.CLIENTE_ID = C.ID
GROUP BY C.ESTADO
ORDER BY FATURAMENTO DESC;
💡 Visão de Arquiteto: Note como a tabela
VENDA_ITENSé o coração estrutural. Sem ela, você saberia quanto o cliente pagou, mas nunca saberia o que ele realmente levou. 🛡️