【发布时间】:2013-08-09 11:37:20
【问题描述】:
我正在启动一个新应用程序,并且想知道最好的日志记录方法是什么。数据库中的某些表需要记录每个更改以及进行更改的用户。其他表可能只需要记录最后修改时间。
在以前的应用程序中,我使用了不同的方法来做到这一点,但想听听其他人做了什么。
我尝试了以下方法:
- 在表格中添加一个“修改过的”日期时间字段以记录上次编辑的时间。
- 添加一个辅助表,仅用于记录主表中的更改。辅助表中的每一行代表主表中的一个更改字段。因此,主表中的一次记录更新可能会在辅助表中创建多条记录。
- 添加一个类似于 no.2 的表,但它记录三个或四个表的编辑,在附加字段中引用它相关的表。
你会使用什么方法并且会推荐?
还有什么是记录已删除数据的最佳方式?我从不喜欢用户可以从数据库中永久删除记录的想法,所以通常我有一个布尔字段“已删除”,当它被删除时它会更改为 true,然后它将在模型级别从所有查询中过滤掉.对此有何其他建议?
最后一个.. 记录用户活动的最佳方法是什么?目前我有一个记录登录/注销/密码更改等的表,根据操作是什么,给它一个代码 1,2,3 等。
希望我没有在这个问题上塞进太多东西。谢谢。
【问题讨论】:
-
您应该查看“更改数据捕获”(CDC)。这是一个众所周知的数据库习语。 technet.microsoft.com/en-us/library/bb522489(v=sql.105).aspx
-
您使用的是什么 RDBMS 系统?很多时候,RDBMS 将提供工具来捕获更改。跟踪登录活动也是供应商特有的。
-
@duffymo 这个方法会记录谁也做了更改?看起来它只是记录 sql 查询,我认为那里必须有一些控制器代码才能捕获此信息
-
也许吧。你几乎没有提供任何细节,所以我的回答没有解决它们。深入了解它。