2012-01-24 59 views
2

系统化记录对哪些表进行了哪些更改的方法最有效的方法是什么?例如,我的数据库模式中有大约10-12个表格,一个表格通过连接大约7-8个表格来显示记录。如何同步由同一记录或不同记录上的各种用户所做的更改。数据库历史记录

方法A:具有行激活器/去激活器标志。更新记录时设置停用标志,该标志将停用该行并插入一个激活标志开启的新记录。方法B:为每个将数据存储到时间戳记的表维护一个单独的数据库历史记录表。

假设:记录会经常更新。预计的记录总数不应超过1000行。

您可能想要提出的其他方法?

回答

1

我认为,答案就在问题“你多久需要看具体的最高纪录以及什么原因?

如果您偶尔需要这个研究谁做什么或审计puroposes时,使用审计表方法通过trigg填充在每次数据更改时。或者使用变更追踪(如果它适用于您)(坦率地说,我们觉得审计不够好)。更改跟踪也可成功使用,以查看自上次数据导入后记录是否发生更改。请注意,更改跟踪数据不是永久的,除非您将其实际复制到另一个表中。

如果您需要频繁显示整个历史记录,则将其全部保存在一个表中,并通过触发器维护一个有效标志。创建一个只有活动记录的开发人员才能查看最新数据的活动记录。如果您正在对先前没有存储历史记录的现有数据库执行此操作,则重命名该表并将该视图命名为同一个表原来没有任何中断。

我还会考虑使用单独的历史表,如果我需要报告历史数据而不是应用程序的其余部分。因此,我们需要了解销售代表与销售代表谈话的目标实际上是否为联络发生时的高价值目标,因为此计算是衡量销售代表绩效的一部分。显然我们需要历史,但实际上只有一个月左右。因此,每天降低性能以将其保留在同一个表中可能不是最佳解决方案。这可能有助于将报告耗时的工作从日常工作中解脱出来,并且通常可能有助于提高性能。

+0

谢谢你的HLGEM。我喜欢这种方式来创建一个只有活动行和重命名概念的视图。我可能会选择这个选项。 – Kunal