Ir para o conteúdo

Modelagem do Banco de Dados

O banco de dados do Despachante Bortone é estruturado para suportar o fluxo completo de um escritório de despachante: desde o cadastro de clientes e seus veículos, passando pelos serviços disponíveis, até o ciclo de vida de uma solicitação com seus respectivos documentos.


Diagrama

Modelagem do Banco de Dados


Enumerações (ENUMs)

NivelUsuario

Define o nível de acesso de um usuário no sistema.

Valor Descrição
cliente Usuário padrão. Pode abrir solicitações e acompanhar seus processos.
administrador Usuário com acesso total. Gerencia solicitações, documentos, serviços e conteúdo do site.

StatusSolicitacao

Representa o ciclo de vida de uma solicitação de serviço.

Valor Descrição
recebido Solicitação foi criada pelo cliente e aguarda análise.
aguardando_pagamento Aguardando confirmação de pagamento pelo cliente.
aguardando_documento Aguardando envio de documento pelo cliente.
em_andamento A solicitação está sendo processada pelo despachante.
concluido Serviço finalizado com sucesso.
cancelado Solicitação cancelada (pelo cliente ou pelo administrador).

StatusValidacaoDocumento

Descreve o estado de validação de um documento enviado.

Valor Descrição
pendente Documento enviado, mas ainda não analisado pelo administrador.
aprovado Documento validado e aceito.
rejeitado Documento recusado (formato inválido, ilegível, incorreto etc.).

Tabelas

Armazena os banners exibidos no site institucional.

Colunas
Coluna Tipo Descrição
id INT (PK, auto) Identificador único do banner.
url_imagem VARCHAR URL da imagem do banner.
descricao VARCHAR Texto descritivo ou legenda do banner.
ativo BOOLEAN Indica se o banner está ativo e deve ser exibido. Padrão: true.

Tabela de conteúdo gerenciado pelo administrador para exibição no frontend.


blog

Armazena as postagens do blog institucional do despachante.

Colunas
Coluna Tipo Descrição
id INT (PK, auto) Identificador único do post.
titulo VARCHAR(150) Título do post.
conteudo TEXT Conteúdo completo do post.
data_publicacao DATE Data de publicação do post.
url_imagem VARCHAR URL da imagem de capa do post.

Tabela para posts informativos sobre serviços, datas e novidades do setor.


empresa

Armazena os dados cadastrais da empresa (Despachante Bortone). Prevista para ter somente um registro.

Colunas
Coluna Tipo Descrição
id INT (PK, auto) Identificador único.
nome_fantasia VARCHAR(100) Nome fantasia da empresa.
cnpj VARCHAR(20) CNPJ da empresa.
telefone VARCHAR(20) Telefone de contato.
email VARCHAR(100) E-mail de contato.
endereco VARCHAR(255) Endereço completo.
cidade VARCHAR(100) Cidade da sede.
estado VARCHAR(2) Sigla do estado (ex.: SP).
site VARCHAR(100) Endereço do site da empresa.

Tabela de configuração institucional, usada para exibir informações do despachante no rodapé e páginas de contato.


faq

Armazena perguntas frequentes exibidas no site.

Colunas
Coluna Tipo Descrição
id INT (PK, auto) Identificador único da FAQ.
pergunta TEXT Texto da pergunta.
resposta TEXT Texto da resposta.

Tabela para conteúdo gerenciado pelo administrador.


publicidade

Armazena anúncios e publicidades de parceiros exibidos no site.

Colunas
Coluna Tipo Descrição
id INT (PK, auto) Identificador único da publicidade.
titulo VARCHAR(150) Título do anúncio.
conteudo TEXT Texto descritivo do anúncio.
url_imagem VARCHAR URL da imagem do anúncio.

servico

Catálogo de serviços oferecidos pelo despachante.

Colunas
Coluna Tipo Descrição
id INT (PK, auto) Identificador único do serviço.
nome VARCHAR(100) Nome do serviço (ex.: Licenciamento Anual).
descricao TEXT Descrição detalhada do serviço.
valor_base DECIMAL(10,2) Valor base cobrado pelo serviço.
prazo_estimado_dias INT Prazo estimado de conclusão em dias úteis.
ativo BOOLEAN Indica se o serviço está disponível para solicitação. Padrão: true.

