如何建模数据规划

时间:2011-08-03 20:41:39

标签: datamodel

我想构建一个支持以下内容的数据模型:

  1. 数据历史记录 - 存储每次数据更改。这不是问题:http://en.wikibooks.org/wiki/Java_Persistence/Advanced_Topics#History

  2. 数据规划 - 用户应该能够在将来的某个时间准备一份有效的记录(例如,我知道客户名称从5月开始变化,所以我准备了有效期为5月1日的记录)。

  3. 我该怎么做第2点?

    我如何一起做这些事情(第1点和第2点)

2 个答案:

答案 0 :(得分:3)

如果你真的需要第2点 - 我会非常认真地考虑这一点,因为根据我的经验,用户永远不会使用它,你会花费很多精力来支持任何人都不会使用的东西 - 无论如何,如果你真的需要它,然后:

直接在表格中不做任何更改。所有更改都会历史记录。

在幕后,您将定期运行批量更新程序。这会经历历史记录,查找所有未应用的更改(在历史记录中设置状态标记以便能够快速找到它们)并应用它们,并检查日期以确保是时候应用更改。

你将不得不处理合并。如果用户说:在一个月内我的名字会改变。然后进入并改变他们今天的名字。你有冲突。你是如何解决的?您可以阻止任何立即更改,直到过去的更改(或者至少所有新更改都有一个日期,在最后一个未应用的更改之后)。或者您现在可以更改它,并在一个月内再次更改它。

答案 1 :(得分:1)

我认为存储数据的更改是在后台处理的,查看数据仓库并在存储过程中缓慢更改维度http://en.wikipedia.org/wiki/Slowly_changing_dimension以处理新记录和这些新记录的前任,这些记录将被称为“已过期”记录”。一旦你允许使用SCD,就可以很容易地找到你所追踪的历史过期记录。