Modelo funcional y reglas de negocio
Control editorial y compilación en DB

Control editorial y compilación en base de datos

control_editorial

control_editorial registra cambios que afectan información destinada a las bases compiladas.

No es un log general del sistema.

Campos principales:

tabla
idRegistro
idEntidad1
idEntidad2
idUsuario
accion
estado
estadoPublicacion
jsonContenido
jsonContenidoAnterior

Acciones:

CREAR
EDITAR
ELIMINAR

Estados editoriales:

PENDIENTE
CONFIRMADO
CANCELADO

Estados de publicación:

PENDIENTE
PUBLICADO

Interacciones pendientes

Las modificaciones de interacciones utilizan un flujo de aprobación.

Crear

idRegistro = NULL
idEntidad1 / idEntidad2 = par normalizado
estado = PENDIENTE
estadoPublicacion = NULL
jsonContenido = propuesta completa

La interacción editorial definitiva todavía no se crea.

Editar

idRegistro = interacción existente
estado = PENDIENTE
jsonContenidoAnterior = estado actual
jsonContenido = propuesta

Eliminar

idRegistro = interacción existente
estado = PENDIENTE
jsonContenidoAnterior = contenido actual
jsonContenido = NULL

Cuando un administrador confirma la operación, se aplica sobre las tablas editoriales y el control pasa a:

estado = CONFIRMADO
estadoPublicacion = PENDIENTE

Otros cambios farmacológicos

Para tablas que no requieren aprobación previa, el ABM puede modificar directamente la base editorial y registrar simultáneamente:

estado = CONFIRMADO
estadoPublicacion = PENDIENTE

De esa forma el cambio queda disponible para la próxima publicación.

idRegistro polimórfico

control_editorial.idRegistro no posee FK.

Su tabla real depende del valor almacenado en tabla.

Ejemplo:

tabla = productos
idRegistro = 125

Por esta razón no es posible expresar esa relación mediante una única clave foránea SQL.

Cambios pendientes de publicación

El administrador puede obtener los cambios a publicar mediante:

SELECT *
FROM control_editorial
WHERE estado = 'CONFIRMADO'
  AND estadoPublicacion = 'PENDIENTE';

Compilación

La compilación no aplica incrementalmente cada registro de control_editorial sobre una base pública.

El estado editorial vigente es la fuente de verdad.

El compilador toma esa información y genera nuevamente la representación destinada al consumo.

control_editorial permite saber qué cambió y qué se encuentra pendiente de publicación.

Base compilada

La base compilada contiene datos desnormalizados para acelerar y simplificar las consultas.

Las interacciones de grupos se expanden a pares droga-droga y se aplica la prioridad:

DROGA-DROGA > DROGA-GRUPO > GRUPO-GRUPO

La base compilada no debe editarse manualmente.

metadata

Cada base compilada posee una tabla metadata.

Para el MVP se requiere al menos:

key = version
value = 20260831

El valor es textual para permitir versiones como:

20260831-2