Lo siento por el título largo aliento, pero el requisito/problema es bastante específico.Estrategia de control de versión genérica para seleccionar datos de tabla dentro de una base de datos muy normalizada
Con referencia a la siguiente estructura de muestra (pero muy simplificada) (en psuedo SQL), espero poder explicarlo un poco mejor.
TABLE StructureName {
Id GUID PK,
Name varchar(50) NOT NULL
}
TABLE Structure {
Id GUID PK,
ParentId GUID, -- FK to Structure
NameId GUID NOT NULL -- FK to StructureName
}
TABLE Something {
Id GUID PK,
RootStructureId GUID NOT NULL -- FK to Structure
}
Como se puede ver, la estructura es una estructura simple árbol (no está preocupado acerca de la adquisición de los niños para el problema). StructureName es una simplificación de un sistema de traducción. Finalmente, 'Algo' es simplemente algo que hace referencia a la estructura raíz del árbol.
Esta es solo una de las muchas tablas que se deben versionar, pero esta es un buen ejemplo para la mayoría de los casos.
Existe un requisito para la versión de cualquier cambio en el nombre y/o el 'diseño' del árbol de la tabla de Estructura. Las versiones anteriores siempre deben estar disponibles.
Parece que hay algunas posibilidades para abordar este problema, como copiar toda la estructura, pero la mayoría de los enfoques hace que uno 'pierda' la integridad referencial. Por ejemplo, si uno siguió este enfoque, uno tendría que hacer un duplicado del registro 'Something', dado que la estructura raíz será un nuevo registro y tendrá una nueva ID.
Otras vías de posibles soluciones están investigando cómo Wiki maneja esto o van mucho más allá y cómo funcionan los sistemas de control de versiones adecuados.
Actualmente, me siento un poco despistado de cómo proceder en esto de una manera genérica.
Cualquier idea será muy apreciada.
Gracias
leppie
+1, una visión general muy buena de algunos enfoques básicos. ¡Muy apreciado! – stakx
Thx para la edición! Mucho más bonito. –