Identificação
Resumo
A aula 3 aprofunda o SQL operacional sobre o esquema construído na aula 2. O foco é o ciclo CRUD completo com refinamentos de consulta (WHERE, ORDER BY, LIMIT, OFFSET), comandos de mutação seguros (UPDATE e DELETE sempre com WHERE) e os mecanismos do banco que protegem a integridade: transações ACID e índices para performance.
O fechamento revisita o RM-ODP (visão Information) e prepara a tarde de desenvolvimento, em que cada equipe implementa todas as operações de dados do minimundo no banco da equipe.
Objetivos de aprendizagem
- OA-1Aplicar os 4 comandos do CRUD (
INSERT,SELECT,UPDATE,DELETE) com sintaxe correta em PostgreSQL. - OA-2Compor consultas com
WHERE,ORDER BY,LIMITeOFFSETpara filtragem, ordenação e paginação. - OA-3Identificar o risco de
UPDATE/DELETEsemWHEREe adotar checklist defensivo antes de executar. - OA-4Operar transações com
BEGIN,COMMITeROLLBACKrespeitando as propriedades ACID. - OA-5Criar índices simples e justificar quando vale a pena usá-los.
- OA-6Implementar todas as operações de dados do minimundo da equipe no banco do projeto.
Pré-requisitos
- Aula 2 concluída: tabelas criadas no banco da equipe a partir do
CREATE TABLE. - Massa de dados mínima inserida (3+
INSERTs na aula anterior). - Cliente SQL operacional (
psql, DBeaver, TablePlus ou extensão SQL do VS Code). - Repositório com
db/01_create_tables.sqlmergeado nadevelop.
Cronograma do dia
Mesma estrutura: três blocos de duas horas, com a janela da tarde dedicada a transformar o conteúdo em CRUD real no projeto.
📚 Bloco 1 · Autoestudo
08h00 — 10h00Estudo individual orientado pelo material da aula 3.
- Leitura completa do Material da Aula 3 (CRUD, transações, índices).
- Listar 5 operações de negócio do minimundo da equipe — uma para cada verbo CRUD + uma de paginação.
- Validar conexão ao banco da equipe e revisar dados existentes (
SELECT * FROM ...). - Caderno de bordo: registrar dúvidas concretas sobre transações e índices.
🎓 Bloco 2 · Instrução PE — Aula em metodologia ativa
10h00 — 12h00Encontro síncrono com o professor especialista. 15 minutos de daily seguidos de 1h45 de aula.
- 10h00 — 10h15 · Daily: andamento do banco e impedimentos.
- 10h15 — 12h00 · CRUD em laboratório, transações com cenário real e índices na prática.
🍴 Intervalo · Almoço
12h00 — 14h00Janela livre. Recomenda-se não tratar conteúdo da aula nesse período.
🛠️ Bloco 3 · Desenvolvimento do projeto
14h00 — 16h00Janela de trabalho da equipe sobre o projeto integrador, com mentoria disponível.
- Escrever
db/02_seed.sqlcom massa de teste realista para todas as tabelas. - Escrever
db/queries.sqlcom 10+ queries representativas das operações do minimundo. - Implementar pelo menos 2 transações relevantes (ex.: criar pedido + atualizar estoque).
- Avaliar 2 candidatos a índices e justificar no
docs/banco/decisoes.md. - Abrir Merge Request
feat(db): crud e transações.
Detalhamento da instrução PE (10h00 — 12h00)
Estrutura idêntica às aulas anteriores: blocos curtos de exposição alternados com prática em pares.
10h15
DailyDaily de abertura
Cada aluno responde, em até 1 minuto: como está o banco da equipe / qual operação do CRUD trouxe pronta / qual minha dúvida concreta.
10h30
TalkCRUD em síntese · O ciclo operacional
Exposição curta (12 min) revisando a anatomia dos 4 verbos com exemplos lado a lado e seus padrões de retorno.
10h55
CodingLaboratório de SELECT — WHERE, ORDER BY, LIMIT
Em duplas, os alunos respondem 6 perguntas de negócio do minimundo escrevendo apenas SELECT. Três duplas apresentam alternativas — debate sobre legibilidade e cardinalidade do resultado.
11h15
AtivaUPDATE e DELETE com defesa
Demonstração intencional do desastre: UPDATE produtos SET preco=0; sem WHERE. Em duplas, os alunos definem checklist defensivo (testar com SELECT primeiro, usar transação, fazer backup) e aplicam para reescrever 2 mutações.
11h35
CodingTransações ACID em cenário real
Live coding: criar pedido + dar baixa no estoque dentro de uma única transação. Ao vivo, o professor injeta uma falha no meio para mostrar o ROLLBACK. Alunos replicam em pares com a transação da própria equipe.
11h50
AtivaÍndices — quando vale a pena?
Apresentação de uma tabela de 100k linhas. Cada dupla recebe uma query e decide se cria (ou não) um índice, justificando o trade-off (leitura rápida vs. escrita mais lenta). Consolidação coletiva.
12h00
AtivaSíntese e contrato do dia
Cada aluno escreve no caderno de bordo, em uma frase, "a aula 3 me ensinou que...". O professor anuncia a entrega esperada das 14h às 16h.
Estratégias de metodologia ativa
- Aprendizagem por desastre controlado — viver, em sala, o efeito do
UPDATEsemWHEREpara internalizar a regra defensiva. - Aprendizagem baseada em problema — toda query nasce de uma pergunta de negócio do minimundo, nunca de um exercício abstrato.
- Decisão fundamentada em pares — sobre índices e transações, a dupla precisa defender a escolha antes de implementar.
Toda mutação no banco precisa estar precedida por um SELECT que prova o que vai mudar.
Recursos e ferramentas
| Categoria | Recurso | Uso |
|---|---|---|
| Slides | slides/slide-lesson-3.html | Exposição na instrução PE |
| Material | materials/lesson-3-material.html | Autoestudo |
| SGBD | PostgreSQL 15+ | Execução de DDL/DML |
| Cliente SQL | psql ou DBeaver | Transações e EXPLAIN |
| Repositório | db/02_seed.sql e db/queries.sql | Massa de teste e queries |
| Documentação | docs/banco/decisoes.md | Justificativa de índices |
Verificação de aprendizagem
Avaliação formativa ao longo do dia.
- CR-1Participou da daily com diagnóstico claro do estado do banco da equipe.
- CR-2Resolveu, em par, ao menos 4 das 6 perguntas de negócio do laboratório de
SELECT. - CR-3Aplicou checklist defensivo antes de executar
UPDATE/DELETEem sala. - CR-4Demonstrou uma transação com
ROLLBACKintencional no banco da equipe. - CR-5Abriu Merge Request
feat(db): crud e transaçõescom seed, queries e decisões de índice até as 16h00.
Aluno que sair às 16h sem o CRUD completo do minimundo rodando está em débito técnico para a aula 4 (JOINs).
Conexão com a aula 4
A aula 4 introduz JOINs. As queries refinadas hoje serão a base para relatórios cruzando múltiplas tabelas.
- A massa do
seed.sqlprecisa ter pedidos com vários produtos para os JOINs renderem resultados úteis. - As
FOREIGN KEYs do esquema serão exploradas emINNER,LEFTe agregações. - Manter o minimundo: nenhuma troca de domínio entre as aulas do bloco de banco.
Antes das 8h do próximo dia: ler o material da aula 4, identificar 3 relatórios do minimundo que exigem unir tabelas e anotar dúvidas sobre cardinalidade dos resultados.