Projeto: Banco de dados Barbearia - Oracle



Esse é um projeto para desenvolvimento do banco de dados para uma barbearia. 

História: a empresa quer desenvolver o sistema para os controles financeiros, vendas, estoques e relatórios para a contabilidade das entradas, porém a aplicação será desenvolvida por outra empresa, mas as ações de inserções, deletes, visões de relatórios e gatilhos serão desenvolvidos dentro do banco de dados ORACLE. 

Levantamento dos requisitos com o Usuário:

O dono da empresa é quem conhece todos os processos da gestão na barbearia. Em conversa dos levantamentos dos requisitos foram feitos os seguintes questionamentos:

1 - Há filiais para a barbearia ? 

Resposta: Não !

2 - O sistema terá mais de um usuário e controle de acesso ? 

Resposta: Serão 5 funcionários, porém todos com acesso total. 

3 -  O que é comercializado na barbearia ?

Resposta: serviços de corte de cabelo e barba, também produtos como boné, camisetas, tênis,  óleo, cera para cabelo e barba.

4 -  Existe o cadastro de clientes ? 

Resposta: Não existe cadastro dos clientes hoje, porém precisamos de um cadastro simples e assertivo. 

5 -  Cadastro dos produtos e serviços ?

Resposta: Não tem cadastro dos produtos ou serviços. 

6 - Como é feito a precificação dos produtos  e serviços?

Resposta: Aumenta 20% do preço de compra e o serviço é atualizada ano a ano, porém há produtos quem tem 50% de aumento ou mais. 

7 - Controle de estoque ?

Resposta: Não é feito, porém é necessário

8 - Como e o controle do financeiro ?

Resposta: Não tem um controle, porém há necessidade do controle de saldo dos caixas e bancos.  

9 - Relatório para a contabilidade ? 

Resposta: É enviando as notas fiscais de entrada para o escritório de contabilidade, porém é feito manual no Excel uma lista com número da nota, valor da nota e a entrada. 

10 - Quais os relatório são necessários atualmente para melhora a gestão ?

Resposta:  relatório das vendas diárias. Relatório do recebido no financeiro. 

Esse foi o levantamento de requisitos mínimos com o dono da barbearia. Simplesmente uma conversa para entender os processos da empresa e quais são as suas necessidades para melhorar a administração do seu negócio. E entregar as regras de forma coesa para a empresa do desenvolvimento da aplicação. 

Os requisitos é a instalação do ORACLE XE , o SGBD SQLDEVELOPER e a máquina que recebe os softwares tem que atender as configurações mínimas exigidas para executar o banco de dados. No momento da instalação do ORACLE será solicitado a senha do SYSDBA.  

As configurações do banco Oracle para conexão (LISTERNER) é a:


 

Deve ser configurado a conexão SGBD, para o mesmo acessar o banco de dados. Precisa ter a conexão configurada com o usuário SYSTEM,  pois será necessário as permissões de administrador para algumas atividades,  e criar o usuário BARBEARIA, sendo que  este será o responsável para manipular o banco.




Acessar o banco de dados com  o usuário SYSTEM para executar os comandos de criação do usuário BARBEARIA e suas permissões:




Configuração da conexão do usuário BARBEARIA. 


IMAGEM DA CONFIG DA CONEXÃO BARBEARIA.


Acessar o banco de dados com o usuário BARBEARIA. Executar o script para criar as tabelas, de acordo com os levantamentos de requisitos. 




Os objetos como tabela, função, procedure, trigger, view devem obedecer nomenclatura padrão para organização e tornar o desenvolvimento intuitivo. Os nomes não influenciam  nos funcionamentos dos objetivos dos objetos, ou seja, não é obrigatório obedecer o padrão adotado. 


Os nomes das tabelas tem que obedecer  a seguinte regra: as primeiras três letras antes do UNDERLINE deve remeter a ideia da ação esperada do objeto. Exemplo:


CAD_FORNECEDOR: Essa tabela remete a ideia de cadastros dos fornecedores. 


Os seguintes padrões que serão adotados para nomes dos objetos:


CAD_ = Tabela de cadastro

FIN_  = Tabela que pertence aos processos do financeiro

VEN_ = Tabela que pertence aos processos das vendas

COP_=  Tabela que pertence aos processos de 

TRG_ = Triggers

