(Focado no Processamento de Pedidos, Experiência do Cliente e Operações da Loja)

🔍 Contexto Empresarial
Este Diagrama Entidade-Relacionamento modela as operações principais em uma loja da McDonald’s, com foco em:
-
Fluxo de pedido do cliente até o pagamento
-
Funções dos funcionários e gestão da loja
-
Disponibilidade e preços do menu
-
Fidelidade do cliente e engajamento recorrente
-
Controle básico de estoque (para itens alimentícios)
Observação: Este não é um banco de dados corporativo completo (por exemplo, cadeia de suprimentos ou RH), mas uma base realista e escalável para um sistema POS de fast-food.
📚 Entidades e Atributos
| Entidade | Atributos |
|---|---|
| Cliente | CustomerID (PK), Nome, Telefone, Email, Pontos de Fidelidade, Nível de Participação (por exemplo, Bronze, Prata) |
| Loja | StoreID (PK), Nome, Localização (Endereço), ManagerID (FK → Funcionário), Horário de Funcionamento, Total de Vendas (mensal) |
| Funcionário | EmployeeID (PK), Nome, Cargo (Caixa, Cozinheiro, Gerente, Supervisor), StoreID (FK), Data de Contratação, Escala de Turno |
| Item do Menu | MenuItemID (PK), Nome, Descrição, Preço, Categoria (Hambúrguer, Bebida, Acompanhamento, Sobremesa), Ativo, URL da Imagem |
| Pedido | OrderID (PK), Hora do Pedido, Status (Pendente → Preparando → Pronto → Concluído → Cancelado), Valor Total, StoreID (FK), CustomerID (FK) |
| Item do Pedido | OrderItemID (PK), OrderID (FK), MenuItemID (FK), Quantidade, Total da Linha (calculado automaticamente) |
| Pagamento | PaymentID (PK), Valor, Método (Dinheiro, Cartão de Crédito, MobilePay), ID da Transação, OrderID (FK), Timestamp |
| Promoção | PromoçãoID (PK), Código (por exemplo, “BEM-VINDO10”), TipoDesconto (Porcentagem, ValorFixo), ValorDesconto, DataAtivação, DataExpiração, AplicaA (por exemplo, Almoço, TodosItens) |
🔗 Relações (com cardinalidades)
| Relação | Cardinalidade | Descrição |
|---|---|---|
Cliente → Pedido |
1 → 0.. | Um cliente faz múltiplos pedidos ao longo do tempo. |
Pedido → ItemPedido |
1 → 0.. | Cada pedido contém zero ou mais itens do menu. |
Pedido → Pagamento |
1 → 1 | Cada pedido concluído possui exatamente um pagamento. |
Pedido → Loja |
1 → 1 | Cada pedido é feito em uma loja específica. |
Loja → Funcionário |
1 → 0.. | Uma loja emprega múltiplos funcionários (caixas, cozinheiros, gerentes). |
Loja → Pedido |
1 → 0.. | Uma loja recebe muitos pedidos. |
Item do Menu → Item do Pedido |
1 → 0.. | Um item do menu pode aparecer em múltiplos pedidos. |
Promoção → Pedido |
0 → 1 | Uma promoção pode se aplicar a um pedido (por exemplo, “Compre 1 Big Mac, ganhe 1 grátis”). |
Funcionário → Loja |
1 → 1 | Cada funcionário trabalha em uma loja. |
✅ Opcional: Adicionar um
Programa de Fidelidadeentidade se for necessário um lógica de fidelidade mais aprofundada (por exemplo, resgate de pontos, recompensas).
🔒 Restrições e Regras de Negócio
-
O preço deve ser > 0
-
O status do pedido não pode ser ‘Concluído’ se o pagamento estiver ausente
-
A quantidade no Item do Pedido ≥ 1
-
Promoções só podem ser aplicadas se estiverem ativas e dentro do período válido
-
O cliente deve estar vinculado a pelo menos um pedido para ganhar pontos de fidelidade
-
Itens do menu são marcados como ‘Inativos’ se estiverem esgotados ou encerrados
📝 Casos de Uso (Por que este ERD é Importante)
| Caso de Uso | Benefício |
|---|---|
| Design do Sistema POS | Permite o rastreamento em tempo real de pedidos, pagamentos e geração de comprovantes |
| Alertas de Estoque | Quando um item do menu é pedido com frequência, monitore os níveis de estoque |
| Programas de Fidelidade | Rastreie a acumulação de pontos e ofereça descontos personalizados |
| Análise de Loja | Identifique os itens mais vendidos, horários de pico e promoções populares |
| Gestão de Funcionários | Atribua funções, acompanhe os turnos e gerencie o desempenho |
📂 Formatos de Saída
Você pode copiar e colar qualquer um dos seguintes em sua documentação, apresentação ou ferramentas de design de banco de dados.
✅ 1. ERD Baseado em Texto (para documentação)
Entidades:
- Cliente
- CustomerID (PK)
- Nome
- Telefone
- E-mail
- Pontos de Fidelidade
- Nível de Participação
- Loja
- StoreID (PK)
- Nome
- Localização
- ManagerID (FK → Funcionário)
- Horário de Funcionamento
- Vendas Mensais
- Funcionário
- EmployeeID (PK)
- Nome
- Cargo (Caixa, Cozinheiro, Gerente)
- StoreID (FK)
- Data de Contratação
- Item do Menu
- MenuItemID (PK)
- Nome
- Descrição
- Preço
- Categoria
- Ativo
- Pedido
- OrderID (PK)
- Data do Pedido
- Status (Pendente, Em Preparação, Pronto, Concluído, Cancelado)
- CustomerID (FK)
- StoreID (FK)
- Valor Total
- Item do Pedido
- OrderItemID (PK)
- OrderID (FK)
- MenuItemID (FK)
- Quantidade
- Total da Linha
- Pagamento
- PaymentID (PK)
- Valor
- Método (Dinheiro, Cartão de Crédito, MobilePay)
- OrderID (FK)
- Timestamp
- Promoção
- PromotionID (PK)
- Código
- Tipo de Desconto
- Valor do Desconto
- Data de Ativação
- Data de Expiração
- Aplica-se a
Relacionamentos:
- Cliente "1" -- "0..*" Pedido
- Pedido "1" -- "0..*" Item do Pedido
- Pedido "1" -- "1" Pagamento
- Pedido "1" -- "1" Loja
- Loja "1" -- "0..*" Funcionário
- Item do Menu "1" -- "0..*" Item do Pedido
- Promoção "0..*" -- "1" Pedido (condicional sobre status ativo)
✅ 2. Versão Mermaid.js (para Markdown, Notion, Obsidian)
erDiagram
CLIENTE ||--o{ PEDIDO : "coloca"
LOJA ||--o{ PEDIDO : "atende"
LOJA ||--o{ FUNCIONÁRIO : "contrata"
LOJA ||--o{ ITEM_DO_MENU : "vende"
PEDIDO ||--o{ ITEM_DO_PEDIDO : "contém"
PEDIDO ||--o{ PAGAMENTO : "possui"
ITEM_DO_MENU ||--o{ ITEM_DO_PEDIDO : "aparece em"
PROMOÇÃO ||--o{ PEDIDO : "se aplica a"
CLIENTE {
int CustomerID PK
string Nome
string Telefone
string E-mail
int PontosDeFidelidade
string NívelDeParticipação
}
LOJA {
int StoreID PK
string Nome
string Localização
int ManagerID FK
string HorárioDeFuncionamento
decimal VendasMensais
}
FUNCIONÁRIO {
int EmployeeID PK
string Nome
string Cargo
int StoreID FK
date DataDeContratação
}
ITEM_DO_MENU {
int MenuItemID PK
string Nome
string Descrição
decimal Preço
string Categoria
boolean Ativo
}
PEDIDO {
int OrderID PK
datetime DataDoPedido
string Status
int CustomerID FK
int StoreID FK
decimal ValorTotal
}
ITEM_DO_PEDIDO {
int OrderItemID PK
int OrderID FK
int MenuItemID FK
int Quantidade
decimal TotalDaLinha
}
PAGAMENTO {
int PaymentID PK
decimal Valor
string Método
int OrderID FK
datetime Timestamp
}
PROMOÇÃO {
int PromotionID PK
string Código
string TipoDeDesconto
decimal ValorDoDesconto
datetime DataDeAtivação
datetime DataDeExpiração
string AplicaSeA
}

✅ 3. Versão do PlantUML
' Diagrama ERD do Sistema de Pedidos do McDonald's (PlantUML)
pacote "Operações do McDonald's" {
entidade "Cliente" {
- CustomerID (PK)
- Nome
- Telefone
- E-mail
- Pontos de Fidelidade
- Nível de Membro
}
entidade "Loja" {
- StoreID (PK)
- Nome
- Localização
- ManagerID (FK → Funcionário)
- Horário de Funcionamento
- Vendas Mensais
}
entidade "Funcionário" {
- EmployeeID (PK)
- Nome
- Cargo (Caixa, Cozinheiro, Gerente)
- StoreID (FK → Loja)
- Data de Contratação
}
entidade "Item do Menu" {
- MenuItemID (PK)
- Nome
- Descrição
- Preço
- Categoria (Hambúrguer, Bebida, Acompanhamento)
- Ativo
}
entidade "Pedido" {
- OrderID (PK)
- Hora do Pedido
- Status (Pendente, Preparando, Pronto, Concluído)
- CustomerID (FK → Cliente)
- StoreID (FK → Loja)
- Valor Total
}
entidade "Item do Pedido" {
- OrderItemID (PK)
- OrderID (FK → Pedido)
- MenuItemID (FK → Item do Menu)
- Quantidade
- Total da Linha
}
entidade "Pagamento" {
- PaymentID (PK)
- Valor
- Método (Dinheiro, Cartão de Crédito)
- OrderID (FK → Pedido)
- Timestamp
}
entidade "Promoção" {
- PromotionID (PK)
- Código (ex: WELCOME10)
- Tipo de Desconto (Porcentagem, Valor Fixo)
- Valor do Desconto
- Data de Vigência
- Data de Expiração
- Aplica-se a
}
Cliente "1" -- "0..*" Pedido : "realiza"
Pedido "1" -- "0..*" Item do Pedido : "contém"
Pedido "1" -- "1" Pagamento : "possui"
Pedido "1" -- "1" Loja : "é feito em"
Loja "1" -- "0..*" Funcionário : "contrata"
Item do Menu "1" -- "0..*" Item do Pedido : "aparece em"
Promoção "0..*" -- "1" Pedido : "se aplica a"
}
🔍 Extensões Futuras (Opcional)
Se você quiser expandir este ERD, considere adicionar:
-
Estoque → Monitora níveis de estoque, pontos de reposição e informações do fornecedor
-
Horário de Turnos → Turnos diários, horários de pausa e atribuições de turno
-
Fornecedor → Quem fornece os ingredientes (ex: “Fornecedor de Queijo”)
-
Cardápios Sazonais → Promoções especiais (ex: “Cardápio de Churrasco de Verão”)
-
Geolocalização → Para rastreamento de entrega ou retirada
🚀 Pensamentos Finais
Este ERD é realista, escalável e alinhado às operações do McDonald’s — ele reflete fluxos reais de sistemas POS, papéis de funcionários e comportamento do cliente.
✅ Agora você tem um ERD completo, pronto para uso para um sistema do McDonald’s — seja para um projeto escolar, análise de negócios ou projeto técnico.
- Ferramenta Visual Paradigm ERD – Crie Diagramas Entidade-Relacionamento Online: Este é um ferramenta poderosa, baseada na web que permite aos usuários projetar e visualizar esquemas de banco de dados com facilidade, usando recursos intuitivos de arrastar e soltar.
- Design de Banco de Dados com Ferramentas ERD – Guia do Visual Paradigm: Este recurso fornece um guia abrangente sobre o uso de ferramentas ERD para projetar bancos de dados robustos e escaláveis com melhores práticas em modelagem de dados e design de esquema.
- Ferramenta ERD Gratuita – Crie Bancos de Dados Online com o Visual Paradigm: Os usuários podem acessar uma ferramenta ERD gratuita online para criar diagramas profissionais de entidade-relacionamentosem instalação ou assinatura.
- Como desenhar entidades no ERD do Visual Paradigm: Este é um guia passo a passo voltado paracriação e personalização de entidadesno ferramenta ERD para modelagem de banco de dados precisa.
- Como modelar um banco de dados relacional com ERD – Tutorial do Visual Paradigm: Este tutorial prático mostra como usar ERDs para modelarbancos de dados relacionais de forma eficazdesde o conceito inicial até a implementação completa.
- Gerando banco de dados a partir do ERD no Visual Paradigm: Este artigo fornece um guia detalhado sobregerar automaticamente um esquema de banco de dadosdiretamente a partir de um ERD usando capacidades de engenharia reversa.
- Gerar Diagrama de Classes a partir do ERD – Tutorial do Visual Paradigm: Este recurso ensina aos usuários comoconverter um ERD em um diagrama de classespara apoiar fluxos de trabalho de design e desenvolvimento orientados a objetos.
- Simplificando a modelagem de entidade-relacionamento com o Visual Paradigm: Este guia explica como simplificar o processo de projetar e implementar modelos de entidade-relacionamento desde oconceito inicial até a implantação final do banco de dados.
- Engenharia Reversa de Banco de Dados para ERD no Visual Paradigm: Este tutorial ensina comorealizar engenharia reversa de um banco de dados existentepara transformá-lo em um Diagrama de Entidade-Relacionamento (ERD) visual usando uma interface intuitiva e ferramentas poderosas de modelagem.
- Editor ERD com Notação Chen – Modelagem Avançada de Entidade-Relacionamento: Este editor especializado suporta modelagem precisa de bancos de dados com suporte completo para entidades, atributos, relacionamentos e cardinalidade usandoNotação de Chen.











