Code Monkey home page Code Monkey logo

bd's Introduction

hello world


Comecei meus estudos em tecnologia escrevendo em blogs, brincando um pouco com o JavaScript e o CSS. Em 2015 iniciei meus estudos no IFRN campus Caicó e me formei como técnica em Informática em 2018.

Atualmente curso o bacharelado de Ciência da Computação na UFPB e que me permite abraçar cada um dos diversos ramos da computação, dentre eles a Engenharia de Software, Banco de Dados, Redes, IA e Processamento Digital de Imagens.

Desde 2020 sigo como membro do PET Computação, grupo que me permitiu desenvolver ainda mais os aspectos de trabalho em grupo, comunicação e criatividade.

Mascote PET Computação, Petrucio o ornitorrinco

Também estou atuando como bolsista dos projetos Synchro.

No meu tempo livre gosto de fotografar, desenhar, estudar animação, ler, assistir séries e jogar.

No momento estou estudando a minha primeira Game Engine, Godot, e criando sprites em estilo de Pixel Art.

# Obrigada aos familiares, amigos, colegas e professores
if motivation is True:
  print("Don't you ever ever ever give up")

Stack e Ferramentas de Desenvolvimento

Spring Java NodeJS React Visual Studio Code IntelliJ IDEA

Outras tecnologias e ferramentas que utilizo

C C++ JavaScript TypeScript Python Jupyter Notebook Flask Pandas NumPy Matplotlib Elixir Figma Obsidian

Arte e Desenvolvimento de Jogos

Krita Aseprite Godot Engine Unity

🌼 Entre em contato

LinkedIn: sammid37 Email: samanthadmedeiros37@gmail.com Ko-Fi: sammid37

bd's People

Contributors

enthonymiguel avatar sammid37 avatar

Watchers

 avatar

bd's Issues

Gerar um relatório (vendedor)

Sobre a entidade Relatório

  • Data e Hora da geração (mês referente)
  • Para cada categoria de Produto (número total de itens em estoque e valor total)
    • Código/id do produto
    • Nome
    • Unidade/caixa
    • quantidade
    • custo unidade / total
  • Quantidade total de itens (somatório de itens da categoria) e Custo total (somatório de categorias)

Relatórios mensais são gerados por Vendedores

Exemplos de formatação de relatórios

https://share.linx.com.br/download/attachments/168822779/image2018-10-10_15-21-16.png?version=1&modificationDate=1589966254307&api=v2

https://portal.revendadesoftware.com.br/user/pages/02.manuais/01.eagle-gestao/18.modulo-relatorios/relatorio-decomposicoes-exemplo.png

Tratamento para SQL Injection

Descrição

Tratar SQL injection em um CRUD (Create, Read, Update, Delete) envolve práticas de programação defensiva para garantir que as consultas SQL sejam construídas de forma segura e que os dados inseridos pelos usuários sejam tratados corretamente. Aqui estão algumas práticas que você pode adotar:

  • Usar PreparedStatement: Use sempre PreparedStatement em vez de Statement para construir consultas SQL dinâmicas. O PreparedStatement fornece um mecanismo para definir parâmetros que são automaticamente tratados para prevenir SQL injection.
  • Evitar a concatenação de strings: Evite construir consultas SQL concatenando diretamente strings com dados do usuário. Isso pode deixar o seu código vulnerável a ataques de injeção de SQL. Em vez disso, use parâmetros em consultas preparadas.
  • Sanitizar e validar a entrada do usuário: Antes de usar os dados fornecidos pelo usuário em consultas SQL, valide e sanitize-os adequadamente. Isso inclui validar os tipos de dados esperados e remover qualquer caractere especial que possa ser usado em ataques de SQL injection.
  • Limitar permissões do banco de dados: Utilize princípios de menor privilégio ao conceder permissões de banco de dados. Isso significa que as contas de banco de dados devem ter apenas as permissões necessárias para executar as operações esperadas e não mais do que isso.
  • Implementar controle de acesso: Garanta que apenas usuários autorizados tenham acesso às operações CRUD e que essas operações estejam restritas aos dados relevantes para cada usuário.
  • Auditar consultas SQL: Implemente logs de auditoria para registrar consultas SQL executadas, especialmente aquelas que envolvem entrada do usuário. Isso pode ajudar a identificar tentativas de injeção de SQL e rastrear atividades suspeitas.

Diagrama UML