STP_ = Procedures

FCN_ = Funções

VEW_ = Views


Para as procedures há uma particularidade, após o STP_ deve ter o nome da ação que a mesma executa (insere, atualiza, deleta). Também a regra vale para trigger. 


As tabelas

CAD_CAIXA

Essa tabela é responsável para o cadastro dos caixas. Devem ser cadastrados todos os ambientes onde acontecem os recebimentos.  

Exemplo: NUBANK, GAVETA.


Os campo dessa tabela são:

ID_CAIXA: Identificador único do caixa

NOMECAIXA: nome do caixa

SALDO:  Valor atual em dinheiro que está no caixa.


CAD_CLIENTE:

Tabela que obtém os cadastros dos clientes. Os dessa tabela são:

ID_CLIENTE: Identificador único do cliente.

NOME: Nome do cliente

FONEW: Número do telefone do WhatsApp

FONEF: Número do telefone fixo

EMAIL: E-mail do cliente

BAIRRO: Bairro que o cliente reside


CAD_PRODUTO:

Tabela responsável pelos cadastros dos produtos e serviços comercializados pela Barbearia. Seus dados são:

ID_PRODUTO: Identificados único dos produtos

NOME: Nome do produto

PRECO: Valor de venda do produto

TIPO: Aceita o valor S ou P, ou seja produto ou serviço.

QTESTOQUE : Quantidade que existe do produto em estoque.


CAD_TIPOSPAGAMENTO

Tabela para cadastrar os tipos de pagamentos. Exemplo: dinheiro, cartão de crédito, cartão de débito.  Seus campos são:

ID_PAGAMENTO: identificador do pagamento

NOME: Nome do pagamento

PARCELAS: Número das parcelas que o tipo de pagamento permite.

PRAZO: Prazo entre as parcelas. 

VEN_VENDAS

Os cabeçalhos das vendas são registros, lançados nessa tabela. Os campos das tabelas são:

ID_VENDA: Identificador da venda

ID_CLIENTE: Identificador do cliente. Esse campo é uma chave estrangeira (FK) para a tabela CAD_CLIENTE

ID_PAGAMENTO: Identificador do pagamento. Esse campo é uma chave estrangeira (FK) para a tabela CAD_PAGAMENTO

ID_CAIXA: Identificador do caixa. Esse campo é uma chave estrangeira(FK) para a tabela CAD_CAIXA.

VLRTOT: Valor total da nota fiscal. 

DTVENDA: Data da negociação da venda. 

VEN_ITENS:

Os itens que pertencem ao cabeçalho da venda, são lançados nessa tabela.

Os campos são:

ID_VENDA: Identificador da venda na qual aquele item pertence. E esse campo é uma chave estrangeira da tabela VEN_VENDA.

ID_PRODUTO: Esse campo é o identificador do produto, e é chave estrangeira da tabela  CAD_PRODUTO.

QUANTIDADE: É a quantidade da unidade de venda do produto. 

PRECO_UN: Preço unitário do produto. Essa informação é obtida do cadastro de produtos. 

PRECO_TOT: É o preço total do item, no qual esse campo é calculado da seguinte forma: QUANTIDADE  vezes PRECO_UN

NOMEPRODUTO: Nome do produto. 



FIN_FINANCEIRO

Todos os lançamentos do financeiro são registrados nessa tabela, tanto a receber como a pagar. E também são registrados os pagamentos dos títulos.  Os campos dessa tabela são:

ID_FINANCEIRO: Identificador do lançamento do financeiro.

ID_VENDA: Identificador da venda. Campo chave estrangeira da tabela VEN_VENDA.  (FK)

ID_PAGAMENTO: Identificador do pagamento. Campo chave estrangeira da tabela CAD_PAGAMENTO. (FK)

VLR_PARCELA:  Valor da parcela. 

PARCELA: Número da parcela correspondente ao título

RECEBIDO: Esse campo identifica o recebimento do título.

ID_CAIXA: Identificador do caixa. Campo chave estrangeira da tabela CAD_CAIXA.(FK) 

DTLANCAMENTO: Data que o título foi lançado na tabela. 

DTVENCIMENTO: Data de vencimento do título.

NUMDOC: Esse campo é o número do documento. Preenche somente quando é despesa relacionada a compra.

