database - 历史表树
问题描述
我在关系表中表示了一棵树。每个节点都是可以改变值的记录,我也可以插入、删除或分组一些节点。
制作所有这些更改的历史表的最佳方法是什么?
数据库设计模式可用吗?
解决方案
谢谢你的答案。关于您的安全问题,我没有任何限制,因此我可以将历史数据存储在数据库中。
假设历史数据可以在关系数据库中建模,在几种技术中,例如历史记录和事务日志的分离表,我发现:
基于行的审计——这种技术为每个关系表创建一个单独的表来维护历史数据。审计表包含操作表时间的每一列;维护数据生命周期的开始时间和结束时间。两个附加属性;操作类型和用户名。
基于列的审计——基于列的审计解决了基于行的审计的冗余。审计表的历史列中的数据只存储了变化的值,除了主键,比如ID,用来引用它的操作表。
日志表审计- 长期以来,日志表一直用于关系数据库中的事务管理。由于需要知道操作、数据和执行时间的事务的性质,日志表也可以用于审计目的。
对于我的问题,我猜测基于行的审计可能是一个好方法,因为也有可能跟踪操作,如果我添加一些属性,如 root - leave,我可以存储树的结构。
从设计 Db 的角度来看,您有什么建议或一些教程或文章以开始实施吗?
谢谢你。
推荐阅读
- antlr4 - Antlr4:当有转义字符加回车,换行时单引号规则失败
- flutter - 在设置状态之前何时检查已安装?
- linux - 将相同的文件添加到多个 PACKAGES
- reactjs - Reactjs 在 Bootstrap Modal View 弹出窗口中不显示记录
- python - Kivy 菜单按钮
- python - Keras CNN 错误:预期序列具有 3 个维度,但得到了形状为 (500、400) 的数组
- graphql-js - 嵌套查询/解析器时的 GraphQL.js 订阅响应错误
- r - 在 R 传单包中添加空白图例?
- python-3.x - 更改 Google Colab 上的 IO 发布数据速率限制
- javascript - React JS,总分