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

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.
| 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çã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).
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
| 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 |
Você pode copiar e colar qualquer um dos seguintes em sua documentação, apresentação ou ferramentas de design de banco de dados.
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)
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
}

' 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"
}
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
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.