首页 > 解决方案 > 历史表树

问题描述

我在关系表中表示了一棵树。每个节点都是可以改变值的记录,我也可以插入、删除或分组一些节点。

制作所有这些更改的历史表的最佳方法是什么?

数据库设计模式可用吗?

标签: databasedatabase-design

解决方案


谢谢你的答案。关于您的安全问题,我没有任何限制,因此我可以将历史数据存储在数据库中。

假设历史数据可以在关系数据库中建模,在几种技术中,例如历史记录和事务日志的分离表,我发现:

  • 基于行的审计——这种技术为每个关系表创建一个单独的表来维护历史数据。审计表包含操作表时间的每一列;维护数据生命周期的开始时间和结束时间。两个附加属性;操作类型和用户名。

  • 基于列的审计——基于列的审计解决了基于行的审计的冗余。审计表的历史列中的数据只存储了变化的值,除了主键,比如ID,用来引用它的操作表。

  • 日志表审计- 长期以来,日志表一直用于关系数据库中的事务管理。由于需要知道操作、数据和执行时间的事务的性质,日志表也可以用于审计目的。

对于我的问题,我猜测基于行的审计可能是一个好方法,因为也有可能跟踪操作,如果我添加一些属性,如 root - leave,我可以存储树的结构。

从设计 Db 的角度来看,您有什么建议或一些教程或文章以开始实施吗?

谢谢你。


推荐阅读