如何跟踪包含多对多映射表的db表的历史记录?

时间:2010-04-06 21:36:20

标签: database-design versioning

我在这里看到了几个跟踪数据库历史记录的问题,但似乎找不到符合我们情况的问题。我们需要跟踪几个表的历史记录,其中一些是多对多链接表。例如,我们有这个架构:

EntityA
id
name

EntityB
id
name

ABLink
A_id
B_id

因此,跟踪对EntityA或EntityB的更改似乎非常简单。我们可以保留一个包含相同列的日志表以及日期戳和用户。但是链接怎么样?我们如何维护对给定版本的数据有效的链接集?我们需要能够重新创建显示时间顺序变化的数据历史记录。因此,如果添加或删除链接,我们会指出。等

1 个答案:

答案 0 :(得分:1)

创建一个ABLink日志表(如果需要,可以使用它自己的主键),它具有指向EntityA& A的外键链接。 EntityB日志表。您可以在日志表中添加change_type列,以指示日志条目是否为插入/更新/删除 - 当然,多对多日志表不应包含任何更新 change_type条目:

ABLink_Log       EntityA_Log     EntityB_Log
----------       -----------     -----------
id               id              id
A_Log_id         name            name
B_Log_id         change_type     change_type
change_type      date_stamp      date_stamp
date_stamp       user_id         user_id
user_id