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

🏗️ 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: 🛡️

  1. 📦 PRODUTOS: Itens fabricados e preço sugerido.
  2. 👤 CLIENTES: Quem consome nossos produtos profissionais.
  3. 📄 VENDAS: Registro de faturamento e movimentação.
  4. 🔗 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. 🛡️