每次我需要设计一个新的数据库,我花了相当多的时间 思考如何设置数据库模式来保存审计日志 改变。
关于这个问题,已经有人提出了一些问题,但我不同意这一点 对于所有情况都有一种最佳方法:
我还偶然发现了这个 关于维护数据库更改日志的有趣文章,它试图列出每种方法的优缺点。文章写得很好,信息也很有趣,但这让我的决定更加困难。
我的问题是: 是否有我可以使用的参考资料,也许是一本书或者类似于决策树的东西,我可以根据它们来决定我应该走哪条路 输入变量,比如:
我所知道的方法是:
1. 添加用于创建和修改日期和用户的列
表例:
主要缺点: 我们丢失了修改的历史记录。提交后不能回滚。
2. 只插入表格
表格示例 :
主要缺点: 如何保持外键的最新? 需要巨大的空间
为每个表创建一个单独的历史记录表
历史表格例子:
主要缺点: 需要复制所有已审计的表格。如果模式发生变化,也需要迁移所有日志。
4. 为所有表创建统一的历史记录表
历史表格例子:
主要缺点: 如果需要,我能够轻松地重新创建记录(回滚)吗?New _ value 列需要是一个巨大的字符串,这样它才能支持所有不同的列类型。