Relacionada a solicitacao (1 servico → N solicitacoes).


usuario

Armazena todos os usuários do sistema: clientes e administradores.

Colunas
Coluna Tipo Descrição
id INT (PK, auto) Identificador único do usuário.
nome VARCHAR(100) Nome completo.
email VARCHAR(100) (UNIQUE) E-mail de login. Deve ser único.
senha VARCHAR(255) Senha (deve ser armazenada com hash).
nivel ENUM NivelUsuario Nível de acesso: cliente ou administrador. Padrão: cliente.
cpf_cnpj VARCHAR(20) CPF (pessoa física) ou CNPJ (pessoa jurídica).
celular VARCHAR(20) Número de celular.
data_cadastro DATETIME Data e hora do cadastro. Padrão: now().

Segurança

O campo senha nunca deve ser armazenado em texto puro. Utilize um algoritmo de hash seguro (ex.: bcrypt) antes de persistir no banco.

Relacionada a veiculo (1 usuario → N veiculos) e solicitacao (1 usuario → N solicitacoes).


veiculo

Armazena os veículos cadastrados pelos clientes.

Colunas
Coluna Tipo Descrição
id INT (PK, auto) Identificador único do veículo.
usuario_id INT (FK) ID do usuário proprietário.
placa VARCHAR(10) Placa do veículo (formato Mercosul ou antigo).
renavam VARCHAR(20) RENAVAM do veículo.
marca VARCHAR(50) Marca do veículo (ex.: Honda, Toyota).
modelo VARCHAR(50) Modelo do veículo (ex.: Civic, Corolla).
ano_fabricacao INT Ano de fabricação.
ano_modelo INT Ano do modelo.

Relacionada a usuario (N:1) e solicitacao (1:N).

Exclusão em cascata: ao deletar um usuario, todos os seus veiculos são removidos automaticamente (onDelete: Cascade).


solicitacao

Núcleo do sistema: registra cada pedido de serviço feito por um cliente para um veículo específico.

Colunas
Coluna Tipo Descrição
id INT (PK, auto) Identificador único da solicitação.
usuario_id INT (FK) ID do cliente que abriu a solicitação.
veiculo_id INT (FK) ID do veículo referenciado na solicitação.
servico_id INT (FK) ID do serviço solicitado.
status ENUM StatusSolicitacao Status atual do processo. Padrão: recebido.
observacao_cliente TEXT Observação livre do cliente ao abrir a solicitação.
observacao_admin TEXT Observação interna do administrador.
data_solicitacao DATETIME Data e hora de criação. Padrão: now().
data_conclusao DATETIME Data e hora de conclusão (preenchida quando status = concluido).

Relacionada a usuario, veiculo, servico (todas N:1) e documento_solicitacao (1:N).

Exclusão em cascata: ao deletar um usuario ou veiculo, todas as solicitacoes associadas são removidas.


documento_solicitacao

Armazena os documentos enviados pelo cliente para uma solicitação.

Colunas
Coluna Tipo Descrição
id INT (PK, auto) Identificador único do documento.
solicitacao_id INT (FK) ID da solicitação à qual o documento pertence.
nome_hash VARCHAR Nome do arquivo com hash (para evitar colisões no storage).
tipo_documento VARCHAR(100) Tipo do documento (ex.: RG, CRLV, Comprovante de residência).
status_validacao ENUM StatusValidacaoDocumento Status de validação pelo admin. Padrão: pendente.
data_upload DATETIME Data e hora do envio do documento.

Exclusão em cascata: ao deletar uma solicitacao, todos os seus documentos são removidos automaticamente.


Relacionamentos

usuario (1) ──────────── (N) veiculo
usuario (1) ──────────── (N) solicitacao
veiculo (1) ──────────── (N) solicitacao
servico (1) ──────────── (N) solicitacao
solicitacao (1) ──────── (N) documento_solicitacao

Regras de Cascata

Relação Ao deletar o pai Comportamento
usuarioveiculo Usuário deletado Veículos deletados em cascata
usuariosolicitacao Usuário deletado Solicitações deletadas em cascata
veiculosolicitacao Veículo deletado Solicitações deletadas em cascata
servicosolicitacao Serviço deletado Restringe (necessário remover solicitações antes)
solicitacaodocumento_solicitacao Solicitação deletada Documentos deletados em cascata