Sql server 是否使用SQL Server检查约束或应用程序逻辑来保持用户Id上的引用完整性?
出于审计目的,数据库中的每个Sql Server表都有一个“LastUpdateUserID”和“CreateduserId”列 这些列是ApplicationUser表中的外键 严格来说,每个表中的两列都应该有一个检查约束 然而,这使得数据图不可读,也不可能进行布局 应用程序负责使用当前登录的“ApplicationUser”更新这些列 所以 。。。我应该使用SQL服务器检查约束还是依赖应用程序来强制引用完整性 我应该用 始终检查约束。没有任何外部应用程序能够比在SQL Server中内部管理更有效地实施RI。这就是我们使用SQL Server的原因 数据图不可读且无法布局 尝试更好的布局软件。在任何情况下,这都不会影响您的RI需求 严格地说 你已经回答了你自己的问题 跟进Sql server 是否使用SQL Server检查约束或应用程序逻辑来保持用户Id上的引用完整性?,sql-server,referential-integrity,Sql Server,Referential Integrity,出于审计目的,数据库中的每个Sql Server表都有一个“LastUpdateUserID”和“CreateduserId”列 这些列是ApplicationUser表中的外键 严格来说,每个表中的两列都应该有一个检查约束 然而,这使得数据图不可读,也不可能进行布局 应用程序负责使用当前登录的“ApplicationUser”更新这些列 所以 。。。我应该使用SQL服务器检查约束还是依赖应用程序来强制引用完整性 我应该用 始终检查约束。没有任何外部应用程序能够比在SQL Server中内部管理
无论您是使用LINQ还是某些UI强制的类型约束,都不重要。您的数据首先必须是可靠的(满足引用完整性)。无论您是在SQL中还是在应用程序中执行,这都不重要。只是在处理类型安全性(强类型模型强加的)之前,首先需要RI。曾经有Erik Meijer(LINQ的设计师)的视频解决了这个问题 至于我发布的另一个问题,我使用ORM解决了这个问题 (DevExpress XPO)
这将抽象掉几乎所有的数据库-因此在OO应用程序中,(几乎)根本不需要考虑持久化对象的数据存储什么使数据图不可读?外键?我不知道你在问什么。是否要删除外键?因为按照您当前的设计,所有与用户表链接为外键的审核表都可以确保引用的完整性。我有85个表,所有这些表都(至少)有2列是ApplicationUser表的外键。表之间还有许多其他关系。因此,仅从ApplicationUser表来看,数据图上就有170多条关系线。你可以想象这张图读起来有多困难!这是一个“SQL开发者”或纯粹主义者的观点。该应用程序是强类型的,并且使用LINQ to SQL,只在单个方法中从ApplicationUser表获取ID值。如果有人错误地添加代码以使用任意ID值,则查询“谁更新了此值”将给出错误的用户(测试将消除此错误),或者如果ID值不在ApplicationUser表中(异常处理将处理此错误)…并且不加约束是以开发人员为中心的视图。。。我认为这两个阵营永远不会达成一致。可能有人会引入破坏完整性的bug。此外,约束和外键可以帮助性能。然而,有可维护性的可读性,如可读性和可理解性。作为一个经常被要求“修复代码”的承包商,最大的问题是理解问题所在,并在不引入新缺陷的情况下修复它。在这种情况下,SQL RI将使这个非常困难的数据图几乎无法破译。对用户类和方法的注释使其非常清楚。此外,软件设计文件将记录国际扶轮的决定和原因them@AndrewBingham正如你所说的“…SQL RI将使这变得非常困难…”是真的。但更为真实的是,40年来,破译一种计算机语言是非常容易和合乎逻辑的,而不是使用任何一种月语言进行调试,或者依赖于任何原始程序员的文档实践或写作技能。SQL早于类和方法的OO编程范式,并将在每种以咖啡口味命名的语言中生存。我认为,相反,SQL数据库和T-SQL已经有40年的历史了,它们现在都过时、笨拙、难以使用(与.Net相比),并且SQF非常差。另一方面,语言已经进化和改进,同样重要的是,它们现在已经集成到框架和环境(.Net和Visual Studio)中。有趣的是,微软要用SQL Server和T-SQL实现同样的目标有多难?SQL管理站正逐渐被购买,以适应现代语言环境,但仍然很差