命名约束(唯一、主键、外键)的目的是什么?
假设我有一个使用自然键作为主键的表:
CREATE TABLE Order
(
LoginName VARCHAR(50) NOT NULL,
ProductName VARCHAR(50) NOT NULL,
NumberOrdered INT NOT NULL,
OrderDateTime DATETIME NOT NULL,
PRIMARY KEY(LoginName, OrderDateTime)
);
命名我的 PK 会带来什么好处(如果有)?
例如。
代替:
PRIMARY KEY(LoginName, OrderDateTime)
With:
CONSTRAINT Order_PK PRIMARY KEY(LoginName, OrderDateTime)
抱歉,如果我的数据模型不是最好的,我是新手!
这是一些非常基本的原因。
(1) 如果查询(插入、更新、删除)违反约束,SQL 将生成包含约束名称的错误消息。如果约束名称清晰且具有描述性,则错误消息将更容易理解;如果约束名称是基于 guid 的随机名称,则不太清楚。特别是对于最终用户来说,他们会(好吧,可能)打电话给你并询问什么“FK__B__B_COL1__75435199
" means.
(2) 如果将来需要修改某个约束(是的,确实会发生),如果您不知道它的名称,则很难做到这一点。 (ALTER TABLE MyTable drop CONSTRAINT um...) 如果您“从头开始”创建多个数据库实例并使用系统生成的默认名称,则不会有两个名称匹配。
(3) 如果支持你的代码的人(又名 DBA)不得不在周日凌晨 3 点浪费大量无意义的时间来处理案例 (1) 或案例 (2),那么他们很可能会识别代码的来源并能够做出相应的反应。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)