我已经看到许多数据库设计在所有表上都有以下审计列...

  • 创建者
  • 创建DateTime
  • 更新者:
  • 更新日期时间

  • 从一个角度来看,我从以下 View 中看到表格...
  • 实体表:
  • 审计列的良好候选人)
  • 参考表:
  • 可能不需要审计列。在某些情况下,根本不需要最后更新信息,因为永远不会修改记录。)
  • 参考数据表
  • 像国家名称,实体状态等...可能不需要审核列,因为这些信息仅在系统安装期间创建,并且永远不会更改。

  • 我已经看到许多设计师盲目地将所有审计列放到所有表中,这是一种很好的做法,如果可以的话,那可能是原因...

    我只是想知道,因为在我看来,这是不合逻辑的。我很难弄清楚他们为什么要这样设计数据库?我并不是说他们是对还是错,只是想知道为什么?

    如果还有其他可用的审核模式或解决方案,您也可以建议我。

    感谢致敬

    最佳答案

    数据审计是许多业务系统必需的内部控制(有关原因,请参阅Sarbanes Oxley)。它必须处于数据库级别,以确保捕获所有更改,尤其是未经授权的更改。

    即使使用查找表,未经授权的更改也可能在您的系统中造成麻烦,因此了解谁进行更改以及何时进行更改非常重要。何时尤为重要,因为它可以帮助dbas知道获取备份以恢复意外或恶意更改的信息的时间。

    我们喜欢认为我们的所有员工都是值得信赖的,但是个人数据的许多盗窃和破坏公司数据的恶意更改均来自内部来源(这就是为什么拥有许多心怀不满的员工很危险),几乎所有欺诈行为也是如此。 。但是,大多数程序员似乎认为,他们只需要防御外部威胁即可。

    当然,您仍然会有一些人可以进行未经授权的更改,您不能阻止系统管理员执行此操作。但是,至少通过审核,您可以限制潜在的数据损坏(在雇用dbas时要特别小心,并且在数据库服务器上不允许其他管理员权限)。

    10-04 10:54
    查看更多