我绝不是DB专家,但我确实有创建DB的经验。但不确定以下几点。
我希望系统中发生的一切都能被跟踪。我的客户正在处理大量的钱,如果犯了错误,他们需要被追踪。从DB和开发人员的角度来看,更容易的是: 1)
在7-10个表格中或
2)专用桌子
然后是一个包含操作的次要表。id action_type
优点到1:更容易确保你不会错过任何东西。缺点1:烦人的维护、报告等不干净。
赞成2:哦,太干净了,很容易报告。缺点2:更容易错过您想要记录的内容(虽然对于1来说可能是这样,但由于每个表中的字段都在每个表中,它们需要用于某些事情),所以这种情况不太可能发生。
是这样吗?我只需要做个决定?或者是我应该关注DB性能问题,还是缺少了其他一些问题?
发布于 2019-12-13 17:34:16
您的两种场景用途不同。当应用程序需要了解实体的历史时,前者是有用的,例如显示去年12月的资产负债表。另见“缓慢变化的维度”和“时态表”。
后者更接近真正的审计跟踪,它应该与它报告的数据分开,甚至可能与它报告的数据库分离--否则输入错误数据的同一个妥协应用程序也可以修改审计跟踪以掩盖更改。将审计数据与其源实体分开存储也有利于性能--应用程序不需要筛选几天/几个月/几年的历史数据就能获得当前的记录。
如果决定将审计跟踪存储在数据库中,至少要确保修改数据的授权ID不能访问审计跟踪表,并且审计授权ID不能更改源数据(也称为职责分离)。
https://dba.stackexchange.com/questions/255595
复制相似问题