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

🎯 ATIVIDADE 10 — ARQUITETO DE ELITE

Parabéns! Você chegou à décima semana (4 aulas) e ao primeiro grande marco do curso de Banco de Dados. Hoje, você deixará de ser um estudante para se tornar um Arquiteto de Soluções. O desafio final da Fase 1 é consolidar tudo o que aprendemos sobre SQL e NoSQL em um único ecossistema corporativo. 🛡️🏆


🎯 Objetivo da Aula

Ao final desta semana, você terá construído:

  • Um Modelo Relacional completo e normalizado (3FN).
  • Um script de Banco de Dados Real com carga de dados (DDL/DML).
  • Relatórios de Business Intelligence usando Joins e Agregações.
  • Uma camada de Persistência NoSQL para dados flexíveis.

🏢 O Cenário Prático (Seu Desafio Final)

A TecProExpress vai lançar o serviço "Ultra-Priority", focado em entregas de alto valor (como obras de arte e joias). Este serviço exige:

  1. Segurança Total (Relacional): Cadastro rigoroso de clientes, apólices de seguro e rotas.
  2. Rastreamento Detalhado (NoSQL): Logs de sensores térmicos, fotos da carga e assinaturas digitais que mudam de formato conforme o país.

Seu desafio é entregar a Arquitetura de Dados completa para este novo negócio.


🧠 O Roadmap do Arquiteto

Veja o caminho que seus dados vão percorrer:

flowchart TD
    A[1. Modelagem MER] --> B[2. Mapeamento 3FN]
    B --> C[3. Script SQL DDL]
    C --> D[4. Seed de Dados DML]
    D --> E[5. Relatórios BI]
    E --> F[6. Integração NoSQL]
    
    style A fill:#e3f2fd
    style F fill:#e8f5e9
    style C fill:#fffde7

🛠️ Passo 1: A Fundação Relacional (SQL)

Tarefa: Crie o esquema de banco de dados para o serviço Ultra-Priority.

  1. Modelagem: Desenhe no draw.io as tabelas CLIENTE, SEGURO e ENTREGA_ESPECIAL.
  2. Normalização: Garanta que os dados de seguro não estejam duplicados.
  3. Implementação: Escreva o script CREATE TABLE com todas as PKs e FKs.

🛠️ Passo 2: Inteligência e Auditoria

Tarefa: Gere os relatórios que o board da TecProExpress exigiu.

  1. Join: Liste o nome do cliente, o valor da apólice de seguro e o status da entrega.
  2. Agregação: Calcule o valor total segurado que está em trânsito no momento (SUM).

🛠️ Passo 3: Flexibilidade NoSQL (MongoDB)

Tarefa: Crie uma coleção no MongoDB chamada logs_rastreamento.

  1. Insira documentos JSON que contenham dados variados de sensores (ex: Um log com temperatura, outro com foto_url, outro com biometria_recebedor).
  2. Realize uma busca que traga apenas logs com alerta: true.

🚀 Script de Seed Consolidado (Gabarito de Teste)

-- DDL Rápido
CREATE TABLE seguro (id INT PRIMARY KEY, valor DECIMAL(15,2), descricao TEXT);
CREATE TABLE entrega_especial (id INT PRIMARY KEY, id_seguro INT, FOREIGN KEY (id_seguro) REFERENCES seguro(id));

-- DML de Carga
INSERT INTO seguro VALUES (1, 500000.00, 'Cobertura Diamante');
INSERT INTO entrega_especial VALUES (1001, 1);

📤 Instruções de Entrega (Microsoft Teams)

Parabéns por concluir o Projeto Integrador (Fase 1)! Para realizar a sua entrega com sucesso:

  1. Certifique-se de organizar seu repositório Git pessoal seguindo rigorosamente a estrutura de pastas descrita na página inicial (index.md).
  2. Adicione ao repositório:
    • O diagrama lógico no draw.io (.drawio e .drawio.png).
    • O script SQL completo (.sql) com CREATE DATABASE, criação física (DDL), carga de testes (DML) e os relatórios analíticos solicitados.
    • Os scripts MongoDB de persistência flexível em formato .js ou .json.
  3. Submeta na plataforma do Microsoft Teams:
    • O link público do seu repositório GitHub.
    • Os arquivos consolidados para verificação direta.

💡 Checkpoint de Lógica

[!IMPORTANT] Conselho de Carreira: Um projeto integrador é a sua melhor peça de portfólio. No GitHub, não suba apenas o código; use o README.md para explicar por que você escolheu o SQL para o seguro e o NoSQL para os logs. Isso demonstra visão arquitetural. 🧠🛡️


🔥 Desafio de Fixação (Opcional)

Nível: CTO (Chief Technology Officer) 🏆

Tente integrar os dados: No seu relatório final, como você associaria o id_entrega do SQL com o documento_id do MongoDB? (Dica: Pesquise sobre referências cruzadas entre bancos poliglotas).


🔑 Gabarito de Código/Fórmulas Completo

Relatório de Valor Segurado (BI):

SELECT c.nome, SUM(s.valor) AS risco_total
FROM cliente c
JOIN entrega_especial e ON c.id = e.id_cliente
JOIN seguro s ON s.id = e.id_seguro
GROUP BY c.nome;

Inserção NoSQL (Logística):

db.logs_rastreamento.insertOne({
  "entrega_id": 1001,
  "evento": "Check-in Aeroporto",
  "detalhes": { "temp_externa": 22.5, "umidade": 40 },
  "alerta": false
});

🔍 Explicação do Gabarito:

  • JOIN Triplo: Conecta três tabelas para cruzar a pessoa, o serviço e o valor.
  • Objeto Detalhes: No MongoDB, usamos objetos aninhados para guardar dados técnicos que não precisam de colunas fixas no SQL.