在 SQL Server 中,“keys”文件夹包括主键、外键和唯一键,而“约束”文件夹,例如,检查和默认。但是唯一性也可以被认为是一个约束,那么为什么它保存在 SQL Server 的“keys”文件夹下呢?是因为它代表逻辑建模中的备用键吗?
我想知道我找不到的约束和键的严格定义。谢谢。
在 SQL Server 中,“keys”文件夹包括主键、外键和唯一键,而“约束”文件夹,例如,检查和默认。但是唯一性也可以被认为是一个约束,那么为什么它保存在 SQL Server 的“keys”文件夹下呢?是因为它代表逻辑建模中的备用键吗?
我想知道我找不到的约束和键的严格定义。谢谢。
唯一约束和唯一索引在物理上以相同的方式实现并具有相同的最终结果。由于唯一约束实际上是通过唯一索引在物理上强制执行的,并且由于两者都可以在与其他表的关系方面模拟主键,这就是为什么您会在“键”下看到它 - 即使您说
ADD CONSTRAINT
您仍然创建一个行为和闻起来像一把钥匙的约束。人们倾向于做的是根据代表他们意图的逻辑事物来创建它们。我看到的典型指导如下:
这些不是硬性规则,当然您可能想要使用不同的规则。然而,这些规则的显着部分不是这些东西出现在对象资源管理器中的位置,而是脚本对意图的描述(
ADD CONSTRAINT ... UNIQUE
vs.CREATE UNIQUE ... INDEX
)。“约束”和“关键”作为词本身重叠,但它们不能互换。NOT NULL 或 DEFAULT 或 CHECK 约束根本与键无关,实际上其中两个实际上违反了键的定义。另一方面,您可以创建的任何类型的键都适合约束的定义,因为该词的具体程度要低得多。