2

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

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

movies_has_actors查看下面的示例图片,保存表格历史的最佳方式是什么?我不能简单地对两个主要表(电影、演员)进行处理,因为我需要知道在建立关系时哪个 MOVIE revision_id 是活动的。如果我想跟踪哪个 USER 添加了关系(示例图片中没有 USER 表)怎么办?我不想将所有内容都保留在关系表本身中,因为这只会增长巨大并减慢查询速度......![alt text][1]

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

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

[1]:图片

4

2 回答 2

3

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

Channel9 视频 - https://channel9.msdn.com/posts/ashishjaiman/CDC-Change-Data-Capture-SQL-Server-2008/

于 2009-02-02T15:02:26.000 回答
0

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

于 2009-02-02T15:02:50.007 回答