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