Modelo de datos TRIVASADB
Resumen del esquema del ERP MPRO/ERIX que corre Trivasa. El dump completo (todas las
tablas por dominio, con PK/FK/columnas) vive en docs/trivasadb_context.md en la raíz
del repo trivasa-bi-dev — esta página es la versión condensada, orientada a
orientarse rápido, no un reemplazo del dump.
Convenciones
- Filtro obligatorio de negocio: casi toda consulta debe incluir
Em_Cve_EmpresaoSc_Cve_Sucursalsegún el dominio. - Nombres de columna
Xx_Cve_Tablason FK a la tablaTabla(mismo nombre de columna en ambos lados). - Estado activo vía
Es_Cve_Estado— la convención general es'ACTI', pero no es universal:Consumo_Internousa'AC'/'CA'en vez de'ACTI'. Validar siempre conSELECT Es_Cve_Estado, COUNT(*) FROM <tabla> GROUP BY Es_Cve_Estadoantes de asumir el valor. - Columnas de auditoría presentes en casi todas las tablas, no son de negocio:
Oper_Alta/Fecha_Alta,Oper_Ult_Modif/Fecha_Ult_Modif,Oper_Baja/Fecha_Baja,Es_Cve_Estado. - Conteos de filas en el dump son un snapshot sin fecha registrada — no confiar en ellos como tamaño actual. Para tamaño vigente de lo ya replicado a Postgres, ver Warehouse Postgres.
- 1,609 tablas vacías — módulos no usados por Trivasa (clínica, hotel, Rappi, Shopify, etc.). Ignorar en cualquier análisis.
Tablas más grandes (top 10 de ~50 documentadas)
| Tabla | Filas (snapshot) |
|---|---|
Poliza_Detalle | 14.1M |
Poliza_Control | 6.1M |
Pre_Nomina | 4.6M |
Movimiento | 4.4M |
Precio_Minimo | 2.8M |
Poliza_Detalle_Comprobante | 2.8M |
Entrega_Documento | 2.7M |
opc_MOVIMIENTO | 2.4M |
Gasto_Registro_Control | 2.2M |
Nomina | 1.8M |
Dominios cubiertos en el dump completo
VENTAS (Venta, Remision, Pedido, Factura, Cotizacion), CXC (Cuenta_X_Cobrar, Pago_CXC,
Anticipo_Cxc, Recibo_Pago), CXP (Cuenta_X_Pagar, Pago_CXP, Gasto_Registro y su
cadena de control/documento), COMPRAS (Compra, Compra_Encabezado, Orden_Compra,
Comprobante_Digital), INVENTARIO (Movimiento, Traspaso, Transferencia, Consumo_Interno,
Existencia, Producto), LOGISTICA (Viaje, Orden_Entrega, Complemento_Carta_Porte y sus
4 tablas satélite del CFDI de carta porte), PRODUCCION (Orden_Produccion y materiales),
CONTABILIDAD (Poliza, Poliza_Control, Poliza_Detalle, Poliza_Detalle_Comprobante,
Banco_Movimiento), NOMINA (Nomina, Pre_Nomina, Control_Asistencia), CATALOGOS
(Cliente, Proveedor, Empleado, Producto), SERVICIOS (Orden_Servicio).
Detalle exacto de PK/FK/columnas por tabla: docs/trivasadb_context.md en el repo.
Cadena Gastos → Contabilidad (la más recorrida por los reportes de BI)
Gasto_Registro (folio) → Gasto_Registro_Documento (Grd_ID, moneda original, no
MXN) → Gasto_Registro_Control (Grc_ID — no identifica un documento, identifica
una sub-línea dentro del mismo documento+centro de costo, hay que colapsar antes de
usarlo) → Poliza_Control/Poliza/Poliza_Detalle (Pd_Referencia solo llega a nivel
folio, nunca a Grd_ID). Este hallazgo se repite en varios reportes — ver
Layout de Gastos — modelo de datos para el
recorrido más exhaustivo, incluida la confirmación de que
Poliza_Detalle_Comprobante liga UUIDs de complemento de pago, no el CFDI original
de registro, y por eso no sirve para atribución Cargo/Abono.
Gotchas de calidad de dato
Reorden: PK compuesta de 6 columnas (sc_cve_sucursal, al_cve_almacen, re_tipo, re_tipo_valor, re_talla, re_color) confirmada sin colisiones, pero algunos productos traen registros duplicados — una fila con talla/color vacíos y otra con'00'/'00'. Es dato sucio real del ERP, no error de carga; la normalización se maneja en dbt/consumo, no en el origen.Consumo_Interno:Es_Cve_Estadousa'AC'/'CA'(no'ACTI'); mismo patrón dirty de talla/color'00'/'00'que Reorden.Comprobante_Digital:Fecha_Ult_Modifconfirmado idéntico aFecha_Altaen muestreo — el registro se crea ya con el UUID timbrado y nunca se actualiza después. Válido como cursor de incrementalidad para esta tabla en particular; no asumir que aplica igual en otras dondeFecha_Ult_Modifsí cambia post-creación.
Joins frecuentes
-- Ventas con cliente y sucursal
SELECT ve.*, cl.Cl_Nombre, sc.Sc_Nombre
FROM Venta_Encabezado ve
JOIN Cliente cl ON ve.Cl_Cve_Cliente = cl.Cl_Cve_Cliente
JOIN Sucursal sc ON ve.Sc_Cve_Sucursal = sc.Sc_Cve_Sucursal
WHERE ve.Es_Cve_Estado = 'ACTI'
-- CXP con proveedor
SELECT cxp.*, pv.Pv_Nombre
FROM Cuenta_X_Pagar cxp
JOIN Proveedor pv ON cxp.Pv_Cve_Proveedor = pv.Pv_Cve_Proveedor
WHERE cxp.Es_Cve_Estado = 'ACTI'Véase también
- Conexiones a TRIVASADB — cuál de las 3 copias de esta base usar según el propósito.
- Warehouse Postgres — qué parte de este modelo ya está replicada y consultable sin tocar SQL Server en vivo.
- Layout de Gastos — modelo de datos — el recorrido más profundo de la cadena Gastos→Contabilidad.