如果我要审核表,这是否合适的数据库设计?

时间:2018-09-21 05:00:31

标签: sql-server database-design

这是我第一次为PoS WPF应用程序创建审核日志,并且想知道我如何实现审核系统,因为似乎每个可用选项都有其起伏。到目前为止,我没有阅读大量文章/主题,而是缩小了审核日志的一些常见做法:

1。触发器-不幸的是,由于我的应用程序的性质,我无法使用触发器,因为它无法知道哪个用户执行了操作。因此,我要做的是创建一个存储过程,该过程将处理客户插入内容以及客户日志插入内容及其详细信息。使用存储过程时,应用程序将提供Customer_Id。

2。具有新旧价值-我的最初计划是仅包含后者,因为我可以将旧价值与之前行中的新价值进行引用,但是存储旧价值似乎更明智,更复杂-明智的。

3。为日志/ 4使用单独的数据库。4.外键-这可能是我主要关心的问题,如果我决定对审计表使用单独的数据库,则无法为客户和员工设置外键参与其中。

我创建了一个带有主从表结果的模型erd,该结果将显示在wpf应用上,以将日志显示给管理员,非常希望您对可能出现的问题进行思考(还有一个雇员表,但我忘了说):

https://ibb.co/dheaNK

以下一些信息可能会有所帮助:

  1. 该数据库将与wpf应用程序一起驻留,后者是一台计算机。

  2. 客户数量将少于1000。

  3. 正式雇员人数为3。

  4. 管理员数量将为2。

1 个答案:

答案 0 :(得分:1)

您可以在SQL Server数据库上为特定表启用CDC Change Data Capture 这将使您能够收集记录在特殊表中的数据库表上的所有数据更改。 您也可以参考official documents

这是DML命令的列表,以及如何在为源数据库表创建的CDC表中记录数据更改

enter image description here

CDC的优点是SQL Server默认提供它,而您无需进行任何日志记录。唯一的要求是应运行SQL Server代理,以便更改可以反映在日志表上。