Sobre o projeto
A Pizzaria Delivery nos solicitou o desenvolvimento de um sistema para facilitar a gestão de pedidos, controle de entregas e acompanhamento dos pagamentos de forma automatizada e integrada. A proposta central é que o sistema seja intuitivo e funcional, para garantir uma melhor experiência para o cliente, desde o momento do pedido até a entrega da pizza.
Desafios e Necessidades
O briefing recebido pela pizzaria destacava os seguintes pontos como essenciais para o desenvolvimento do sistema:
- Cadastro de Clientes: Registro completo das informações dos clientes, como nome, endereço, email e telefones, para facilitar a entrega.
- Gestão de Pedidos: A pizzaria precisava de um sistema que registrasse de forma precisa e rápida os pedidos dos clientes, com a possibilidade de adicionar múltiplos itens (pizzas, bebidas) em uma única transação.
- Catálogo de Produtos: Outra necessidade era ter um catálogo de pizzas e bebidas disponível, com tamanhos e preços configuráveis, permitindo atualizações frequentes conforme o cardápio fosse modificado.
- Gestão de Entregas: A equipe de motoqueiros precisava ser organizada de modo que cada motoqueiro tivesse suas entregas designadas com as informações relevantes para entrega.
- Pagamento Simplificado: O sistema deveria suportar várias formas de pagamento, incluindo dinheiro (com opção de troco), pix, cartão de crédito e débito, mantendo o registro de entradas e saídas.
- Relatórios: A pizzaria queria obter relatórios de vendas, mostrando a quantidade de pedidos, valor total, e desempenho individual dos motoqueiros contratados.
Modelo Conceitual
O modelo conceitual foi projetado com base nos principais fatores e processos de um sistema de pizzaria delivery, garantindo que todas as informações essenciais para o funcionamento do serviço sejam representadas. Fornecendo uma visão geral dos dados que serão armazenados e como eles se relacionam entre si, sem entrar nos detalhes de implementação. Usado para garantir que todos os requisitos de negócio sejam atendidos antes de iniciar a implementação física do banco de dados.
Entidades
As entidades representam os principais componentes do sistema de pizzaria delivery. Para este projeto, as seguintes entidades foram definidas:
- Cliente: Armazena informações sobre os clientes que fazem pedidos. Cada cliente tem um ID único, nome, endereço, email e telefones (armazenados separadamente em uma tabela de Telefones_Cliente). A entidade Cliente está diretamente relacionada aos pedidos.
- Pizza: Representa os produtos principais do sistema. Cada pizza possui um ID, nome, tamanho, preço e lista de ingredientes (relacionada a uma tabela de Ingredientes_Pizzas onde são listados os componentes de cada pizza).
- Bebida: Similar à Pizza, a entidade Bebida armazena informações sobre bebidas disponíveis para pedidos, incluindo ID, nome, tamanho e preço.
- Motoqueiro: Motoqueiros são os responsáveis pela entrega dos pedidos. Cada motoqueiro tem um ID, nome, número de placa da moto e telefones (relacionado a uma tabela de Telefones_Motoqueiros para armazenar os números de contato).
- Pedido: A entidade central que armazena todas as transações dos clientes. Cada pedido contém um ID único, o ID do cliente que fez o pedido, ID do motoqueiro que fez a entrega, valor total, a data e hora do pedido e o endereço de entrega.
- Itens_Pedido: Armazena os itens individuais de cada pedido. Cada item tem um ID único, o ID do pedido ao qual pertence, o ID do produto (pizza ou bebida), a quantidade, o preço unitário e o subtotal do item. O tipo de produto (pizza ou bebida) também é registrado para diferenciar os produtos.
- Pagamento: Registra como os clientes pagaram por seus pedidos. Cada pagamento tem um ID, o ID do pedido, o valor pago, troco (quando necessário) e a forma de pagamento (relacionado a uma tabela de Formas_Pagamento).
Relacionamentos
Conexões entre as entidades e como elas colaboram entre si no sistema de pizzaria delivery.
- Um Cliente pode fazer vários Pedidos, mas cada Pedido está associado a apenas um Cliente.
- Um Cliente pode ter múltiplos Telefones, que são armazenados na tabela Telefones_Cliente e cada telefone está vinculado a apenas um Cliente.
- Um Pedido pode incluir várias Pizzas e Bebidas, mas cada item Pedido está relacionado a um Pedido específico.
- Cada Pizza contém múltiplos Ingredientes, que são armazenados na tabela Ingredientes_Pizzas e cada ingrediente pode estar presente em diversas pizzas.
- Um Motoqueiro pode realizar várias entregas, mas cada Pedido está associado a apenas um Motoqueiro.
- Um Motoqueiro pode ter vários Telefones, que são armazenados na tabela Telefones_Motoqueiros, onde cada telefone está vinculado a apenas um Motoqueiro.
- Cada Pedido está associado a um Pagamento, mas um Pagamento está vinculado a apenas um Pedido.
- Cada Pagamento tem pelo menos uma Forma de Pagamento armazenada na tabela Formas_Pagamento. As formas de pagamento podem ser compartilhada entre vários pagamentos.
Cardinalidades
Limites e possibilidades de conexão entre as entidades dentro do modelo de dados, onde "N" representa um número indefinido. O primeiro valor indica o número mínimo de instâncias e o segundo valor indica o número máximo.
- Um Cliente pode fazer "0" a "N" Pedidos e possuir "1" a "N" Telefones_Cliente.
- Cada Pedido deve estar associado a "1" Cliente e pode conter "1" a "N" Itens_Pedido (pizzas ou bebidas).
- Um Motoqueiro pode entregar "0" a "N" Pedidos e possuir "1" a "N" Telefones_Motoqueiro.
- Um Pagamento deve estar associado a "1" Pedido e pode ter "1" a "N" Formas_Pagamento.
- Um Itens_Pedido deve estar associado a "1" Pedido e pode conter "0" a "N" Pizza e "0" a "N" Bebida.
- Uma Pizza pode ter "1" a "N" Ingredientes_Pizza.
Modelo Lógico
O modelo lógico detalha a estrutura do banco de dados, transformando os conceitos do modelo conceitual em um design mais específico e tecnicamente implementável. Este modelo define as tabelas, atributos e relacionamentos entre as tabelas, garantindo que todas as entidades e suas interações sejam corretamente representadas. Ele estabelece as bases para a implementação física do banco de dados, refletindo a organização dos dados e as regras de integridade necessárias para a operação eficiente do sistema de pizzaria delivery.