Tengo un requisito para crear 'versiones' en una aplicación y me preguntaba cuál es la mejor manera de abordarlo.¿Qué patrón de diseño de versiones recomendaría?
que tienen este patrón general:
Modelo A tiene de muchos B
Cuando en la actualización de los atributos de una necesidad de ser versionados y (B) también necesitan ser versionado sus objetos asociados. Entonces la aplicación mostrará la versión actual de A, pero también debe ser posible ver las versiones anteriores de A y sus objetos asociados.
Me gustaría utilizar una tienda de documentos, sin embargo, esto es solo una parte de la aplicación y tener una tienda de documentos y una base de datos de relaciones introduciría más complejidad.
He considerado el uso de un esquema de estrella, pero antes de progresar me preguntaba si hay un patrón de diseño flotando para resolver este problema.
Esta pregunta se inclina hacia resolver el problema de almacenar las versiones de un objeto asociado en una base de datos relacional. Donde existe una necesidad inherente de poder consultar los datos de manera efectiva (es decir, la serialización del objeto no será suficiente).
Actualización: lo que estaba pensando/han implementado, pero quieren ver si el es "una mejor manera"
,---------. 1 * ,--------.
| Model A |----------| Model B|
`---------' `--------'
|PK | | a_id |
|b_version| |version |
|version | `--------'
`---------'
Donde quisiera estar duplicando el modelo A y todos los de B y asociado incrementando el atributo de versión. Luego, haga una selección para unirse a las B a través de b_version y b.version. Me pregunto si esto se puede hacer mejor.
Esta implementación no resolverá el problema de mantener las relaciones entre las versiones y sus objetos asociados – MatthewFord
deimos1986: por supuesto, lo hace, actualizado con un ejemplo de dbschema. puedes ver esto emergente en implementaciones wiki. Sugiero que busque en MediaWiki u otros sistemas wiki opensource y eche un vistazo a sus modelos de base de datos para obtener inspiración – Spoike
Oh, quiere decir que tiene toda una configuración de objetos que necesita ser versionada ... – Spoike