
🚀 Este projeto foi desenvolvido durante o módulo "Explorando Bancos Relacionais e Consultas em SQL" do Bootcamp Klabin - Análise de Dados com Excel e Power BI Dashboards da Digital Innovation One (DIO) em parceria com a empresa Klabin.
O objetivo foi replicar e refinar a modelagem de um banco de dados para um cenário de e-commerce, contemplando desde a definição de chaves e constraints, até a criação do script SQL com inserção de dados de teste e queries mais complexas.
Durante o desafio, foram aplicados conceitos de modelagem lógica, relacional e EER, além da implementação de boas práticas de integridade e consistência de dados.
⚠️ Observação: todos os dados utilizados para abastecer o banco foram gerados de forma aleatória utilizando inteligência artificial, garantindo diversidade sem expor informações reais de clientes ou empresas.
Este projeto me permitiu:
- Consolidar conceitos de modelagem relacional e EER.
- Praticar criação de schemas SQL complexos.
- Simular hipóteses de negócio reais através de consultas avançadas.
O projeto inclui queries que respondem a hipóteses de negócio, como:
- Quantos pedidos foram feitos por cliente?
- Existe algum vendedor que também é fornecedor?
- Qual a relação entre produtos e fornecedores?
- Como se distribuem os produtos segundo a curva ABC baseada em margem de lucro?
Todas as queries estão comentadas no código para facilitar o entendimento.
MySQL para criação e gerenciamento do banco de dados.
Workbench para modelagem visual.
SQL para consultas e manipulação de dados.
- Estrutura de herança Super-Tipo/Sub-Tipo: separação em
client_pf
eclient_pj
. - Campos específicos para CPF e CNPJ, ambos UNIQUE e NOT NULL.
- Inclusão de atributos como email (único) e contact.
- Ajustes de tamanho e obrigatoriedade em campos-chave.
- Adição de campos financeiros: unitPrice e profitMargin.
- Ampliação das categorias com Livros, Limpeza e Games.
- Ajuste de tipos de dados e tamanhos para maior consistência.
- Criação de chave primária própria (
id_payment
). - Relacionamento direto com clientes.
- Expansão dos tipos de pagamento: Pix, Crédito e Débito.
- Inclusão do campo
details
e melhoria de nomenclatura.
- Integração com a tabela
payments
. - Ajustes em nomes e tipos de dados (como
sendValue
).
- Nova tabela para rastreio de entregas.
- Atributos como
trackingCode
(único) edeliveryStatus
(ENUM detalhado).
- Inclusão de email único em fornecedor.
- Ajustes de tamanho em CPF e CNPJ.
- Padronização de nomenclaturas.
- Correção em
storageLocation
e outras entidades.

Análise | Hipótese | Descrição / Objetivo | Conclusão |
---|---|---|---|
Clientes cadastrados | - | Identificar quem são os clientes e como contatá-los | Foi possível listar todos os 10 clientes com seus emails para contato. |
Produtos infantis disponíveis | - | Verificar quais produtos atendem ao público infantil | 2 produtos classificados como infantis: Boneco Avengers e Chocolate Nestlé. |
Entregas cadastradas com rastreamento | Acompanhamento do status pode reduzir o número de reclamações | Monitorar status das entregas | Hipótese plausível: é possível acompanhar todas as entregas, mas não há dados de reclamações para confirmar efeito. |
Quantidade de pedidos por cliente | - | Identificar clientes mais ativos | Clientes com maior número de pedidos: João e Ana. |
Algum vendedor também é fornecedor | - | Verificar se há sobreposição de funções | Nenhum vendedor também é fornecedor. |
Produtos, fornecedores e estoques | - | Relacionar produtos aos fornecedores e quantidades fornecidas | 'Fornecedor Alimentos' fornece a maior quantidade. |
Produtos com categorias e preços | Categorias com preços mais altos podem gerar maior margem de lucro | Observar faixa de preço por categoria | Verdadeiro: produtos mais caros tendem a gerar maior margem de lucro. |
Produtos com maior margem de lucro | Alguns produtos são mais rentáveis mesmo com menor volume | Identificar produtos mais lucrativos | Verdadeiro: alguns produtos têm margem significativamente maior, independente do volume. |
Volume de compra: PJ x PF | Clientes PJ compram em maior quantidade que PF | Comparar quantidade de itens comprados por tipo de cliente | Falso: PF comprou mais itens que PJ neste dataset. |
Top 5 produtos mais vendidos | Poucos produtos concentram a maior parte das vendas | Identificar produtos mais vendidos | Verdadeiro: poucos produtos concentram a maior parte das vendas. |
Receita total por cliente | Existe concentração de receita em poucos clientes | Calcular receita total por cliente | Verdadeiro: poucos clientes concentram a maior parte da receita. |
Categoria que mais gera receita | Algumas categorias concentram maior valor de receita | Identificar categorias mais lucrativas | Verdadeiro: uma categoria específica gera maior receita que as demais. |
Ranking de vendedores por quantidade vendida | Pequeno número de vendedores concentra a maior parte das vendas | Listar vendedores mais ativos | Verdadeiro: vendas concentradas em poucos vendedores. |
Pedidos cancelados por tipo de cliente | Clientes PJ podem ter maior índice de cancelamento | Comparar pedidos cancelados por tipo | Falso: neste dataset, apenas PF teve pedido cancelado. |
Fornecedores que mais contribuem para estoque | Poucos fornecedores concentram a maior parte do fornecimento | Identificar principais fornecedores | Verdadeiro: um fornecedor concentra a maior parte do estoque fornecido. |
Tempo médio de entrega | - | Calcular média de dias para pedidos entregues | Tempo médio de entrega pode ser calculado e utilizado como referência. |
Classificação ABC de produtos | Poucos produtos (classe A) geram a maior parte do lucro | Categorizar produtos por contribuição ao lucro | Verdadeiro: poucos produtos geram a maior parte do lucro total. |
Clientes com receita acima de R$2.000 | - | Identificar clientes que geram maior receita | Clientes com maior receita: João, Ana e Lucas. |
Para rodar o projeto na sua máquina, siga os passos abaixo:
- Clonar o repositório
git clone https://github.com/LucasPBar/sql-ecommerce-analytics.git
cd sql-ecommerce-analytics
-
Abrir o MySQL Workbench ou outro cliente SQL de sua preferência.
-
Criar um novo schema com o nome desejado (ex:
ecommerce_db
). -
Executar os scripts SQL na seguinte ordem para garantir a criação correta do banco, inserção de dados e execução das queries de análise:
project_ecommerce_dio_database.sql
→ Criação da infraestrutura do banco de dados (tabelas, chaves e relacionamentos).project_ecommerce_dio_data.sql
→ Abastecimento do banco com dados de teste gerados por inteligência artificial.project_ecommerce_dio_analise.sql
→ Queries para recuperar informações e testar hipóteses de negócio.
- Explorar os dados: abra o arquivo de queries (
project_ecommerce_dio_analise.sql
) para testar consultas ou criar análises adicionais conforme desejar.
⚠️ Observação: Todos os dados utilizados foram gerados de forma aleatória com o uso de inteligência artificial, não correspondendo a informações reais de clientes ou empresas. **
👤 Nome: | Lucas Pimenta Barretto | |
linkedin.com/in/lucaspimentabarretto | ||
📧 Email: | [email protected] | |
💼 Portfólio | Data Science Portfolio |