TP_LANC:  Tipo do lançamento. Se o campo estiver preenchido com 1 é receia, e com 2 despesa. 


FIN_LANCAMENTOCAIXA

Todos os recebimentos e pagamentos dos títulos serão lançados de forma sintética na tabela. E seu objetivo é alimentar o saldo dos caixas. 

Seus campos são:

ID_CAIXA:  Identificador do caixa. Campo chave estrangeira da tabela CAD_CAIXA.(FK) 

DOCUMENTO: Número do documento do título, tanto o NUMDOC como o ID_VENDA. 

DT_LANCAMENTO: Data que recebido o título, e por consequência lançado na o registro na tabela. 

VLRDOC: Valor do recebimento da título. 

TP_LANC: Tipo do lançamento. Se o campo estiver preenchido com 1 é receia, e com 2 despesa. Deve ser a mesma informação da FIN_FINANCEIRO.

ID_FINANCEIRO: identificador do título no financeiro. Chave estrangeira com a conta FIN_FINANCEIRO. (FK)


Regras para escrever a variáveis ou parâmetros:

Foi adotado no desenvolvido dos objetos os padrões de escrita de variável e parâmetros, para padronizar e organizar o código, a nomenclatura dos parâmetros dá início com o prefixo "P_" e das variáreis "V_", ambos nomes são escritos em caixa alta.  Exemplo:

V_COUNT = Nome da variável 

P_VLRTOT = Nome do parâmetro

Regras para escrever os nomes dos objetos:

Para escrever o nome dos objetos sempre com o prefixo correspondente ao mesmo, conforme citado acima, concatenado com a ação que ele executa e a tabela correspondente ou grupo que a define. Exemplos:

STP_INSERE_PRODUTOS / STP_INSERE_APAGAR_FINANCEIRO

PROCEDURES

PROCEDURE PARA INSERT:

Afim de facilitar o desenvolvimento da aplicação, esse banco de dados conta com as seguintes procedures para inserir as informações:

STP_INSERE_CAIXA: Faz o cadastro do caixa, mas antes faz uma validação se o nome do caixa não têm cadastrado. 

Os parâmetros esperados são: NOME DO CAIXA, VALOR DO SALDO

STP_INSERE_CLIENTE: Insere os dados do cliente para o seu cadastro. Os parâmetros esperados são: NOME, FONE WHATSAPP, FONE FIXO, E-MAIL, BAIRRO.

STP_INSERE_CONTAS_APAGAR_FINANCEIRO: Responsável por inserir os dados financeiros das despesas lançadas. Há regra que o tipo de pagamento escolhido o campo parcela for mais que 1, divide o valor total da despesa colocando a data de vencimento conforme o campo prazo entre as parcelas.  Os parâmetros esperados são: IDENTIFICADOR DO PAGAMENTO, VALOR TOTAL DA DESPESA, IDENTIFICADOR DO CAIXA, DATA DO PRIMEIRO VENCIMENTO, NÚMERO DO DOCUMENTO. 

STP_INSERE_ITENS: Faz a inserção dos itens do cabeçalho da venda. As regras são: quando os itens são inseridos é atualizado o campo VLRTOT  da tabela VEN_VENDA, atualiza o campo PRECO_TOT, NOMEPRODUTO da tabela VEN_ITENS.  Os parâmetros esperados por essa procedure são: IDENTIFICADOR DA VENDA, IDENTIFICADOR DO PRODUTO, QUANTIDADE DO PRODUTO VENDIDO. 

STP_INSERE_PRODUTO:  Insere as informações do produto na tabela CAD_PRODUTO. A regra que compõem essa procedure é a verificação da existência do nome do produto, ou seja, não pode haver produtos com o mesmo nome. Parâmetros esperados: NOME PRODUTO, PREÇO DO PRODUTO, TIPO DO PRODUTO(S OU P), QUANTIDADE EM ESTOQUE. 

STP_INSERE_TIPOSPAGAMENTO: Responsável pela a inserção dos tipos de pagamentos na tabela CAD_TIPOPAGAMENTO. A regra é verificar se existe nome igual, se sim, bloqueia a inserção dos dados. Seus parâmetros são:

NOMEPAGAMENTO, QUANTIDADE PARCELAS, PRAZO ENTRE AS PARCELAS. 

