Read this post in: de_DEen_USfr_FRhi_INid_IDjapl_PLpt_PTru_RUvizh_CNzh_TW

🍟 Diagrama Entidad-Relación Completo: Sistema Integrado de Operaciones de McDonald’s

(Enfocado en el procesamiento de pedidos, la experiencia del cliente y las operaciones de la tienda)


🔍 Contexto Empresarial

Este diagrama Entidad-Relación modela las operaciones principales en una tienda de McDonald’s, enfocándose en:

  • Flujo de pedidos desde el cliente hasta el pago

  • Roles del personal y gestión de la tienda

  • Disponibilidad y precios del menú

  • Fidelización del cliente y participación repetida

  • Seguimiento básico de inventario (para artículos alimenticios)

Nota: Este no es una base de datos empresarial completa (por ejemplo, cadena de suministro o RRHH), sino una base realista y escalable para un sistema POS de comida rápida.


📚 Entidades y Atributos

Entidad Atributos
Cliente CustomerID (PK), Nombre, Teléfono, Correo electrónico, Puntos de Fidelidad, Nivel de Afiliación (por ejemplo, Bronce, Plata)
Tienda StoreID (PK), Nombre, Ubicación (Dirección), ManagerID (FK → Empleado), Horario de Apertura, Ventas Totales (mensuales)
Empleado EmployeeID (PK), Nombre, Rol (Cajero, Cocinero, Gerente, Supervisor), StoreID (FK), Fecha de Contratación, Horario de Turno
Elemento del Menú MenuItemID (PK), Nombre, Descripción, Precio, Categoría (Hamburguesa, Bebida, Acompañamiento, Postre), Activo, URL de Imagen
Pedido OrderID (PK), Hora del Pedido, Estado (Pendiente → Preparando → Listo → Completado → Cancelado), Monto Total, StoreID (FK), CustomerID (FK)
Elemento del Pedido OrderItemID (PK), OrderID (FK), MenuItemID (FK), Cantidad, Total de Línea (calculado automáticamente)
Pago PaymentID (PK), Monto, Método (Efectivo, Tarjeta de Crédito, Pago Móvil), ID de Transacción, OrderID (FK), Marca de Tiempo
Promoción PromotionID (PK), Código (por ejemplo, “WELCOME10”), TipoDeDescuento (Porcentaje, Fijo), ValorDelDescuento, FechaDeActivación, FechaDeVencimiento, AplicaA (por ejemplo, Almuerzo, TodosLosArtículos)

🔗 Relaciones (con cardinalidades)

Relación Cardinalidad Descripción
Cliente → Pedido 1 → 0.. Un cliente realiza múltiples pedidos con el tiempo.
Pedido → ItemDePedido 1 → 0.. Cada pedido contiene cero o más artículos del menú.
Pedido → Pago 1 → 1 Cada pedido completado tiene exactamente un pago.
Pedido → Tienda 1 → 1 Cada pedido se realiza en una tienda específica.
Tienda → Empleado 1 → 0.. Una tienda emplea a múltiples empleados (cajeros, cocineros, gerentes).
Tienda → Pedido 1 → 0.. Una tienda recibe muchos pedidos.
Elemento del menú → Elemento del pedido 1 → 0.. Un elemento del menú puede aparecer en múltiples pedidos.
Promoción → Pedido 0 → 1 Una promoción puede aplicarse a un pedido (por ejemplo, “Compra 1 Big Mac, obtén 1 gratis”).
Empleado → Tienda 1 → 1 Cada empleado trabaja en una tienda.

✅ Opcional: Agregar un Programa de Fidelidadentidad si se necesita una lógica de fidelidad más profunda (por ejemplo, canje de puntos, recompensas).


🔒 Restricciones y Reglas de Negocio

  • El precio debe ser > 0

  • El estado del pedido no puede ser ‘Completado’ si falta el pago

  • La cantidad en OrderItem ≥ 1

  • Las promociones solo pueden aplicarse si están activas y dentro del periodo de tiempo

  • El cliente debe estar vinculado a al menos un pedido para ganar puntos de fidelidad

  • Los artículos del menú se marcan como ‘Inactivo’ si están agotados o dejados de venderse


