Giter VIP home page Giter VIP logo

casaolivera's Introduction

Estudo de caso da Casa Olivera

Desenvolvimento das modelagens do estudo de casa

O estudo de caso:

Casa Oliveira

Roberto é dono de um mercado no bairro de Vargem Grande, na cidade de Tupã. Ele herdou o negócio de seu pai, Gumercindo Oliveira, ela foi aberta em 1978 na garagem da casa da família, era uma pequena quitanda. Com o passar dos anos o negócio cresceu e Gumercindo foi obrigado a ir para outro ponto maior e ali permaneceu até os dias atuais.

Roberto, que agora é o novo dono do mercado continuou o negócio seguindo da mesma forma que o pai. Ele comprava diretamente com os fornecedores grandes volumes de produtos e armazenava em seu estoque. As vezes ele comprava muitos produtos que ainda havia em estoque causando uma sobrecarga de produtos, ele também tinha muitos produtos estragados, tais como: frutas, legumes, iogurtes, leites, frango etc. Também havia muitos produtos com o prazo de validade vencido.

Os funcionários eram poucos e faziam muitas coisas ao mesmo tempo. O açougueiro também ajudava no estoque, a moça da limpeza ajudava na organização dos produtos das prateleiras, além de ajudar na padaria, quanto o caixa estava vazio o operador ajudava a repor os laticínios e a limpar a loja. O repositor também fazia operação no caixa.

Ao realizar a venda o Roberto, que sabia o nome de quase todos os clientes, anotava em um caderno todos os produtos que vendia e que havia em estoque. Ao fim do dia , Roberto pegava o caderno de fazia os cálculos de o quanto havia vendido, somando o faturamento e realizando a atualização do estoque. Isso é feito todos os dias e toma um tempo considerável para que tudo seja feito.

Roberto fechava a loja as 18h, mas só ia para casa as 22h, após fazer todas as operações necessárias. Mesmo assim o negócio vai bem e Roberto pretende ir para outro ponto e aumentar o volume de negócios e contratar novos funcionários.

Marica, esposa de Roberto, vem conversando com ele há muito tempo para que ele contrate uma empresa para construir um sistema de informática para gerenciar o negócio e reduzir o tempo que ele passa trabalhando e tenha maior organização dos produtos, maior lucratividade e melhorar a gestão. Com a intenção de aumentar o negócio, Roberto está disposto a informatizar sua empresa. Vamos ajudá-lo. Iremos começar construindo o banco de dados.

Entidades levantadas

  • Estoque;
  • Produto;
  • Venda;
  • Detalhes da Venda;
  • Cliente;
  • Funcionário;
  • Cargos;
  • Usuário;
  • Pagamento;
  • Fornecedor;
  • Endereço;
  • Contato;

Primeiro diagrama

"Diagrama casa oliveira"

Esquema de tabelas para o banco de dados

"Esquema casa oliveira excel"

Modelo Físico: Código que gera o banco de dados

-- Comando para criar um novo banco de dados.
CREATE DATABASE casaoliveira;
-- comando para selecionar o banco de dados criado.
USE casaoliveira;

-- comando para a criação de tabelas.
CREATE TABLE usuario(
idusuario int auto_increment primary key,
nomeusuario varchar(50) not null unique,
senha varchar(255) not null,
criadoem datetime default current_timestamp(),
foto varchar(250) not null
);

CREATE TABLE funcionario(
idfuncionario int auto_increment primary key,
nomefuncionario varchar(50) not null,
cpf varchar(13) not null unique,
idcargo int not null,
expediente varchar(50) not null,
idusuario int not null,
idendereco int not null,
idcontato int not null
);

CREATE TABLE cargo(
idcargo int auto_increment primary key,
titulocargo varchar(30) not null unique,
salario decimal(7,2) not null,
departamento varchar(30) not null unique
);

CREATE TABLE contato(
idcontato int auto_increment primary key,
telefoneresidencial varchar(15),
telefonecelular varchar(15) not null unique,
email varchar(100) not null unique
);

CREATE TABLE endereco(
idendereco int auto_increment primary key,
tipologradouro enum("Rua","Avenida","Travessa","Estrada","Viela","Praça","Alameda"),
logradouro varchar(50) not null,
numero varchar(10) not null,
complemento varchar(30),
bairro varchar(30) not null,
cep varchar(10) not null,
cidade varchar(30) not null,
estado varchar(20) not null
);

CREATE TABLE fornecedor(
idfornecedor int auto_increment primary key,
razaosocial varchar(50) not null unique,
nomefantasia varchar(50) not null,
cnpj varchar(15) not null unique,
idcontato int not null,
idendereco int not null
);

CREATE TABLE produto(
idproduto int auto_increment primary key,
nomeproduto varchar(50) not null unique,
categoria enum("Frios","Limpeza","Laticinios","Cereais","Açougue","Bebidas","Pâes","Hortifruti"),
descricao text not null,
idfornecedor int not null,
preco decimal(6,2) not null
);

