Read this post in: de_DEen_USes_ESfr_FRhi_INid_IDjapl_PLru_RUvizh_CNzh_TW

🍟 Diagrama Entidade-Relacionamento Completo: Sistema Integrado de Operações da McDonald’s

(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.

Sidebar Search
Loading

Signing-in 3 seconds...

Signing-up 3 seconds...