Datamodel 如何为数据规划建模

Datamodel 如何为数据规划建模,datamodel,Datamodel,我想建立一个数据模型,该模型支持: 数据历史记录-存储数据的每次更改。这不是问题: 数据规划-用户应该能够在将来的某个时候准备一份有效的记录(例如,我知道客户名称从5月份开始更改,所以我准备的记录有效期为5月1日) 我怎样才能做到第二点 如果你真的需要第2点,我该如何将这些事情结合起来(第1点和第2点)如果你真的需要第2点,我会认真考虑这一点,因为根据我的经验,用户永远不会使用它,而你将花费大量精力来支持没有人会使用的东西-无论如何,如果你真的需要它,那么: 直接在表中不做任何更改。所有的变化都

我想建立一个数据模型,该模型支持:

  • 数据历史记录-存储数据的每次更改。这不是问题:

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

  • 我怎样才能做到第二点


    如果你真的需要第2点,我该如何将这些事情结合起来(第1点和第2点)

    如果你真的需要第2点,我会认真考虑这一点,因为根据我的经验,用户永远不会使用它,而你将花费大量精力来支持没有人会使用的东西-无论如何,如果你真的需要它,那么:

    直接在表中不做任何更改。所有的变化都会经历历史

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


    你将不得不处理合并。如果用户说:一个月后我的名字变了怎么办。然后进入a,并从今天起更改其名称。你有冲突。你如何解决这个问题?您可以阻止任何即时更改,直到完成以前的更改(或者至少所有新更改的日期都晚于上次未应用的更改)。或者你可以现在更改,一个月后再更改。

    如果你真的需要第2点-我会认真考虑这一点,因为根据我的经验,用户永远不会使用它,而且你将花费大量精力来支持没有人会使用的东西-无论如何,如果你真的需要它,那么:

    直接在表中不做任何更改。所有的变化都会经历历史

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


    你将不得不处理合并。如果用户说:一个月后我的名字变了怎么办。然后进入a,并从今天起更改其名称。你有冲突。你如何解决这个问题?您可以阻止任何即时更改,直到完成以前的更改(或者至少所有新更改的日期都晚于上次未应用的更改)。或者您可以现在更改,一个月后再更改。

    我认为存储数据的更改是在后台处理的,请查看数据仓库并在存储过程中缓慢更改维度,以处理新记录和这些新记录的前身,这些新记录称为“过期记录”。一旦您允许使用SCD,就很容易找到您要查找的那些历史过期记录。

    我认为存储数据的更改是在后台处理的,请查看数据仓库并在存储过程中缓慢更改维度,以处理新记录和这些新记录的前身,这些记录称为“过期记录“。一旦您允许使用SCD,就很容易找到您要查找的历史过期记录。

    谢谢。我写过历史,找到历史数据不是问题。请参阅第一篇文章中的链接。问题是第二部分——未来的规划。当然,第二个问题是有效地利用历史操作数据。它在联接查询中的性能很差,如果您在间隔时间(5月份开具的发票)中查找记录,则可以在发票版本上获得更多信息。谢谢。我写过历史,找到历史数据不是问题。请参阅第一篇文章中的链接。问题是第二部分——未来的规划。当然,第二个问题是有效地利用历史操作数据。它在连接查询中的性能很差,如果您在间隔时间内查找记录(五月份开具的发票),您可以在发票版本上获得更多信息。非常好。我有类似的意见,但合同定义要求进行规划。我不做合并。当前记录的有效性将以新记录结束。我们只需要检查间隔是否重叠。有两种可能性:1。仅使用validFrom-不允许备件,易于维护,性能较差。2.使用validFrom,validTill-更好的性能,更好的操作,间隔不必是连续的。非常好。我有类似的意见,但合同定义要求进行规划。我不做合并。当前记录的有效性将以新记录结束。我们只需要检查间隔是否重叠。有两种可能性:1。仅使用validFrom-不允许备件,易于维护,性能较差。2.使用validFrom,validTill-更好的性能,更糟糕的操作,间隔不必是连续的。