使用SQL Server检查约束或应用程序逻辑来保持用户ID的参照完整性?

时间:2015-08-15 05:23:23

标签: sql-server referential-integrity

出于审计目的,数据库中的每个Sql Server表都有一个' LastUpdatedUserId'和' CreateduserId'柱

这些列是ApplicationUser表中的外键

严格来说,每个表中的两列都应该有一个Check Constraint

然而,这使得数据图表不可读且无法布局

应用程序负责使用当前登录的ApplicationUser'

更新这些列

...所以

...我应该使用SQL Sever检查约束还是依赖应用程序来强制执行参照完整性

2 个答案:

答案 0 :(得分:1)

  

我应该使用......

始终检查约束。没有外部应用程序可以比在SQL Server内部管理RI更好地实施RI。这就是我们使用SQL Server的原因。

  

数据图表不可读且无法布局

尝试更好的布局软件。在任何情况下都不应影响您的RI需求。

  

严格来说......

您已回答了自己的问题......

跟进

如果使用LINQ或某些UI强加的类型约束,则无关紧要。您的数据必须首先是声音(满足参照完整性)。无论您是在SQL中运行还是应用程序都无关紧要。只有在你解决类型安全问题之前首先需要RI(由强类型模型强加)。曾经有过Erik Meijer(LINQ的设计师)的视频解决了这个问题。

答案 1 :(得分:-1)

至于我发布的另一个问题 - 我通过使用ORM解决了这个问题 (DevExpress XPO)

这抽象了几乎所有数据库 - 因此在OO应用程序中(几乎)甚至不需要考虑持久化对象的数据存储