独特约束的变数命名原则

命名约定很重要,主键和外键有常用的和明显的约定(分别为 PK_TableFK_Table_ReferencedTable)。对索引的 IX_Table_Column命名也是相当标准的。

UNIQUE 约束怎么样?这种限制是否有一个普遍接受的变数命名原则?我看过 UK_TableName_ColumnUQ_TableName_Column,还有人推荐 AX_TableName_Column-我不知道这是从哪里来的。

我通常使用 UQ,但我不是特别喜欢它,而且我不喜欢为自己选择使用它来对抗 UK倡导者而辩护。

我只是想看看是否对最普遍的命名达成了共识,或者对为什么一个命名比其他命名更有意义有一个很好的理由。

83998 次浏览

我用的是 UQ。英国的 K 让我想起了在 PK 和 FK 中使用的 K。好吧,在我想到英国之后; 讽刺的是,这应该是一个前缀 UNIQUE 当 UK 提出这么多其他协会 =)

我认为这不是一把钥匙,而是一种约束。

可以当然被用作键,并且唯一标识一行,但它 不是是键。

例如,这个键是“ ThingID”,一个代理 钥匙代替自然键 ThingName。您仍然需要 约束 ThingName: 但是它不会被用作键。

我还会使用 UQ 和 UQC (如果是集群的话)。

你可以使用一个唯一的索引代替“ IXU”。根据所使用的逻辑,索引也是键,但只有在唯一时才是。否则就是索引。因此,我们将从 IK_columnname开始处理唯一索引,从 IX_columnname开始处理非唯一索引。好极了。

唯一约束和唯一索引之间的唯一区别是 INCLUDE 列。

编辑: 2013年2月。自 SQLServer2008以来,索引也可以有过滤器。约束不可以

所以,归根结底

  • 和其他使用 SQL 的星球一样,坚持使用 UQ
  • 对唯一索引使用 IK (对聚类也使用 IKC)以保持一致..。

我对指数和约束的变数命名原则:

索引/约束类型 变数命名原则
主钥匙 < table-name > _PK
唯一索引/约束 < table-name > _AK{xx}
非唯一索引 < table-name > _IX{xx}
检查约束 < table-name > _CK{xx}
默认约束 < table-name > _DF{xx}
外键约束 < table-name > _FK{xx}

其中 {xx}是一个2位序列号,从每个表的每个约束类型01开始。主键不会得到序列号,因为只能有一个序列号。2-char alpha 后缀的意思是:

后缀 意思是
PK P riary Key
AK A 后备 Key
FK F 外国 Key
IX I nde < strong > X
CK C hec K
DF D eFault

我通常希望按控制对象而不是按对象类型对元数据/系统目录数据进行分组。