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

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.
| 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) |
| 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).
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
| 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 |
Puede copiar y pegar cualquiera de los siguientes en su documentación, presentación o herramientas de diseño de bases de datos.
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)
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
}

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