版本控制数据库

时间:2016-04-28 07:31:26

标签: mysql database hibernate

我们目前正在讨论我们的版本控制策略。 我们查看了Hibernate Envers,首先它看起来对我们有用。

但现在我们正在解决由复杂数据结构引起的问题。

我们有很多我们希望进行版本控制的表格相互引用。

Foo引用bar,多次引用user。所有这些表都应该成为一个历史表,如'Foo_log','bar_log'和user_log。 使用hibernate Envers可以正常工作,它会像原始表一样创建日志表,并创建一个修订表。日志表具有修订版ID和修订版类型。

我们现在的问题是,我们希望能够为过去创建新的条目,并且我们当前的策略不再适用。

示例1:

应该为过去创建

Foo,比如2015年1月1日。引用的bar和'用户'应该是2015年1月1日有效的条目。

示例2:

应该为过去创建

Foo,比如2015年1月1日。

还应为2015年1月1日创建新的bar,并在Foo中引用。

user应该是2015年1月1日有效的条目。

我们的想法是在2015年1月1日之前找到下一个版本ID,并按该版本ID获取引用的条目。这仅在我们能够在其间创建修订版ID时才有效。

修订信息:

| REV ID   |   DateTime  |
+----------+-------------+
| 1        |  01.01.2001 |
| 2        |  01.01.2002 |
| 3        |  01.01.2004 |
| 4        |  01.01.2011 |

现在我们必须为2009年1月1日创建一个修订版,以便我们必须为修订版ID设置步骤:

修订信息:

| REV ID   |   DateTime  |
+----------+-------------+
| 1        |  01.01.2001 |
| 11       |  01.01.2002 |
| 21       |  01.01.2004 |
| 31       |  01.01.2011 |

现在我们可以使用REV ID 22为01.01.2009创建一个条目。 这有一个问题,即我们可能用完了REV ID来创建过去的条目。

您有任何建议或其他想法吗?

0 个答案:

没有答案