【问题标题】:Table revision/history?表修订/历史?
【发布时间】:2019-12-13 23:19:56
【问题描述】:

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

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

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

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

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

[1]:Image

【问题讨论】:

    标签: database rdbms


    【解决方案1】:

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

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

    【解决方案2】:

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

    【讨论】:

    • 抱歉,忘记添加我正在使用 mySQL 数据库的帖子。
    • 我的第一个建议是我所知道的最好的方法是使用审计跟踪表。每当您修改表时,都会在跟踪中插入一条记录。另一种方法是将审计跟踪保留在关联表中并具有修订 ID,但这样做成本高且难以管理。
    猜你喜欢
    • 1970-01-01
    • 2012-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-29
    • 1970-01-01
    • 2012-09-23
    相关资源
    最近更新 更多