约束命名的目的是什么

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),他们很可能会确定代码的来源并能够做出相应的反应.


Meh*_*ari 9

要确定将来的约束(例如,您希望将来删除它),它应该具有唯一的名称.如果您没有为其指定名称,数据库引擎可能会为您分配一个奇怪的名称(例如,包含随机内容以确保唯一性).


小智 5

它让 DBA 感到高兴,因此他们让您的模式定义进入生产数据库。