Objetivo
Normalizar un sistema de producción industrial avanzado: BOM con versiones, Rutas (routing), MPS/MRP, centros de trabajo, control de calidad, trazabilidad por lote, scrap, movimientos y costos.
Qué verás
- Ejemplo de tabla caos (sin normalizar)
- Transformación 1FN → 2FN → 3FN
- Modelo final con tablas maestras y transaccionales
- Consultas SQL y KPIs típicos
- Procesos MPS → MRP → OP → ejecución → cierre
Tabla original (sin normalizar)
Export típico desde hojas de cálculo con campos que contienen listas y mezclan maestros con transacciones.
| OP | Producto | CantPlan | CantReal | BOM_Items | Cantidades | Lotes | CentroTrabajo | Operaciones | Tiempos | Operarios | Calidad | Scrap | CostoHora | FechaIni | FechaFin | Estado |
| OP-20241101 | PROD-A | 100 | 95 | MP1,MP2,ENS1 | 50kg,20kg,1u | L001,L008,L010 | CT-MEC | Corte,Armado,Test | 2h,3h,1.5h | Juan,Pablo | Aprobado | 5 | 1500,2000 | 2024-11-03 | 2024-11-05 | Finalizado |
| OP-20241102 | PROD-A | 200 | 198 | MP1,MP2,ENS1 | 90kg,40kg,2u | L005,L002,L009 | CT-MEC | Corte,Armado,Test | 4h,6h,2h | Pedro,Marcos | Aprobado | 2 | 1500,2000 | 2024-11-10 | 2024-11-13 | Finalizado |
| OP-20241103 | ENS1 | 80 | 80 | MP3,MP4 | 40kg,12kg | L103,L109 | CT-ENS | Ensamble | 4h | Luis | Aprobado | 0 | 1700 | 2024-11-15 | 2024-11-15 | Finalizado |
Problemas detectados
- Listas embebidas (BOM, operaciones, lotes)
- Operaciones, tiempos y operarios mezclados
- No hay versión de BOM ni trazabilidad por lote
- Costos y resultados de calidad embebidos
1FN — Datos atómicos
Se descomponen las listas en filas atómicas: una fila por OP × componente × operación × lote.
| OP | Producto | BOM_Item | CantItem | Lote | Operacion | CentroTrabajo | TiempoReal | Operario | Calidad | Scrap |
| OP-20241101 | PROD-A | MP1 | 50kg | L001 | Corte | CT-MEC | 2h | Juan | OK | 0 |
| OP-20241101 | PROD-A | MP2 | 20kg | L008 | Armado | CT-MEC | 3h | Juan | OK | 2 |
| OP-20241101 | PROD-A | ENS1 | 1u | L010 | Test | CT-MEC | 1.5h | Pablo | OK | 3 |
Observaciones
- Se puede calcular consumo total por materia prima fácilmente.
- Permite auditar lote por lote y operación por operación.
2FN — Separación de entidades
Se crean tablas maestras y transaccionales separadas.
Maestros
- Productos (ProductID, Nombre, Tipo: Final/Ensamble/MP)
- BOM (BOMID, ProductID, Version, VigenteDesde, VigenteHasta)
- BOM_Detalle (BOMItemID, BOMID, ComponenteID, Cantidad)
- CentrosTrabajo (CentroID, Nombre, CostoHora)
- Rutas (RouteID, ProductID, Version)
- Rutas_Operaciones (OperacionID, RouteID, CentroID, NombreOperacion, TiempoStd)
Transaccionales
- OrdenProduccion (OPID, ProductID, CantPlan, FechaInicioProg, FechaFinProg, Estado, BOMID, RouteID)
- OP_Operaciones (OperacionRealID, OPID, OperacionID, TiempoReal, OperarioID, EstadoOp)
- OP_BOM_Consumo (ConsumoID, OPID, ComponenteID, CantReal, Lote, Fecha)
- MovimientosInventario (MovID, TipoMov, ComponenteID, Cantidad, Lote, OPID, Fecha)
3FN — Eliminación de dependencias transitivas
Tablas añadidas para 3FN
- Operarios (OperarioID, Nombre, Categoria, CostoHora)
- Lotes (LoteID, ComponenteID, FechaIngreso, Proveedor, FechaVencimiento)
- Scrap (ScrapID, OPID, OperacionRealID, Cantidad, Tipo, Motivo)
- Calidad (QCID, OPID, OperacionRealID, Resultado, Observaciones)
- CostosEstandar (ProductoID, CostoMP, CostoMOD, CostoIndirecto, CostoTotal)
- MRP (MRPID, ProductoID, Fecha, Demanda, StockDisponible, PedidoSugerido)
- MPS (MPSID, ProductoID, FechaPlan, Cantidad)
- Trazabilidad (TraceID, LoteID, OPID, ProductoFinalID, CantidadFinal)
Beneficios
- Separación clara entre reglas (BOM, rutas) y ejecución (OP, consumos).
- Trazabilidad completa por lote y OP.
- Facilita cálculos de costo real vs estándar y auditoría.
Modelo final (resumen)
Tablas principales
- Products, Components, BOM, BOM_Detail
- Routes, Route_Operations
- WorkCenters (CentrosTrabajo)
- Operations (OP_Operaciones), OP_BOM_Consumo
- StockMovements, Lots
- Quality, Scrap, Traceability
- MRP, MPS
- Costing (CostosEstandar) y ActualCosts por OP
Relaciones clave
- Product 1:N BOM (multiple versions)
- BOM 1:N BOM_Detail
- Route 1:N Route_Operations
- OP 1:N OP_Operaciones and OP_BOM_Consumo
- Movimientos de inventario ligados a OP o a ajustes
SQL — consultas útiles
Consumo real por OP
SELECT c.OPID, p.Nombre AS Componente, SUM(c.CantReal) AS TotalConsumido
FROM OP_BOM_Consumo c
JOIN Products p ON c.ComponenteID = p.ProductID
WHERE c.OPID = 'OP-20241101'
GROUP BY c.OPID, p.Nombre;
Cálculo costo real de OP (MP + MOD)
SELECT op.OPID,
SUM(cons.CantReal * ce.CostoMP) AS CostoMP,
SUM(ops.TiempoReal * o.CostoHora) AS CostoMOD
FROM OrdenProduccion op
JOIN OP_BOM_Consumo cons ON cons.OPID = op.OPID
JOIN CostosEstandar ce ON ce.ProductoID = cons.ComponenteID
JOIN OP_Operaciones ops ON ops.OPID = op.OPID
JOIN Operarios o ON o.OperarioID = ops.OperarioID
WHERE op.OPID = 'OP-20241101'
GROUP BY op.OPID;
Tiempos reales vs estándar por operación
SELECT op.OPID, ro.NombreOperacion, ro.TiempoStd, oop.TiempoReal, (oop.TiempoReal - ro.TiempoStd) AS Desvio
FROM OP_Operaciones oop
JOIN Rutas_Operaciones ro ON oop.OperacionID = ro.OperacionID
WHERE oop.OPID = 'OP-20241101';
Scrap total por OP
SELECT OPID, SUM(Cantidad) AS ScrapTotal FROM Scrap WHERE OPID = 'OP-20241101' GROUP BY OPID;
KPIs importantes en Manufactura
KPI's y cómo calcularlos
- OEE: Disponibilidad × Rendimiento × Calidad.
- Scrap%: Scrap / ProducciónBruta.
- Cumplimiento de entrega: OP entregadas a tiempo / total programadas.
- Variación de costo: (CostoReal - CostoEstandar) / CostoEstandar.
- Lead time OP: FechaFinReal - FechaInicioReal.
Procesos reales modelados
Flujo MPS → MRP → OP → Ejecución → Cierre
- MPS: plan maestro de demanda por horizonte.
- MRP: calcula necesidades netas, lead times y sugiere órdenes.
- Generación de OP: seleccionar BOM version y ruta.
- Ejecución: registrar consumos por lote, tiempos reales, scrap, resultados QC.
- Cierre: registrar costos reales, emitir movimientos de inventario, registrar trazabilidad.
Buenas prácticas
- Versionar BOM y rutas para auditoría y cambios.
- Registrar lotes en cada consumo para trazabilidad completa.
- Usar transacciones en DB para consumos/ajustes.
- Implementar alarmas en QC para detener OP si hay fallas críticas.