【发布时间】:2019-03-01 12:41:55
【问题描述】:
假设每个添加到表的外键还添加了CHECK 约束,以确保插入到外键列中的值来自该键为主键的表中的值集。
这意味着具有更多外键的表将需要更长的时间来插入值。这是正确的吗?
我正在使用 Microsoft SQL Server 2014。
【问题讨论】:
-
CHECK约束是一种单独的约束类型,与FOREIGN KEY约束无关。外键和其他约束的开销是数据完整性的代价。没有什么是免费的。 -
谢谢。我确实知道它们是不同的,但我不知道我可以删除 CHECK 约束并且仍然有一个外键。我可以吗?
-
您可以在同一列上同时具有检查和外键约束,但如果功能是多余的,您可以简单地删除检查约束。两者都会限制可能值的范围。检查约束将执行得更好,但需要修改代码以添加/删除值,而外键约束允许基于引用的表动态约束值,并允许在引用的表中存储其他属性,这些属性应该存储在单独的每个标准数据库模型规范化的表。
标签: sql sql-server database-design sql-server-2014