我有一张持有人(详细)的表格。其中两个字段,我们有要求存储和显示更改的历史记录。他们是'IsActive BIT'和'IsIdle BIT'。一张桌子持有两个字段的变化历史
目前,它们是Person表中的字段。
要求是能够显示人员何时处于活动状态以及何时处于闲置状态。以及谁设置了这些值。 (所有故事都有LastUpdatedBy和CreatedBy列)。
我的计划是使用PersonHistory表,PersonID FK到Person,以及IsActive和IsIdle列以及CreatedBy和LastUpdatedBy列。和'EffectiveFrom'DATETIME。
所以当我们创建一个人时,我们用IsActive和IsIdle值,用户和PersonID向历史记录添加一行。
要显示一个人,我们必须对人员记录进行(不整洁?)选择,然后加入历史记录表中该人员的最后一条记录。 INNER JOIN .. SELECT TOP 1 * FROM History,using ROW_NUMBER?可能会很慢。
编辑'IsActive'时,我们需要添加一个新的行,其中包含PersonID和新的IsActive(和/或IsIdle)值。实际上,我们需要存储两者。只有当这些值改变时才会写入一行。这意味着我们需要进行预保存检查以查看值是否更改。
这似乎是一个标准的方式来处理这个要求 - 还是有更好的更常见的方法?
您可以将值保存在Person表中以及History表中,并且不需要连接。您还可能想查看[更改数据捕获](https://msdn.microsoft.com/en-nz/library/cc645937.aspx)。 – Blorgbeard