🎞️ Slides 📝 Material ← Módulo
Módulo 2 · Ciclo Comum · IN02 Plano de Ensino

Aula 4 — Banco de Dados III · JOINs

Plano operacional do dia: relacionar tabelas com JOINs, agregar com GROUP BY e responder, em SQL, perguntas reais de negócio do projeto.

← Voltar ao Módulo

Identificação

Disciplina
IN02 · Desenvolvimento Web
Módulo
2 — Ciclo Comum
Aula
4 de 11
Carga horária do dia
6h (2h + 2h + 2h)
Modalidade
Presencial · Metodologia ativa
Pré-aula
Autoestudo guiado

Resumo

A aula 4 fecha o bloco de banco com o aprendizado mais característico do modelo relacional: JOINs. Abordamos os tipos clássicos (INNER, LEFT, RIGHT, FULL), agregações (GROUP BY, HAVING, funções como COUNT, SUM, AVG), modelagem de relações N:N com tabela de junção e subconsultas.

O fechamento traz a leitura de EXPLAIN como ferramenta para entender performance — preparando a equipe para escrever todos os relatórios analíticos do projeto à tarde.

Objetivos de aprendizagem

  • OA-1Diferenciar os tipos de JOIN (INNER, LEFT, RIGHT, FULL) e prever quais linhas aparecem no resultado.
  • OA-2Compor consultas com JOIN + WHERE resolvendo perguntas de negócio reais.
  • OA-3Agregar dados com GROUP BY, HAVING e funções de agregação.
  • OA-4Modelar relações N:N com tabela de junção e consultar via duplo JOIN.
  • OA-5Escrever subconsultas em WHERE, FROM e SELECT.
  • OA-6Ler a saída de EXPLAIN e identificar gargalos básicos.

Pré-requisitos

  • Aula 3 concluída: CRUD completo do minimundo no banco da equipe.
  • Massa de teste com pedidos contendo múltiplos produtos (para os JOINs renderem resultados úteis).
  • Tabela de junção identificada no DER (caso o minimundo tenha relação N:N).

Cronograma do dia

📚 Bloco 1 · Autoestudo

08h00 — 10h00

Estudo individual orientado pelo material da aula 4.

  • Leitura completa do Material da Aula 4 (JOINs, agregações, subconsultas).
  • Listar 3 relatórios de negócio do minimundo que exigem unir tabelas (ex.: total vendido por usuário no mês).
  • Validar que existe massa de teste suficiente para os relatórios.
  • Caderno de bordo: anotar dúvidas sobre cardinalidade dos resultados.

🎓 Bloco 2 · Instrução PE — Aula em metodologia ativa

10h00 — 12h00

Encontro síncrono com o professor especialista. 15 minutos de daily seguidos de 1h45 de aula.

  • 10h00 — 10h15 · Daily: relatórios trazidos do autoestudo.
  • 10h15 — 12h00 · Tipos de JOIN, laboratório, agregação, subconsultas e EXPLAIN.

🍴 Intervalo · Almoço

12h00 — 14h00

Janela livre.

🛠️ Bloco 3 · Desenvolvimento do projeto

14h00 — 16h00

Janela de trabalho da equipe sobre o projeto integrador.

  • Escrever em db/relatorios.sql as 5 consultas analíticas mais relevantes do minimundo.
  • Cada consulta deve ter pelo menos 1 JOIN, e ao menos 2 devem usar agregação.
  • Rodar EXPLAIN nas 2 consultas mais pesadas e registrar conclusões em docs/banco/performance.md.
  • Abrir Merge Request feat(db): relatórios e joins com evidência de execução.

Detalhamento da instrução PE (10h00 — 12h00)

10h00
10h15

DailyDaily de abertura

Cada aluno apresenta, em 1 minuto, um relatório do minimundo que precisa de JOIN para existir.

10h15
10h35

AtivaTipos de JOIN — exercício visual

O professor mostra dois conjuntos de linhas em quadro. Em pares, os alunos preenchem o resultado esperado de INNER, LEFT, RIGHT e FULL antes de qualquer SQL ser escrito. Conferência coletiva.

10h35
10h55

CodingINNER e LEFT na prática

Em pares: escrever SELECT com INNER JOIN e depois LEFT JOIN sobre a mesma pergunta. A turma debate quando cada um faz sentido (clientes ativos vs. todos os clientes).

10h55
11h20

AtivaDesafio de agregação · GROUP BY + HAVING

Cada equipe recebe uma pergunta agregada (ex.: "produtos com mais de 10 vendas") e escreve a query. Três equipes apresentam — debate sobre o erro clássico de filtrar grupo no WHERE.

11h20
11h40

TalkRelação N:N e subconsultas

Apresentação da tabela de junção como ponte entre duas entidades de cardinalidade muitos-muitos. Demo de subconsulta correlacionada e subconsulta no FROM.

11h40
11h55

CodingEXPLAIN — o plano por trás da query

O professor roda EXPLAIN em uma query lenta, lê o resultado em voz alta e introduz o índice como solução. Em duplas, alunos repetem na própria base.

11h55
12h00

AtivaSíntese

Cada aluno escreve "a aula 4 me ensinou que...". O professor anuncia a entrega da tarde: 5 consultas analíticas + análise de performance.

Estratégias de metodologia ativa

  • Predição antes da execução — alunos escrevem o resultado esperado do JOIN antes de rodar a query, reforçando o modelo mental.
  • Aprendizagem por relatório real — cada query nasce de uma pergunta de negócio do minimundo, não de exercício abstrato.
  • Diagnóstico em pares — ler EXPLAIN em conjunto, debatendo trade-offs antes de criar índice.

Recursos e ferramentas

CategoriaRecursoUso
Slidesslides/slide-lesson-4.htmlExposição na instrução PE
Materialmaterials/lesson-4-material.htmlAutoestudo
Cliente SQLpsql ou DBeaverExecução e EXPLAIN
Repositóriodb/relatorios.sql5 consultas analíticas
Documentaçãodocs/banco/performance.mdAnálise de EXPLAIN

Verificação de aprendizagem

  • CR-1Apresentou na daily um relatório do minimundo viável apenas com JOIN.
  • CR-2Previu corretamente, em par, a saída de INNER vs. LEFT antes da execução.
  • CR-3Resolveu a pergunta agregada com GROUP BY + HAVING sem confundir com WHERE.
  • CR-4Leu uma saída de EXPLAIN e identificou ao menos um ponto de atenção.
  • CR-5Abriu Merge Request feat(db): relatórios e joins com 5 consultas + análise de performance até as 16h00.
Critério mínimo

Aluno que sair às 16h sem ao menos 3 relatórios funcionais com JOIN está em débito técnico para o início do back-end.

Conexão com a aula 5

A aula 5 abre o bloco de back-end: as queries escritas nas aulas 2–4 deixarão o cliente SQL e passarão a viver dentro de Models do Node.js + Express.

  • O db/queries.sql e o db/relatorios.sql serão a fonte das primeiras funções dos Models.
  • O esquema do banco está congelado a partir daqui (alterações exigem migração documentada).
Para o autoestudo da aula 5

Antes das 8h do próximo dia: instalar Node.js LTS, ler o material da aula 5 e listar 3 endpoints HTTP que você imagina existir no projeto.

Inteli Logo