表修订/历史记录?

时间:2009-02-02 14:59:17

标签: database

我试图找出在关系数据库中保存表的历史/修订的最佳方法。

我做过一些研究和阅读,并不确定追踪变化的最佳方法是什么。对于我的主表,我很确定我已经确定了一个修订表,以便跟踪(见图),但这是我不确定的关系表。也许只是一个包含更改的审计跟踪表?

查看下面的示例图片,保留“movies_has_actors”表历史记录的最佳方法是什么? 我不能像两个主要表格(电影,演员)一样,因为我需要知道哪个MOVIE revision_id在关系出现的时间点是活动的。如果我想跟踪哪个USER添加了关系(USER表不在样本图片中),该怎么办? 我不想把关系表中的所有东西都保留在关系表中,因为这只会增长并且减慢查询...![替代文字] [1]

总而言之,保持历史,关系表的最佳方式是什么?

的问候, modano

链接到图片:img115.imageshack.us/my.php?image=44623598nv1.jpg

[1]:Image

2 个答案:

答案 0 :(得分:3)

在SQL Server 2008中,MSDN上的一个名为CDC(更改数据捕获)CDC的新功能可以提供帮助。 CDC能够将表数据的更改记录到另一个表中而无需编写触发器或其他一些机制,更改数据捕获将记录插入,更新和删除等更改记录到SQL Server中的表中,从而使更改的详细信息可用于关联格式。

频道9视频 - http://channel9.msdn.com/posts/ashishjaiman/CDC-Change-Data-Capture-SQL-Server-2008/

答案 1 :(得分:0)

我认为审计表是一个很好的解决方案。如果您使用SQL Server 2008,请查看Change Data Capture。这是一种自动更改跟踪功能。