📝 Casos de uso (por qué este ERD es importante)

Caso de uso Beneficio
Diseño del sistema POS Permite el seguimiento en tiempo real de pedidos, pagos y generación de recibos
Alertas de inventario Cuando un artículo del menú se solicita con frecuencia, monitorear los niveles de stock
Programas de fidelidad Rastrear la acumulación de puntos, ofrecer descuentos personalizados
Análisis de tienda Identificar artículos más vendidos, horas pico y promociones populares
Gestión de empleados Asignar roles, rastrear turnos, gestionar el desempeño

📂 Formatos de salida

Puede copiar y pegar cualquiera de los siguientes en su documentación, presentación o herramientas de diseño de bases de datos.


✅ 1. ERD basado en texto (para documentación)

Entidades:

- Cliente
  - CustomerID (PK)
  - Nombre
  - Teléfono
  - Correo electrónico
  - Puntos de Fidelidad
  - Nivel de Afiliación

- Tienda
  - StoreID (PK)
  - Nombre
  - Ubicación
  - ManagerID (FK → Empleado)
  - Horario de Apertura
  - Ventas Mensuales

- Empleado
  - EmployeeID (PK)
  - Nombre
  - Rol (Cajero, Cocinero, Gerente)
  - StoreID (FK)
  - Fecha de Contratación

- Artículo del Menú
  - MenuItemID (PK)
  - Nombre
  - Descripción
  - Precio
  - Categoría
  - Está Activo

- Pedido
  - OrderID (PK)
  - Fecha y Hora del Pedido
  - Estado (Pendiente, Preparando, Listo, Completado, Cancelado)
  - CustomerID (FK)
  - StoreID (FK)
  - Monto Total

- Item del Pedido
  - OrderItemID (PK)
  - OrderID (FK)
  - MenuItemID (FK)
  - Cantidad
  - Total de Línea

- Pago
  - PaymentID (PK)
  - Monto
  - Método (Efectivo, Tarjeta de Crédito, MobilePay)
  - OrderID (FK)
  - Fecha y Hora

- Promoción
  - PromotionID (PK)
  - Código
  - Tipo de Descuento
  - Valor del Descuento
  - Fecha de Activación
  - Fecha de Vencimiento
  - Aplica a

Relaciones:
- Cliente "1" -- "0..*" Pedido
- Pedido "1" -- "0..*" Item del Pedido
- Pedido "1" -- "1" Pago
- Pedido "1" -- "1" Tienda
- Tienda "1" -- "0..*" Empleado
- Artículo del Menú "1" -- "0..*" Item del Pedido
- Promoción "0..*" -- "1" Pedido (condicional según estado activo)

✅ 2. Versión Mermaid.js (para Markdown, Notion, Obsidian)

