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