Modelo Físico do Banco de Dados

Visão Geral
O modelo físico apresentado representa a estrutura de banco de dados de um sistema de marketplace de moda, contemplando funcionalidades relacionadas a:
- Cadastro de pessoas e funcionários
- Produtos e variantes
- Controle de estoque
- Pedidos
- Pagamentos
- Cupons
- Avaliações
- Metas de vendas
- Imagens de catálogo
- Endereços
- Auditoria de movimentações
O banco foi modelado seguindo princípios relacionais, utilizando chaves primárias e estrangeiras para garantir integridade e relacionamento entre os dados.
Estrutura Geral do Sistema
O banco está dividido em alguns grandes domínios:
| Domínio | Responsabilidade |
|---|---|
| Pessoas | Clientes e funcionários |
| Produtos | Produtos, categorias, variantes e imagens |
| Pedidos | Pedidos, itens e pagamentos |
| Estoque | Controle e histórico de movimentações |
| Marketing | Cupons e avaliações |
| Gestão | Metas de vendas |
Entidades do Sistema
Person
Tabela responsável pelo armazenamento das pessoas cadastradas na plataforma.
Campos principais
| Campo | Descrição |
|---|---|
| cpf | Identificador único da pessoa |
| nome | Nome completo |
| Email da pessoa | |
| telefone | Telefone de contato |
| senha | Senha de autenticação |
Relacionamentos
- Uma pessoa pode possuir:
- um endereço
- avaliações
- pedidos
- um vínculo como funcionário
Address
Tabela responsável pelo endereço associado a uma pessoa.
Campos principais
| Campo | Descrição |
|---|---|
| id | Identificador do endereço |
| cpf_pessoa | Pessoa relacionada |
| cep | CEP |
| logradouro | Rua/Avenida |
| numero | Número do endereço |
| complemento | Complemento |
| bairro | Bairro |
| cidade | Cidade |
| uf | Unidade federativa |
Relacionamentos
- Um endereço pertence a uma pessoa.
Employee
Tabela que representa funcionários da loja.
A modelagem foi feita utilizando o CPF da pessoa como chave primária e chave estrangeira ao mesmo tempo, caracterizando uma especialização da entidade person.
Campos principais
| Campo | Descrição |
|---|---|
| cpf | CPF do funcionário |
| ativo | Indica se o funcionário está ativo |
| role_perfil | Perfil de acesso |
| taxa_comissao | Comissão do funcionário |
| meta_vendas | Meta individual |
| codigo_funcionario | Código interno |
Relacionamentos
- Um funcionário é obrigatoriamente uma pessoa.
- Um funcionário pode participar de pedidos.
- Um funcionário pode possuir metas de vendas.
Sales Goal
Tabela responsável pelas metas de vendas dos funcionários.
Campos principais
| Campo | Descrição |
|---|---|
| id_goal | Identificador |
| cpf_funcionario | Funcionário relacionado |
| mes | Mês da meta |
| ano | Ano da meta |
| valor_meta | Valor esperado |
| taxa_comissao_bonus | Comissão bônus |
Relacionamentos
- Uma meta pertence a um funcionário.
Product
Tabela principal de produtos.
Campos principais
| Campo | Descrição |
|---|---|
| id_produto | Identificador do produto |
| titulo | Nome do produto |
| descricao | Descrição |
| destaque | Produto em destaque |
| qual_medida | Unidade de medida |
| material | Material |
| composicao | Composição |
| silhueta | Modelagem |
| tags | Tags de busca |
| preco_base | Preço base |
| sku | SKU principal |
| media_avaliacao | Média das avaliações |
| total_avaliacoes | Quantidade de avaliações |
Relacionamentos
- Um produto pode:
- possuir variantes
- possuir categorias
- possuir avaliações
- participar de cupons
Product Variant
Tabela responsável pelas variantes de produtos.
Permite que um mesmo produto possua diferentes:
- tamanhos
- cores
- medidas
- preços
Campos principais
| Campo | Descrição |
|---|---|
| codigo_sku | SKU da variante |
| preco_variante | Preço específico |
| ativo | Disponibilidade |
| cor | Cor do produto |
| tamanho | Tamanho |
| medidas | Medidas adicionais |
| id_produto | Produto relacionado |
Relacionamentos
- Uma variante pertence a um produto.
- Uma variante pode possuir:
- estoque
- imagens de catálogo
- itens de pedido
- movimentações de estoque
Category
Tabela de categorias dos produtos.
Campos principais
| Campo | Descrição |
|---|---|
| id_categoria | Identificador |
| nome | Nome da categoria |
Product Category
Tabela associativa entre produtos e categorias.
Implementa relacionamento muitos-para-muitos.
Relacionamentos
- Um produto pode possuir várias categorias.
- Uma categoria pode possuir vários produtos.
Image
Tabela responsável pelas imagens do sistema.
Campos principais
| Campo | Descrição |
|---|---|
| id_imagem | Identificador |
| url | URL da imagem |
| ordem | Ordem de exibição |
| descricao | Descrição |
| local_renderizacao | Local de exibição |
Catalog Image
Tabela associativa entre imagens e variantes de produtos.
Campos principais
| Campo | Descrição |
|---|---|
| id_imagem | Imagem relacionada |
| codigo_sku | Variante relacionada |
| ordem_no_catalogo | Ordem no catálogo |
Stock
Tabela responsável pelo controle de estoque atual.
Campos principais
| Campo | Descrição |
|---|---|
| codigo_sku | Variante relacionada |
| qtd_online | Quantidade disponível online |
| qtd_loja_fisica | Quantidade disponível em loja |
Relacionamentos
- O estoque pertence a uma variante.
Stock Log
Tabela de auditoria de movimentações de estoque.
Responsável por registrar:
- entradas
- saídas
- alterações
- ajustes
Campos principais
| Campo | Descrição |
|---|---|
| id_log | Identificador |
| codigo_sku | Variante afetada |
| id_pedido | Pedido relacionado |
| tipo_movimentacao | Tipo da movimentação |
| quantidade_movimentada | Quantidade alterada |
| data_criacao | Data do evento |
| valor_anterior_online | Estoque anterior online |
| valor_novo_online | Estoque atualizado online |
| valor_anterior_loja | Estoque anterior físico |
| valor_novo_loja | Estoque atualizado físico |
| origem | Origem da alteração |
| motivo | Motivo da alteração |
Orders
Tabela principal de pedidos.
Campos principais
| Campo | Descrição |
|---|---|
| id_pedido | Identificador |
| id_usuario | Cliente responsável |
| id_cupom | Cupom aplicado |
| data_pedido | Data da compra |
| status | Status do pedido |
| subtotal | Valor parcial |
| valor_frete | Valor do frete |
| valor_total | Valor total |
| tipo_retirada | Forma de retirada |
| codigo_verificacao_retirada | Código de retirada |
| id_funcionario | Funcionário responsável |
| codigo_rastreamento | Rastreamento |
Relacionamentos
- Um pedido:
- pertence a um cliente
- pode possuir cupom
- pode possuir pagamento
- possui itens
- pode estar relacionado a um funcionário
Order Item
Tabela de itens do pedido.
Campos principais
| Campo | Descrição |
|---|---|
| id_item_pedido | Identificador |
| id_pedido | Pedido relacionado |
| id_variante | Variante comprada |
| quantidade | Quantidade adquirida |
| preco_unitario | Preço unitário |
Relacionamentos
- Um item pertence a um pedido.
- Um item referencia uma variante de produto.
Payment
Tabela responsável pelos pagamentos.
Campos principais
| Campo | Descrição |
|---|---|
| id_pagamento | Identificador |
| id_pedido | Pedido relacionado |
| order_nsu | Código da ordem |
| transaction_nsu | Código da transação |
| invoice_slug | Identificador da cobrança |
| amount | Valor total |
| paid_amount | Valor pago |
| installments | Parcelas |
| capture_method | Método de captura |
| status | Status do pagamento |
| receipt_url | URL do comprovante |
| redirect_url | URL de redirecionamento |
| webhook_url | URL de webhook |
| created_at | Data de criação |
| updated_at | Data de atualização |
Relacionamentos
- Um pagamento pertence a um pedido.
Coupon
Tabela responsável pelos cupons promocionais.
Campos principais
| Campo | Descrição |
|---|---|
| numero_do_cupom | Código do cupom |
| tipo_cupom | Tipo do desconto |
| valor_desconto | Valor aplicado |
| ativo | Situação do cupom |
| data_inicio | Início da validade |
| data_fim | Fim da validade |
| uso_maximo | Limite de uso |
| nome_influenciador | Influenciador relacionado |
| usos_atuais | Quantidade utilizada |
Relacionamentos
- Um cupom pode:
- ser aplicado em pedidos
- possuir produtos específicos
Coupon Product
Tabela associativa entre cupons e produtos.
Implementa relacionamento muitos-para-muitos.
Review
Tabela responsável pelas avaliações dos produtos.
Campos principais
| Campo | Descrição |
|---|---|
| cpf_cliente | Cliente avaliador |
| id_produto | Produto avaliado |
| nota | Nota atribuída |
| comentario | Comentário |
| data_avaliacao | Data da avaliação |
Relacionamentos
- Uma avaliação pertence:
- a uma pessoa
- a um produto
Considerações Arquiteturais
O modelo foi desenvolvido visando:
- Alta normalização
- Separação clara de responsabilidades
- Escalabilidade
- Facilidade de manutenção
- Integridade relacional
Além disso, foram utilizadas tabelas associativas para representar relacionamentos muitos-para-muitos, como:
product_categorycoupon_productcatalog_image
A modelagem também contempla mecanismos importantes para sistemas de marketplace, como:
- Controle de estoque
- Auditoria de movimentações
- Controle de permissões por funcionário
- Sistema de cupons
- Sistema de avaliações
- Integração com gateway de pagamento
Histórico de Versionamento
| Versão | Autor | Resumo | Data |
|---|---|---|---|
1.6 |
Leonardo Sauma | Adição do modelo físico do banco de dados | 25/05/2026 |