STP_INSERE_VENDA:  Faz a ação de inserir a venda na tabela VEN_VENDA. 

Não há regras especificas. Parâmetros são: IDENTIFICADOR DE CLIENTE, IDENTIFICADOR DE PAGAMENTO E IDENTIFICADOR DO CAIXA. 

Observação: todas essas procedures seus parâmetros são obrigatórios.

PROCEDURES da regra de negócio:

STP_RECEBE_FINANCEIRO: Ao executar essa procedure irá receber um título no financeiro. A regra para dar a baixa no financeiro o título tem que estar com o campo "RECEBIDO" igual a "N" e o campo DTPAGAMENTO precisa estar vazio. Os parâmetros esperados são: IDENTIFICADOR DO FINANCEIRO, IDENTIFICADO VENDA. 

PROCEDURES para DELETE:

Todas as procedures verificam se o dado para ser deletado está em uso nas tabelas de ações, caso não estiver em uso há o DELETE, se não retorna o ERRO 2001 que o dado está em uso e não pode ser deletado.

Por padrão da construção do banco de dados da BARBAEARIA há o desenvolvimento da chave estrangeira (FK) nas tabelas de cadastro, com isso, se existem dados nas tabelas que o cadastro relaciona não acontecerá o delete. 

STP_DELETE_CAD_CAIXA:  Deleta o cadastro do caixa. O parâmetro esperado é o ID_CAIXA que será deletado.

STP_DELETE_CAD_CLIENTE: Deleta o cadastro do cliente. O parâmetro esperado é o ID_CLIENTE que será deletado.

STP_DELETE_CAD_PRODUTO: Deleta o cadastro do produto. O parâmetro esperado é o ID_PRODUTO que será deletado.

STP_DELETE_CAD_TIPOPAGAMENTO: Deleta o cadastro do tipos de pagamentos. O parâmetro esperado é o ID_TIPOSPAGAMENTO que será deletado. 

PROCEDURE  para ações de negócios

STP_ESTORNA_FINANCEIRO:  Estorna a baixa do título. Independente se a duplicata é a receber ou a pagar e faz o delete do lançamento do saldo do caixa. Como parâmetro é esperado o ID_FINANCEIRO do título a ser estornado. 

STP_EXCLUI_VENDA: A exclusão da venda não exclui somente a venda, mas também  o lançamento do caixa, financeiro, itens e a venda. No entanto só é feito a exclusão quando o título não está recebido, caso o título estiver baixado é necessário efetuar o estorno do mesmo. 

Triggers

São gatilhos que são disparados quando uma ação acontece. 

TRG_ATUALIZA_FINANCEIRO: Esse gatilho é disparado quando a venda é modificada, assim atualiza os valores do financeiro em suas respectivas parcelas.

TRG_ATUALIZA_LANC_CAIXA: É um gatilho que ao receber o financeiro faz um lançamento no caixa para o controle do saldo.

Views

   Essas visões são para mostras os resultados da empresa e facilitar as apresentações das informações, como a confecção dos relatórios.

VW_RESULTADO_VENDAS:  Mostra todas as vendas que estão ativas na empresa ordenando por data de venda. 

VEW_RANKING_CLIENTE_VENDAS: Apresenta o ranking dos clientes por valor da venda somado.

VEW_RESULTADO_NAORECEBIDOS_DIAS:  Exibe os títulos a receber que não foram recebidos e quantos dias para o vencimento do mesmo.

VEW_RESULTADO_FINANCEIRO:  Exibe o resultado de todos os títulos a receber do financeiro.

VEW_RELATORIO_CONTABIL_COMPRA: Apresenta o relatório que a contabilidade pede todos os meses para a barbearia. 

VEW_SALDO_CAIXA: Exibi o saldo do caixa. Saldo recebido, saldo não recebido e o saldo total que é a somatória dos dois anteriores. 

Link para download dos arquivos do Banco de dados.

>>> Clique aqui <<<<

Glossário:

SGBD: gerenciador de banco de dados

LISTENER: arquivo de configuração das conexões do banco de dados

PROCEUDRE: procedimento do banco de dados

TRIGGER: gatilho que é disparador quando uma determinada ação acontece

VIEW: visão dos dados



 






  

Postagens mais visitadas deste blog

Instalação do Oracle e o SQLDeveloper - Windows

Dez dicas rápidas de Power BI