我需要将数据的更改历史存储在数据库中。例如,有时某些用户修改某些数据的某些属性。预期的结果是我们可以获得一个数据的更改历史记录,例如
Tom changed title to 'Title one;'
James changed name to 'New name'
Steve added new_tag 'tag23'
根据这些变更历史,我们可以获得某些数据的所有版本。
实现此目标有什么好主意吗?不局限于传统的关系数据库。
最佳答案
这些通常称为审计表。我通常如何管理它是在数据库上使用触发器。对于来自源表的每个插入/更新,触发器将数据复制到另一个表中,该表称为相同的表名并附加了 _AUDIT(命名约定无关紧要,这正是我使用的)。 ORACLE 为您提供了一种叫做日志表的东西。使用 ORACLE 设计器(或手动)您可以实现相同的目的,开发人员通常会在日志/审计表的末尾放置一个 _JN。然而,这与源表上的触发器将数据复制到审计表中的工作方式相同。
编辑: 我还应该注意,您可以创建一个新的单独模式来仅管理您的审计表,或者您可以将它们与源表一起保存在您的模式中。我两者都做,这取决于情况。
关于database - 如何存储数据的变更历史?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9484714/