Database¶
erDiagram
CATEGORIA ||--o{ PRODUTO : classifica
FORNECEDOR o|--o{ PRODUTO : fornece
PRODUTO ||--o{ COMPOSICAO : kit
PRODUTO ||--o{ COMPOSICAO : componente
FORNECEDOR o|--o{ ENTRADA : origem
ENTRADA ||--o{ ENTRADA_ITEM : contem
PRODUTO ||--o{ ENTRADA_ITEM : recebido
SAIDA ||--o{ SAIDA_ITEM : contem
PRODUTO ||--o{ SAIDA_ITEM : separado
PRODUTO ||--o{ AJUSTE : ajustado
PRODUTO ||--o{ MOVIMENTO : movimenta
PRODUTO ||--o{ NOTIFICACAO : alerta
FORNECEDOR o|--o{ PEDIDO_COMPRA : fornece
PEDIDO_COMPRA ||--o{ PEDIDO_ITEM : contem
PRODUTO ||--o{ PEDIDO_ITEM : solicitado
USER o|--o{ LOG : registra
| Entidade | Campos principais | Relacionamentos e restrições |
|---|---|---|
| Categoria | id; nome varchar(100) UNIQUE; descrição; ativo; timestamps | categoria de produtos |
| Fornecedor | id; nome varchar(200) UNIQUE; CNPJ UNIQUE opcional; telefone; e-mail; contato; endereço; ativo; timestamps | fornecedor de produto/entrada/pedido |
| Produto | id; SKU varchar(50) UNIQUE; código de barras; nome; descrição; unidade; estoque mínimo; categoria PROTECT; fornecedor SET_NULL; preços; localização; imagem; estoque atual/reservado/movimentado; ativo; pré-cadastro; timestamps | entidade central do estoque |
| ComposicaoProduto | id; kit FK Produto CASCADE; componente FK Produto PROTECT; quantidade default 1 | UNIQUE kit + componente |
| Entrada / EntradaItem | entrada: NF, emissão/recebimento, fornecedor, usuário, status, pedido opcional, observação; item: produto, quantidade, recebida, status | entrada CASCADE; produto PROTECT |
| Saida / SaidaItem | saída: motivo, data, usuário, status, observação; item: produto, quantidade, separada, status | saída CASCADE; produto PROTECT |
| AjusteInventario | produto PROTECT; quantidade signed; motivo; usuário; criado | gera movimento |
| MovimentoEstoque | produto CASCADE; tipo; quantidade/delta; saldo anterior/posterior; referência; usuário SET_NULL; criado | histórico append-only |
| Notificacao | produto CASCADE; tipo; mensagem; lida; resolvida; datas | alerta de estoque mínimo |
| PedidoCompra / Item | fornecedor; usuário; status; data; observação; item com produto, quantidade, preço e recebida | itens CASCADE; status acompanha recebimentos |
| Log | usuário SET_NULL; ação; descrição; criado | auditoria do sistema |
Campos opcionais são nulos apenas quando declarados explicitamente; textos blank normalmente permanecem NOT NULL.