命名约定很重要,主键和外键具有常用和明显的约定(分别为PK_Table
和FK_Table_ReferencedTable
)。索引的IX_Table_Column
命名也是相当标准的。
UNIQUE约束怎么样?这个约束是否有一个普遍接受的命名约定?我看过UK_TableName_Column
,UQ_TableName_Column
,有人推荐AX_TableName_Column
- 我不知道它来自哪里。
我通常使用UQ
,但我并不特别喜欢它,我不喜欢捍卫我对UK
倡导者使用它的选择。
我只想看看是否就最流行的命名达成了共识,或者是为什么一个人比其他人更有意义的一个很好的推理。
答案 0 :(得分:112)
我对索引和约束的命名约定:
其中{xx}是一个2位数的序列号,从每个表的每个约束类型开始于01。主键没有获得序列号,因为只能有一个。 2-char alpha后缀的含义是:
我通常希望通过控制对象而不是对象类型对元数据/系统目录数据进行分组。
答案 1 :(得分:47)
我的想法是它不是关键:它是一种约束。
当然可以用作键,并唯一标识一行,但不是键。
一个例子是密钥是“ThingID”,代理密钥代替ThingName使用自然密钥。你仍然需要约束 ThingName:它不会被用作键。
我还使用UQ和UQC(如果是群集的)。
您可以使用唯一索引代替“IXU”。根据所采用的逻辑,索引也是一个关键,但只有在唯一的时候。否则它是一个索引。因此,对于唯一索引,我们将从IK_columnname
开始,对于非唯一索引,我们将从IX_columnname
开始。非凡。
唯一约束和唯一索引之间的唯一区别是INCLUDE列。
编辑:2013年2月。自SQL Server 2008起,索引也可以包含过滤器。约束不能
所以,它归结为
之一答案 2 :(得分:5)
我使用UQ。英国的K让我想起K在PK和FK中的使用。好吧,在我想到英国之后呢?具有讽刺意味的是,当英国提出这么多其他协会时,这应该是UNIQUE的前缀=)