超类型/子类型的历史表设计

The*_*uad 3 sql-server-2008 normalization database-design

我正在设计一个跟踪 IT 硬件的资产管理数据库。我决定使用超类型/子类型设计。我现在想跟踪设备更改的历史记录。我想使用单独的历史表,但我无法决定如何跟踪对子类型表所做更改的历史记录。

如果我为每个子类型表使用单独的历史表,我可以通过将它们与超类型历史表连接来重建记录,除非子类型历史表独立于超类型历史表而改变。独立地,我的意思是对超类型表中的数据进行了x 次更新,创建了x 次超类型历史记录,对子类型表进行了y 次更新,创建了y次子类型历史记录。如果在同一天进行更改,我将如何重建记录?

这是对超类型/子类型的良好使用,还是我应该对表进行非规范化?否则,有人可以建议任何方法来解决此类设计的历史问题吗?

使用 MS SQL Server 2008。

这是一个非常简化的 ERD:

ERD

Mik*_*ll' 5

听起来您想要的是事务时间时态表的实现。这比听起来要难。

有效时间,捕捉变化的现实的历史,交易时间,捕捉变化表的状态序列,是正交的,因此可以单独使用或协同应用。支持两者的表被称为“双时态表”。

参考:在 SQL 中开发面向时间的数据库应用程序,Richard Snodgrass,第 20 页。

这本书是我几年前研究这些东西时唯一能拿到的书。现在您可以从作者的网页下载本书的 PDF 和随附的代码

较新的材料可能更有用。他的网页上有链接。