CREATE TABLE lote(
idlote int auto_increment primary key,
datafabricacao date not null,
datavalidade date not null,
idproduto int not null
);

CREATE TABLE estoque(
idestoque int auto_increment primary key,
idlote int not null,
quantidade int not null,
dataestoque datetime default current_timestamp()
);

CREATE TABLE cliente(
idcliente int auto_increment primary key,
nomecliente varchar(50) not null,
cpf varchar(13) not null unique,
datanascimento date not null,
idcontato int not null,
idendereco int not null
);

CREATE TABLE venda(
idvenda int auto_increment primary key,
idcliente int not null,
idfuncionario int not null,
datahora datetime default current_timestamp(),
total decimal(7,2) not null
);

CREATE TABLE detalhevenda(
iddetalhevenda int auto_increment primary key,
idvenda int not null,
idproduto int not null,
quantidade int not null,
subtotal decimal(7,2)
);

CREATE TABLE pagamento(
idpagamento int auto_increment primary key,
idvenda int not null,
formapagamento enum("Dinheiro","Crédito","Débito","PIX"),
observacao text not null
);

-- Alterar a tabela funcionário para adicionar uma chave
-- estrangeira e um relacionamento com a tabela de usuario

-- Funcionario

ALTER TABLE funcionario
ADD CONSTRAINT `fk.func_pk.usuario`
FOREIGN KEY funcionario(`idusuario`)
REFERENCES usuario(`idusuario`);

ALTER TABLE funcionario
ADD CONSTRAINT `fk.func_pk.cargo`
FOREIGN KEY funcionario(`idcargo`)
REFERENCES cargo(`idcargo`);

ALTER TABLE funcionario
ADD CONSTRAINT `fk.func_pk.endereco`
FOREIGN KEY funcionario(`idendereco`)
REFERENCES endereco(`idendereco`);

ALTER TABLE funcionario
ADD CONSTRAINT `fk.func_pk.contato`
FOREIGN KEY funcionario(`idcontato`)
REFERENCES contato(`idcontato`);

-- Fornecedor

ALTER TABLE fornecedor
ADD CONSTRAINT `fk.forne_pk.contato`
FOREIGN KEY fornecedor(`idcontato`)
REFERENCES contato(`idcontato`);

ALTER TABLE fornecedor
ADD CONSTRAINT `fk.forne_pk.endereco`
FOREIGN KEY fornecedor(`idendereco`)
REFERENCES endereco(`idendereco`);

-- Produto

ALTER TABLE produto
ADD CONSTRAINT `fk.produto_pk.fornecedor`
FOREIGN KEY produto(`idfornecedor`)
REFERENCES fornecedor(`idfornecedor`);

-- Lote

ALTER TABLE lote
ADD CONSTRAINT `fk.lote_pk.produto`
FOREIGN KEY lote(`idproduto`)
REFERENCES produto(`idproduto`);

-- Estoque

ALTER TABLE estoque
ADD CONSTRAINT `fk.esto_pk.lote`
FOREIGN KEY estoque(`idlote`)
REFERENCES lote(`idlote`);

-- Cliente

ALTER TABLE cliente
ADD CONSTRAINT `fk.cliente_pk.contato`
FOREIGN KEY cliente(`idcontato`)
REFERENCES contato(`idcontato`);

ALTER TABLE cliente
ADD CONSTRAINT `fk.cliente_pk.endereco`
FOREIGN KEY cliente(`idendereco`)
REFERENCES endereco(`idendereco`);

-- Venda

ALTER TABLE venda
ADD CONSTRAINT `fk.venda_pk.cliente`
FOREIGN KEY venda(`idcliente`)
REFERENCES cliente(`idcliente`);

ALTER TABLE venda
ADD CONSTRAINT `fk.venda_pk.funcionario`
FOREIGN KEY venda(`idfuncionario`)
REFERENCES funcionario(`idfuncionario`);

-- Detalhe venda

ALTER TABLE detalhevenda
ADD CONSTRAINT `fk.dv_pk.venda`
FOREIGN KEY detalhevenda(`idvenda`)
REFERENCES venda(`idvenda`);

ALTER TABLE detalhevenda
ADD CONSTRAINT `fk.dv_pk.produto`
FOREIGN KEY detalhevenda(`idproduto`)
REFERENCES produto(`idproduto`);

-- Pagamento

ALTER TABLE pagamento
ADD CONSTRAINT `fk.paga_pk.venda`
FOREIGN KEY pagamento(`idvenda`)
REFERENCES venda(`idvenda`);


-- comando que apaga o banco de dados.
-- drop database casaoliveira;

Modelo Relacional do banco de dados

"Modelo Relacional"

casaolivera's People

Contributors

luis-antonio-lima avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.