Este projeto consiste em um sistema completo de CRUD e PDV (Ponto de Venda) para uma loja de roupas, desenvolvido para a disciplina de Banco de Dados I. O sistema é operado via console interativo e utiliza Node.js com MySQL.
O sistema permite Inserir, Alterar, Pesquisar, Remover, Listar e Exibir detalhes para as seguintes entidades:
- Clientes: Com critérios de desconto personalizados (Torcedor do Flamengo, fã de One Piece ou natural de Sousa).
- Vendedores: Controle de matricula e status (Ativo/Inativo).
- Categorias: Organização dos produtos.
- Produtos: Controle de marca, tamanho, preço e origem (Fabricados em Mari).
- Realização de vendas vinculando Cliente, Vendedor e múltiplos Produtos.
- Cálculo Automático de Desconto: 10% de desconto se o cliente atingir os critérios da especificação.
- Controle de Estoque: O sistema utiliza transações e bloqueios (
FOR UPDATE) para garantir que uma venda não ocorra se não houver estoque disponível. - Pagamentos: Suporte a CARTÃO, BOLETO, PIX, DINHEIRO e BERRIES, com status de confirmação.
- Busca de produtos por Nome, Faixa de Preço, Categoria e Filtro de Origem (Mari).
- Filtro de estoque baixo (menos de 5 unidades).
- Relatório Geral: Resumo de faturamento, ticket médio e valor total em estoque.
- Relatório Mensal por Vendedor: Através de VIEW no banco de dados.
- Linguagem: JavaScript (Node.js)
- Banco de Dados: MySQL 8.0+
- Bibliotecas:
mysql2/promise(Conexão),dotenv(Segurança),readline/promises(Interface).
O sistema utiliza conceitos avançados de SQL:
- VIEW:
vw_relatorio_vendedorpara análise de performance. - STORED PROCEDURE:
confirmar_pagamentopara processamento de transações. - Integridade: Chaves estrangeiras (FK) e Índices para performance.
- UML: Diagrama de classes atualizado incluso na raiz (
diagrama_uml_classes.png).
-
Instale as dependências:
npm install
-
Configure o Banco de Dados:
- Crie um banco no MySQL chamado
loja_roupas. - Renomeie o arquivo
.env.examplepara.enve insira suas credenciais (Host, User, Password).
- Crie um banco no MySQL chamado
-
Prepare as Tabelas: Você pode importar o arquivo
schema.sqldiretamente no seu MySQL Workbench ou rodar no terminal. -
Inicie o Sistema:
npm start
Para verificar se todas as regras de negócio (descontos, estoque, etc.) estão funcionando, rode o script de teste automatizado:
node teste_completo.js![]() Gabriel Ribeiro |
![]() João Vitor Sampaio |
|---|
Este projeto está sob a licença MIT.
Projeto desenvolvido para fins acadêmicos - UFPB.

