And*_*rew 44 sql database naming constraints
命名约束(唯一,主键,外键)的目的是什么?
假设我有一个使用自然键作为主键的表:
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)
);
Run Code Online (Sandbox Code Playgroud)
命名我的PK会带来什么好处(如果有的话)?
例如.更换:
PRIMARY KEY(LoginName, OrderDateTime)
Run Code Online (Sandbox Code Playgroud)
附:
CONSTRAINT Order_PK PRIMARY KEY(LoginName, OrderDateTime)
Run Code Online (Sandbox Code Playgroud)
对不起,如果我的数据模型不是最好的,我是新手!
Phi*_*ley 97
这是一些非常基本的原因.
(1)如果查询(插入,更新,删除)违反约束,SQL将生成包含约束名称的错误消息.如果约束名称清晰且具有描述性,则错误消息将更容易理解; 如果约束名称是基于随机guid的名称,那么它就不太清楚了.特别是最终用户,他们会(好吧,可能)打电话给你并询问" FK__B__B_COL1__75435199
"是什么意思.
(2)如果将来需要修改约束(是的,它会发生),如果你不知道它的名字是什么就很难做到.(ALTER TABLE MyTable drop CONSTRAINT um ...)如果您"从头开始"创建多个数据库实例并使用系统生成的默认名称,则不会匹配任何两个名称.
(3)如果支持你的代码(也就是DBA)的人在周日凌晨3点不得不浪费很多毫无意义的时间处理案例(1)或案例(2),他们很可能会确定代码的来源并能够做出相应的反应.