这里说:
http://www.ibm.com/developerworks/web/library/wa-dbdsgn2.html
数据库中的每个表都应该有一个历史表,镜像整个表 主表的历史。如果 主表中的条目是 更新,旧的内容 记录首先复制到历史记录中 更新之前的表。在 同样的方式,删除记录 主表被复制到 删除前的历史表 来自初级。历史 表总是有名称 相应的主要,但有 _Hist附加。
在临时数据库中,请参阅此处temporal database modeling and normalisation,据我所知,没有单独的表格。
那我什么时候应该创建另一张桌子呢?
答案 0 :(得分:8)
罗伯特理论上说的是什么 - 没有什么可补充的。
实际,时态表与主+ hist表,还有其他暗示。
对于维护量很大的数据(例如,更新/删除数量大大超过插入数据),具有历史记录(有时也称为“审计” - 因为它是强制执行DB数据审计跟踪的主要机制)表允许保留主数据与将审计信息保留在主表本身内相比,表格相当小。这对主表上的选择和插入都有重要的性能影响,特别是考虑到下面讨论的索引优化。
最重要的是,hist / audit表上的索引不需要与主表100%相同,这意味着您可以省略从hist数据库查询审计数据所不需要的索引(从而加快插入到审计表中)反之亦然,优化您拥有的特定审计查询的索引(包括通过聚集索引按时间戳排序表),而不会使主表与那些减慢数据更改的索引(以及在更新时聚集的情况下) ,与主表的聚集索引发生冲突,因此通常不能按时间顺序聚集它。)
答案 1 :(得分:6)
历史记录表提供用户对主数据库记录所做的(通常是非时间的)更改的历史记录。这段历史本质上是档案(即偶尔出于历史目的而访问)。时间信息(在进行更改时)本质上是次要的。
临时数据库专门用于执行时间查询。时间信息本质上是主要信息,并保持在线以便立即检索。除非还需要进行归档,否则不会创建第二个表。
答案 2 :(得分:1)
该developerworks文章中谈到的历史表是一个包含数据库历史的表(即我们对现实的信念的历史)。
你在另一个话题中提到的历史记录保留了我们(当前!)关于现实历史的信念。
注意区别。两者同意只是我们过去对现实的看法确实是正确的。这并非总是100%。
如果你使用前者作为后者,那么你在某种意义上假设这种并发程度确实是100%,即你所有过去关于现实的所有信念总是和定义一致,即你正在假设你不可能对现实有任何错误的信念。
包含其他表历史记录的表可以满足审计目的。保存现实历史的表格可以满足任何对该历史信息感兴趣的用户的目的。