◇ OpenCyber Academy
Graduação · Capítulo 9 · Português

Capítulo 9 — Dados e bancos de dados

Ensino gratuito e aberto para quem deseja proteger pessoas e tecnologias. Não é preciso criar uma conta para estudar ou consultar as respostas.

Capítulo 9 — Dados e bancos de dados

Mapa da aula

Aula 09 publicada. Mapa, exemplo, EX025.

flowchart TD
  N0["9.1 Desenhar uma tabela"]
  N1["9.2 Consultar com SQL"]
  N2["Laboratório — Contagem de reportes com SQLite"]
  N3["9.3 Minimização de dados"]
  N4["Síntese"]
  N0 --> N1 --> N2 --> N3 --> N4
  N4 --> EX["Exemplo resolvido"]
  EX --> Q["Exercício EX025"]

Desenho lógico

flowchart LR
  N0["9.1 Desenhar uma tabela"]
  N1["9.2 Consultar com SQL"]
  N2["Laboratório — Contagem de reportes com SQLite"]
  N3["9.3 Minimização de dados"]
  N4["Síntese"]
  N0 --> N1 --> N2 --> N3 --> N4 --> Q["EX025"]
[9.1 Desenhar uma tabela]
    |
    v
[9.2 Consultar com SQL]
    |
    v
[Laboratório — Contagem de reportes com SQLite]
    |
    v
[9.3 Minimização de dados]
    |
    v
[Síntese]
    |
    v
[Exemplo resolvido] --> [Exercício EX025]

Objetivos de aprendizagem

Você vai (1) desenhar uma tabela simples para reportes de segurança; (2) consultar dados com SQL; (3) aplicar a minimização de dados.

9.1 Desenhar uma tabela

Nadia desenha uma tabela de reportes com colunas para identificador do reporte, data, unidade, categoria e veredito. Deixa de fora, de propósito, o nome de quem reportou, porque a análise precisa apenas de contagens por unidade e dados pessoais criariam risco à privacidade. Cada coluna tem um tipo e regras, como o veredito ser malicioso, inofensivo ou desconhecido. Uma tabela bem desenhada dificulta os erros: um veredito digitado errado é rejeitado, em vez de ser contado silenciosamente como uma nova categoria que distorce os resultados. O responsável pela TI revisa o desenho e aprova as regras antes que qualquer dado seja carregado.

9.2 Consultar com SQL

Usando o módulo sqlite3, que já vem com o Python, Nadia carrega reportes sintéticos e escreve consultas. Uma conta os reportes por unidade, outra conta os reportes maliciosos por mês e uma terceira encontra as categorias mais comuns. O SQL expressa essas perguntas de forma compacta e deixa o banco de dados fazer o trabalho. O laboratório mostra que os e-mails com tema de fatura foram a categoria maliciosa mais comum. Ela aprende a ler os resultados das consultas com senso crítico, verificando se uma contagem alta reflete mais ataques ou simplesmente mais reportes numa unidade específica. Ela salva cada consulta com um comentário.

Laboratório — Contagem de reportes com SQLite

# Counting synthetic reports with SQLite.
import sqlite3
db = sqlite3.connect(":memory:")
db.execute("create table reports(id integer primary key, month text, branch text, category text, verdict text check (verdict in ('malicious','harmless','unknown')))")
rows = [("2026-01", "Central", "invoice", "malicious")] * 5 + [("2026-02", "Riverside", "parcel", "malicious")] * 3 + \
       [("2026-02", "Hill", "account", "malicious")] * 2 + [("2026-03", "Central", "invoice", "malicious")] * 2 + [("2026-03", "Market", "newsletter", "harmless")] * 36
db.executemany("insert into reports(month,branch,category,verdict) values (?,?,?,?)", rows)
for r in db.execute("select category, count(*) from reports where verdict='malicious' group by category order by 2 desc"): print(r)

Execute com python3 lab_sql.py. Saída verificada:

('invoice', 7)
('parcel', 3)
('account', 2)

9.3 Minimização de dados

Minimização de dados significa coletar apenas os dados necessários para uma finalidade. Nadia explica ao responsável pela TI da Ashcombe por que os nomes de quem reporta não devem ser guardados na tabela de análise: os nomes poderiam ser usados para julgar indivíduos, o que desestimularia os reportes, e acrescentam pouco às decisões do programa. Os reportes originais permanecem no sistema de e-mail, sob suas regras normais de retenção. O princípio liga a legislação de privacidade ao objetivo, próprio dos fatores humanos, de fazer as pessoas se sentirem seguras para reportar qualquer coisa que pareça estranha. O responsável pela TI concorda.

Exemplo resolvido

Nadia desenha uma tabela de reportes sem nomes, a consulta com SQLite e defende a minimização de dados.

Caso sintético. Os dados são sintéticos.

Erros e limites

Remover os nomes impede alguns acompanhamentos. Os rótulos de categoria podem ser inconsistentes.

Exercícios

Síntese

Tabelas bem desenhadas, consultas simples e dados minimizados sustentam uma análise segura.

Continue estudando — aula 09 (capítulo 09 de 40)

← Capítulo 08 · Índice das aulas · Capítulo 10 →

Continue para a próxima aula já escrita.