O banco de dados do sistema Pregão CCMBR foi projetado para suportar fila de pregão, histórico de lances, cadastro de peças (moedas e cédulas), usuários e configurações do sistema.
Ele é estruturado em tabelas relacionais com chaves primárias e estrangeiras, garantindo integridade dos dados e consistência no pregão.
lista_pregaoTabela responsável por armazenar a fila de pregão, status e referência à peça.
| Campo | Tipo | Descrição |
|---|---|---|
id |
INT PK AI | Identificador único do pregão |
idMoeda |
INT | Referência à moeda (se for moeda) |
idAnuncio |
INT | Referência ao anúncio na tabela anuncios_moedas ou anuncios_cedulas |
preco |
DECIMAL(10,2) | Lance inicial |
status |
ENUM | Status: aberto, encerrado, suspenso |
fimPregao |
DATETIME | Data e hora de encerramento (quando aplicável) |
criado_em |
DATETIME | Data de inclusão do registro |
Observações:
A ordenação da fila é feita pelo campo id ou por fimPregao quando a peça está em leilão.
Não é permitido duplicar uma peça na fila aberta.
Queries principais:
Listar pregão ativo:
anuncios_moedas / anuncios_cedulasArmazena informações detalhadas das peças.
| Campo | Tipo | Descrição |
|---|---|---|
idAnuncio |
INT PK AI | Identificador único do anúncio |
nome |
VARCHAR(255) | Nome da moeda/cédula |
descricao |
TEXT | Descrição detalhada da peça |
imgAnunFrente |
VARCHAR(255) | Arquivo da imagem frontal |
imgAnunVerso |
VARCHAR(255) | Arquivo da imagem verso |
pais |
INT | Código do país (ex.: 36 = Brasil) |
ano |
YEAR | Ano da peça |
ativo |
ENUM | S ou N para exibição ativa |
criado_em |
DATETIME | Data de criação do anúncio |
Observações:
Usar ativo = 'S' para exibir no catálogo.
Todas as imagens devem ser validadas para evitar links quebrados.
lancesHistórico de lances de cada peça.
| Campo | Tipo | Descrição |
|---|---|---|
id |
INT PK AI | Identificador do lance |
idUsuario |
INT | Referência ao usuário que deu o lance |
idMoeda |
INT | Referência à moeda/cédula |
idAnuncio |
INT | Referência ao anúncio da peça |
valor_lance |
DECIMAL(10,2) | Valor do lance |
criado_em |
DATETIME | Data e hora do lance |
Regras importantes implementadas:
Apenas lances maiores que o lance atual são aceitos.
Em caso de valor igual, o primeiro lance é aceito e o segundo é rejeitado.
Query para obter maior lance atual:
usuariosCadastro de participantes do pregão.
| Campo | Tipo | Descrição |
|---|---|---|
id |
INT PK AI | Identificador do usuário |
nome |
VARCHAR(255) | Nome completo |
email |
VARCHAR(255) | E-mail do usuário |
senha |
VARCHAR(255) | Hash da senha |
nivel |
ENUM | user, adm |
creditoTroca |
DECIMAL(10,2) | Crédito interno para recompras |
creditoCash |
DECIMAL(10,2) | Crédito Cash |
criado_em |
DATETIME | Data de criação da conta |
configuracoesTabela para parâmetros globais do sistema.
| Campo | Tipo | Descrição |
|---|---|---|
id |
INT PK AI | Identificador |
parametro |
VARCHAR(100) | Nome da configuração |
valor |
VARCHAR(255) | Valor do parâmetro |
Exemplos: tempo de pregão padrão, percentual de comissão, limites de crédito, URLs de ficha técnica, etc.
lista_pregao.idAnuncio → anuncios_moedas.idAnuncio ou anuncios_cedulas.idAnuncio
lances.idUsuario → usuarios.id
lances.idMoeda / idAnuncio → lista_pregao.id
Esses relacionamentos garantem:
Que todos os lances pertençam a um usuário válido e a uma peça válida.
Integridade de dados ao mover peças da fila para encerramento.
Criar índices em lances(idMoeda, idAnuncio) para acelerar consultas de maior lance.
Adicionar chave estrangeira com ON DELETE CASCADE para lances, evitando lances órfãos.
Consolidar tabelas de anúncios de moedas e cédulas em uma tabela única com campo tipo_peca = 'moeda' | 'cedula' para reduzir duplicação de código.
Manter histórico completo de lances para auditoria e análise de pregão.
Nilton Romani