erDiagram
    CLIENTE ||--o{ PEDIDO : "coloca"
    TIENDA ||--o{ PEDIDO : "sirve"
    TIENDA ||--o{ EMPLEADO : "contrata"
    TIENDA ||--o{ ARTICULO_DEL_MENÚ : "vende"
    PEDIDO ||--o{ ITEM_DEL_PEDIDO : "contiene"
    PEDIDO ||--o{ PAGO : "tiene"
    ARTICULO_DEL_MENÚ ||--o{ ITEM_DEL_PEDIDO : "aparece en"
    PROMOCIÓN ||--o{ PEDIDO : "se aplica a"

    CLIENTE {
        int CustomerID PK
        string Nombre
        string Teléfono
        string Correo electrónico
        int Puntos de Fidelidad
        string Nivel de Afiliación
    }

    TIENDA {
        int StoreID PK
        string Nombre
        string Ubicación
        int ManagerID FK
        string Horario de Apertura
        decimal Ventas Mensuales
    }

    EMPLEADO {
        int EmployeeID PK
        string Nombre
        string Rol
        int StoreID FK
        date Fecha de Contratación
    }

    ARTICULO_DEL_MENÚ {
        int MenuItemID PK
        string Nombre
        string Descripción
        decimal Precio
        string Categoría
        boolean Está Activo
    }

    PEDIDO {
        int OrderID PK
        datetime Fecha y Hora del Pedido
        string Estado
        int CustomerID FK
        int StoreID FK
        decimal Monto Total
    }

    ITEM_DEL_PEDIDO {
        int OrderItemID PK
        int OrderID FK
        int MenuItemID FK
        int Cantidad
        decimal Total de Línea
    }

    PAGO {
        int PaymentID PK
        decimal Monto
        string Método
        int OrderID FK
        datetime Fecha y Hora
    }

    PROMOCIÓN {
        int PromotionID PK
        string Código
        string Tipo de Descuento
        decimal Valor del Descuento
        datetime Fecha de Activación
        datetime Fecha de Vencimiento
        string Aplica a
    }


✅ 3. Versión de PlantUML 

' Diagrama Entidad-Relación del Sistema de Pedidos de McDonald's (PlantUML)

paquete "Operaciones de McDonald's" {
  entidad "Cliente" {
    - CustomerID (PK)
    - Nombre
    - Teléfono
    - Correo electrónico
    - Puntos de Fidelidad
    - Nivel de Afiliación
  }

  entidad "Tienda" {
    - StoreID (PK)
    - Nombre
    - Ubicación
    - ID del Gerente (FK → Empleado)
    - Horario de Apertura
    - Ventas Mensuales
  }

  entidad "Empleado" {
    - EmployeeID (PK)
    - Nombre
    - Rol (Cajero, Cocinero, Gerente)
    - StoreID (FK → Tienda)
    - Fecha de Contratación
  }

  entidad "Producto del Menú" {
    - MenuItemID (PK)
    - Nombre
    - Descripción
    - Precio
    - Categoría (Hamburguesa, Bebida, Acompañamiento)
    - Activo
  }

  entidad "Pedido" {
    - OrderID (PK)
    - Hora del Pedido
    - Estado (Pendiente, Preparando, Listo, Completado)
    - CustomerID (FK → Cliente)
    - StoreID (FK → Tienda)
    - Monto Total
  }

  entidad "Item del Pedido" {
    - OrderItemID (PK)
    - OrderID (FK → Pedido)
    - MenuItemID (FK → Producto del Menú)
    - Cantidad
    - Total de Línea
  }

  entidad "Pago" {
    - PaymentID (PK)
    - Monto
    - Método (Efectivo, Tarjeta de Crédito)
    - OrderID (FK → Pedido)
    - Marca de Tiempo
  }

  entidad "Promoción" {
    - PromotionID (PK)
    - Código (por ejemplo, WELCOME10)
    - Tipo de Descuento (Porcentaje, Fijo)
    - Valor del Descuento
    - Fecha de Vigencia
    - Fecha de Vencimiento
    - Aplica a
  }

  Cliente "1" -- "0..*" Pedido : "realiza"
  Pedido "1" -- "0..*" Item del Pedido : "contiene"
  Pedido "1" -- "1" Pago : "tiene"
  Pedido "1" -- "1" Tienda : "se realiza en"
  Tienda "1" -- "0..*" Empleado : "contrata"
  Producto del Menú "1" -- "0..*" Item del Pedido : "aparece en"
  Promoción "0..*" -- "1" Pedido : "se aplica a"
}

 


🔍 Extensiones Futuras (Opcional)

Si desea ampliar este diagrama ERD, considere agregar:

  • Inventario → Controla niveles de existencias, puntos de reorden y datos del proveedor

  • Horario de Turnos → Turnos diarios, tiempos de descanso, asignaciones de turno

  • Proveedor → Quién suministra los ingredientes (por ejemplo, “Proveedor de Queso”)

  • Menús Estacionales → Promociones especiales (por ejemplo, “Menú de Barbacoa de Verano”)

  • Geolocalización → Para el seguimiento de entregas o recogidas


🚀 Pensamientos Finales

Este diagrama ERD es realista, escalable y alineado con las operaciones de McDonald’s — refleja flujos de trabajo reales del sistema POS, roles de empleados y comportamiento del cliente.

✅ Ahora tiene un diagrama ERD completo y listo para usar para un sistema de McDonald’s — ya sea para un proyecto escolar, análisis empresarial o diseño técnico.

Sidebar Search
Loading

Signing-in 3 seconds...

Signing-up 3 seconds...