RELACIONAMENTOS

  • 1 cliente pode 1 ou N SKYs no seu nome
  • 1 cliente tem 0 ou 1 pedidos
  • 1 pedido de 1 ou N produtos
  • 1 vendedor gera 1 relatório mensal
  • 1 vendedor possui 1 ou N clientes
  • 1 vendedor efetiva 1 ou N pedidos (painel do vendedor)

(só 1 vendedor no sistema? perguntar a marcelo)

Importante ter: stored procedure, view e índices de restrições

Objetivo

Segundo o professor, stored procedure é melhor.

O que é uma Stored Procedure?

Uma stored procedure é um conjunto de instruções SQL nomeadas e armazenadas no banco de dados. Essas instruções são compiladas e armazenadas em um formato executável dentro do próprio banco de dados. Uma vez criada, uma stored procedure pode ser invocada e executada por aplicativos ou usuários do banco de dados.

-- exemplo 
DELIMITER //
CREATE PROCEDURE ProcessarPedido(IN id_pedido INT)
BEGIN
    -- Lógica para processar o pedido e atualizar o estoque dos produtos associados
    UPDATE produtos_pedido SET estoque = estoque - 1 WHERE id_pedido = id_pedido;
    UPDATE pedidos SET status = 'Processado' WHERE id_pedido = id_pedido;
END //
DELIMITER ;

O que é uma view?

Uma view é uma representação virtual de uma ou mais tabelas em um banco de dados. Ela permite que você execute consultas complexas com facilidade, além de fornecer uma camada adicional de abstração para os dados.

-- exemplo 
CREATE VIEW DetalhesPedido AS
SELECT p.id_pedido, p.data, c.nome AS nome_cliente, v.nome AS nome_vendedor
FROM pedidos p
INNER JOIN clientes c ON p.id_cliente = c.id_cliente
INNER JOIN vendedores v ON p.id_vendedor = v.id_vendedor;

O que são Índices de Restrições

Índices são estruturas de dados que melhoram a velocidade de recuperação de registros de uma tabela. Eles podem ser criados em colunas que são frequentemente usadas em cláusulas WHERE ou em junções de tabelas.

-- exemplo
CREATE INDEX idx_id_cliente ON pedidos (id_cliente);

O que são Restrições de Integridade Referencial:

As restrições de integridade referencial garantem a consistência dos dados ao estabelecer relações entre tabelas. Elas podem ser usadas para garantir que os valores em uma coluna de chave estrangeira em uma tabela existam na coluna de chave primária correspondente em outra tabela.

-- exemplo
ALTER TABLE pedidos
ADD CONSTRAINT fk_id_cliente
FOREIGN KEY (id_cliente)
REFERENCES clientes(id_cliente)
ON DELETE RESTRICT
ON UPDATE CASCADE;

Desenvolvimento

Deve haver ao menos...

  • 1 stored procedure
  • e 1 view

Deve-se criar:

  • índices e restrições de integridade referencial para as tabelas

Aplicar desconto em pedidos

Objetivo

Clientes que torcem flamengo, assistem one piece e/ou são de sousa possuem desconto nas compras.

A implementação deve ser feita em CatalogoLoja.java.

Pedidos: CRUD

Objetivo

Modelar e implementar todos os métodos dessa classe e o DAO.

Em seguida, aplicar regras de negócio estabelicidas na issue #8 e #9.


Sobre a entidade Pedidos

  • id do pedido (gerado automaticamente)
  • Lista de Produtos selecionados (preço unitário de cada produto e quantidade em estoque)
  • Id do cliente que realizou o pedido
  • Id do vendedor (inicialmente vazio, recebe o ID do Vendedor que aprovar o pedido)
  • Boolean Aplicação de desconto (de acordo com uma das regras) -> tirar dúvida com o professor
  • Data e hora do processamento (?)
  • Valor total (somatório dos Produtos selecionados)
  • Quantidade total de itens no pedido
  • Método de pagamento (enum)
  • Status do pedido (enum)

Compra não efetivada: quando não tem produto em estoque

Implementar os métodos

Em caso de dúvidas, contatar equipe e/ou tirar dúvidas com o professor!

  • Criar pedido
  • Alterar/atualizar pedido (cliente e vendedor)
  • Atualizar status do pedido (vendedor)
  • Listar pedidos (todos, por id e por id do vendedor que está logado)
  • Cancelar pedido (cliente)

Menu de opções

MENU (sem efetuar login)

  1. LOGIN
  2. CADASTRO
  3. CATÁLOGO
  4. Ver informações da loja

