https://sqliteonline.com/ -- Projeto compilado no link modelo MY SQL
Este projeto consiste na modelagem do banco de dados para um cenário de e-commerce, considerando as relações entre as entidades e as chaves primárias e estrangeiras necessárias. Além disso, inclui a criação de queries SQL que abordam diversos aspectos do sistema de e-commerce.
O objetivo deste projeto é replicar a modelagem do banco de dados para um cenário de e-commerce, considerando as seguintes diretrizes:
- Modelagem de Cliente PJ e PF: Uma conta pode ser Pessoa Jurídica (PJ) ou Pessoa Física (PF), mas não pode ter ambas as informações.
- Modelagem de Pagamento: Um cliente pode ter cadastrado mais de uma forma de pagamento.
- Modelagem de Entrega: A entidade "Entrega" possui status e código de rastreio.
O banco de dados é composto por várias tabelas que representam diferentes aspectos do sistema de e-commerce. Aqui estão algumas das principais entidades e suas relações:
- Cliente: Armazena informações sobre os clientes, que podem ser PJ ou PF.
- Conta: Uma conta está associada a um cliente e representa a conta do cliente no sistema.
- Pedido: Representa um pedido feito por um cliente, contendo informações sobre os produtos, pagamento e entrega.
- Produto: Contém informações sobre os produtos disponíveis para compra.
- Fornecedor: Representa os fornecedores dos produtos.
- Estoque: Registra as quantidades de produtos disponíveis em estoque.
- Pagamento: Armazena informações sobre as formas de pagamento cadastradas pelos clientes.
- Entrega: Contém informações sobre as entregas, incluindo status e código de rastreio.
Aqui estão algumas queries SQL que podem ser aplicadas a este banco de dados:
-
Quantidade de Pedidos por Cliente:
SELECT Cliente.Nome, COUNT(Pedido.ID) AS TotalPedidos FROM Cliente LEFT JOIN Pedido ON Cliente.ID = Pedido.ClienteID GROUP BY Cliente.Nome;
-
Algum vendedor também é fornecedor?
SELECT S.idSeller, S.SocialName FROM seller S INNER JOIN supplier SUP ON S.CNPJ = SUP.CNPJ;
-
Relação de produtos fornecedores e estoques
SELECT P.Pname, SUP.SocialName, PS.quantity AS Estoque FROM product P INNER JOIN productSupplier PS ON P.idProduct = PS.idPsProduct INNER JOIN supplier SUP ON PS.idPsSupplier = SUP.idSupplier;
-
Relação de nomes dos fornecedores e nomes dos produtos
SELECT SUP.SocialName AS Fornecedor, P.Pname AS Produto FROM supplier SUP INNER JOIN productSupplier PS ON SUP.idSupplier = PS.idPsSupplier INNER JOIN product P ON PS.idPsProduct = P.idProduct;
-
Pedidos com Status de Entrega:
SELECT O.idOrder, O.orderStatus, D.Status AS StatusEntrega, D.TrackingCode FROM orders O LEFT JOIN Delivery D ON O.idOrder = D.idOrder;