Skip to content

Modelo de Dados

Samuel Souza edited this page Jul 9, 2026 · 2 revisions

Modelo de Dados

O arquivo padrao e data/cotacoes.sqlite. O schema separa origem, proveniencia, identidade comercial e versoes observadas.

Tabelas

Tabela Responsabilidade
estados UF e nome do estado
ceasas Fonte responsavel pela publicacao
entrepostos Mercado ou unidade atendida pela fonte
categorias Grupo de produtos
produtos Nome normalizado para comparacao
produto_aliases Nome original encontrado na fonte
unidades Medida canonica
apresentacoes_unidade Embalagem, quantidade e texto original
coletas Proveniencia de cada raw processado
cotacoes Valores observados em uma coleta

Proveniencia

coletas registra:

  • fonte;
  • caminho e hash SHA-256 do raw;
  • URL de origem;
  • data de download;
  • momento do processamento.

Reprocessar o mesmo raw reutiliza a coleta existente.

Produtos e unidades

produtos.nome_normalizado e usado para comparacao conservadora. produto_aliases.nome_original preserva o texto da fonte.

apresentacoes_unidade preserva unidade_original e deriva:

  • unidade_normalizada;
  • embalagem;
  • quantidade_minima;
  • quantidade_maxima;
  • detalhe_unidade;
  • referencia opcional para uma unidade canonica.

Valores nao reconhecidos continuam preservados.

Identidade e versoes

cotacoes.chave_identidade identifica a cotacao sem considerar coleta, precos ou situacao de mercado. Ela considera fonte, entreposto, categoria, produto, apresentacao, procedencia, classificacao e data.

cotacoes.chave_unica acrescenta coleta, precos e situacao. No schema atual, essa chave evita duplicacao ao reprocessar exatamente o mesmo raw, mas ainda depende da coleta_key.

Limite atual:

  • coletas.chave_unica considera arquivo_raw, hash_raw, URL de origem e data de download/processamento.
  • Se a mesma cotacao historica for baixada novamente com outro nome fisico de arquivo, uma nova coleta pode ser criada.
  • Como cotacoes.chave_unica usa a coleta, esses downloads repetidos podem gerar registros duplicados e aumentar o SQLite.
  • A correcao futura deve separar melhor identidade logica da cotacao e proveniencia fisica do raw.

Ainda assim, cotacoes.chave_identidade continua util para localizar a mesma cotacao comercial sem considerar coleta, precos ou situacao de mercado.

Integridade

  • Cotacoes sem data ou sem nenhum preco nao sao persistidas.
  • Precos negativos sao rejeitados.
  • A ordem entre minimo, comum e maximo nao e corrigida automaticamente.
  • Chaves estrangeiras sao ativadas durante a gravacao.
  • O banco antigo nao e migrado.

Quando o schema mudar, exclua o SQLite e reconstrua a base usando os raws ativos.

Clone this wiki locally