MENU (após efetuar login no sistema)

Visão do Menu para Clientes

  1. MINHA CONTA
  2. CARRINHO (acompanha Pedidos)
  3. REALIZAR COMPRAS (visualizar catálago e selecionar produtos para o carrinho)
  4. SAIR

Visão do Menu para Vendedores

  1. PAINEL (Permite gerenciar produtos)
  2. PEDIDOS (vendedor)
  3. GERAR RELATÓRIO
  4. SAIR

Vendedor: CRUD

Sobre a entidade Vendedor

  • Nome
  • CPF
  • Data de Nasc.
  • Endereço
  • Telefone
  • E-mail
  • Senha

Backlog

Projeto BD

  • Organizar diretórios do projeto
    • Adicionar diretório para o backend e mover antiga pasta crud para dentro dela
    • Adicionar diretório para o frontend do projeto (será trabalhada na parte 2 do projeto)

Clientes: CRUD

Sobre a entidade Cliente

  • Nome
  • CPF
  • Data de Nasc. (aniversário ganha cupom)
  • Endereço
  • Telefone
  • E-mail
  • Senha
  • Time
  • Boolean One Piece

Cliente ganha desconto no pedido se:

  • Assiste One Piece
  • Ou torce para o Flamengo
  • Ou se tem endereço em Souza-PB

Versão via terminal

Objetivo

Permitir navegar pelas opções e realizar as opções disponíveis com base no tipo de usuário logado.

Acompanhar especificações do menu de opções da issue #12.

Produtos: CRUD

Objetivo

Modelar e implementar todos os métodos dessa classe e DAO.

Em seguida, aplicar regras de negócio estabelicidas na issue #7.


Sobre a entidade Produtos

  • id(gerado automaticamente)
  • Título
  • Descrição
  • Modelo
  • Quantidade em Estoque
  • preço unitário
  • Local de fabricação (Mari)
  • Categoria

Exemplos de produtos cadastráveis

  • Kit SKY completo (SD, HD, Full HD, etc)
  • Kit com receptor (SD, HD, Full HD, etc)
  • Antena (60 cm)
  • Cabo, conector, LNBF,e outros acessórios
  • Controle (modelo, valor)
  • Recarga
  • Instalação e Manutenção (valor do serviço + taxa de deslocamento)

Pós-Pago (contrato -> plano só escolhe na compra, só muda de plano com a central)
Pré-Pago (mais flexível)

Sobre as recargas

  • Nome do cliente -> id do cliente
  • Telefone (envio do comprovante)
  • Código de assinatura
  • Escolher: pacote (cada pacote tem duração e valor pela duração)

Criar método para criar conexão em DAO

Objetivo

Criar um método para que a operação abaixo não se repita com tanta frequência para cada método DAO de qualquer classe.

 public void salvarCliente(Cliente cliente) {
    Connection connection = null;
    PreparedStatement statement = null;

    try {
      connection = ConnectionFactory.createConnectionToMySQL();
      String query = "INSERT INTO clientes " +
              "(nome, data_nasc, tel, email, senha, time, one_piece) " +
              "VALUES " +
              "(?, ?, ?, ?, ?, ?, ?)";
      statement = connection.prepareStatement(query);
      // ...

Backlog (parte 2)

Projeto Final de BD

Sobre o que é o nosso projeto?

Um sistema para revendedores SKY (categoria 50).

Especificações Parte 2

O objetivo deste estender o sistema anterior para incorporar um módulo de vendas é projetar um sistema de vendas. Na parte #1, foi abordado o crud de uma entidade cliente/estoque/venda. Na parte 2, será necessário ter todas as entidades e relacionamentos de um sistema de vendas.

Relatório de vendas devem ser gerados com base nos pedidos aprovados por vendedores

Interface

Criar branches separadas para a versão com interface via terminal e outra com interface feita com React


Referências

Vendedor faz CRUD em Produtos (listagem de 1 ou todos)

Depende da conclusão da issue #25.

Objetivo

  • Permitir a listagem de um único produto por ID, Nome, faixa de preço ou Categoria
  • Permitir a listagem de todos os produtos cadastrados, exibindo todas as informações
System.out.println("Código | Nome Produto | Valor | Estoque");

Aplicar regras de filtragem

Objetivos

Filtros para pesquisa de produtos

  • Nome
  • Faixa de Preço
  • Fabricacao (default Mari)
  • Categoria
  • Estoque < 5 unidades (Vendedor)

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.