首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何记录系统用户所做的更改?

如何记录系统用户所做的更改?
EN

Stack Overflow用户
提问于 2013-10-04 08:52:45
回答 2查看 111关注 0票数 2

我有一个系统(c#/asp.net/sqlserver),用户可以在其中登录并管理商店的产品。我需要在数据库中记录用户对产品所做的每一处更改。例如:

代码语言:javascript
复制
Product A
Inserted by USER1 on 10/03/2013 10:00
Description changed to "Product AA" by USER2 on on 10/03/2013 12:00

实际上,我有一个类似于PRODUCT表的PRODUCT_LOG表,每次产品上的某些记录发生更改时,都会在PRODUCT_LOG上插入该记录。按照这种方式,我可以向系统管理员返回一个“可读”的日志(如上所示)。

然而,我在维护日志上的FK时产生了一个很大的问题,在一段时间的日志记录之后,许多寄存器将不会从系统中删除,因为它们在日志表中被引用为FK。:(

我会问是否有其他选择或更好的方法来生成这种类型的日志。如果你知道这些方法的名称,请告诉我,这样我就可以在谷歌上搜索它。

EN

回答 2

Stack Overflow用户

发布于 2013-10-04 08:57:14

移除FK约束,它就会起作用。您需要的是"Audit表“,它们不需要引用完整性,因为它们是不可变的--一次编写,并且是永久的,所以将它们包含在与其他表的连接中是没有意义的。

票数 1
EN

Stack Overflow用户

发布于 2013-10-04 09:01:11

引用完整性(外键消失)是数据库保留的这类日志的问题之一。但您也可以将表添加到您的架构中,以便从FK表中移动“已删除”的行。然后,使用“活动的”FK表和“删除的”FK表的联合计算日志表上的连接。Bam@!没有遗漏的FK。

或者,可以对日志文件中的数据进行反规范化(将FK链接字段展开到日志文件中的数据列)。是的,这占用了更多的空间,但节省了查询时间,并记录了事件发生时出现的信息。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19171447

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档