5
用于审计日志记录的数据库设计
每当我需要设计一个新的数据库时,我都会花很多时间思考如何设置数据库架构以保留更改的审核日志。 此处已经对此提出了一些问题,但是我不同意在所有情况下都存在一种最佳方法: 修订数据库设计 变更日志审核数据库表的最佳设计 有关捕获审计跟踪的数据库设计的想法 我还偶然发现了这篇有关维护数据库更改日志的有趣文章,该文章试图列出每种方法的利弊。它写的很好,并且有有趣的信息,但是这使我的决定更加困难。 我的问题是:是否有我可以使用的参考,也许是一本书或诸如决策树之类的东西,我可以参考这些参考来根据一些输入变量来决定应该走的路,例如: 数据库架构的成熟度 如何查询日志 需要重新创建记录的概率 更重要的是:写入或读取性能 所记录的值的性质(字符串,数字,斑点) 可用存储空间 我知道的方法是: 1.添加创建和修改日期及用户的列 表示例: ID 值_1 值_2 值_3 创建日期 修改日期 由...制作 modified_by 主要缺点:我们失去了修改的历史。提交后无法回滚。 2.仅插入表格 表示例: ID 值_1 值_2 值_3 从 至 已删除(布尔值) 用户 主要缺点:如何保持外键最新?需要巨大的空间 3.为每个表创建一个单独的历史记录表 历史记录表示例: ID 值_1 值_2 值_3 值_4 用户 已删除(布尔值) 时间戳记 主要缺点:需要复制所有审核表。如果架构更改,则也需要迁移所有日志。 4.为所有表创建一个合并的历史表 历史记录表示例: table_name …