Database design 如何跟踪包含多对多映射表的db表的历史记录?
我在这里看到了一些关于跟踪数据库历史的问题,但似乎找不到一个与我们的情况相匹配的问题。我们需要跟踪几个表的历史记录,其中一些是多对多链接表。例如,假设我们有这个模式:Database design 如何跟踪包含多对多映射表的db表的历史记录?,database-design,versioning,Database Design,Versioning,我在这里看到了一些关于跟踪数据库历史的问题,但似乎找不到一个与我们的情况相匹配的问题。我们需要跟踪几个表的历史记录,其中一些是多对多链接表。例如,假设我们有这个模式: EntityA id name EntityB id name ABLink A_id B_id 因此,跟踪对EntityA或EntityB的更改似乎非常简单。我们可以保留一个日志表,该表具有相同的列以及日期戳和用户。但是链接呢?我们如何维护对给定数据版本有效的链接集?我们需要能够重新创建数据的历史记录,显示按时间顺序的变化
EntityA
id
name
EntityB
id
name
ABLink
A_id
B_id
因此,跟踪对EntityA或EntityB的更改似乎非常简单。我们可以保留一个日志表,该表具有相同的列以及日期戳和用户。但是链接呢?我们如何维护对给定数据版本有效的链接集?我们需要能够重新创建数据的历史记录,显示按时间顺序的变化。因此,如果添加或删除了链接,我们会指出。等等。创建一个ABLink日志表(如果需要,可以使用自己的主键),该表具有指向EntityA和EntityB日志表的外键链接。您可以向日志表中添加一个change_type列,以指示日志条目是否为insert/update/delete—当然,多对多日志表不应包含任何更新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