How to model data planning
我想建立一个数据模型,它支持:
数据历史 - 存储数据的每一次变化。这不是问题:http://en.wikibooks.org/wiki/Java_Persistence/Advanced_Topics#History
数据规划 - 用户应该能够在未来某个时间准备有效的记录(例如,我知道客户名称从 5 月开始更改,因此我准备了 5 月 1 日有效的记录)。
我该如何做第 2 点?
我怎样才能一起做这些事情(点 1
如果您真的需要第 2 点 - 我会认真考虑这一点,因为根据我的经验,用户永远不会使用它,而且您将花费大量精力来支持没有人会使用的东西 - 无论如何,如果那么你真的需要它:
直接在表格中不做任何更改。所有的变化都会经历历史。
在幕后,您将定期运行批量更新程序。这会遍历历史记录,找到所有未应用的更改(在历史记录中设置状态标志以便能够快速找到它们)并应用它们,并检查日期以确保是时候应用更改了。
您将不得不处理合并。如果用户说:一个月后我的名字变了。然后进入并更改其名称,即日起生效。你有冲突。你如何解决它?您可以阻止任何立即更改,直到过去的更改完成(或者至少所有新更改的日期都在最后一个未应用的更改之后)。或者你可以现在改,一个月后再改。
我认为存储数据的更改是在后台处理的,在存储过程中查看数据仓库和缓慢变化的维度 http://en.wikipedia.org/wiki/Slowly_sharing_dimension 以处理新记录和这些新记录的前身记录将被称为"过期记录"。一旦您允许 SCD,就很容易找到您所追求的那些历史过期记录。