唯一约束的命名约定
Posted
技术标签:
【中文标题】唯一约束的命名约定【英文标题】:Naming convention for unique constraint 【发布时间】:2011-06-17 17:00:02 【问题描述】:命名约定很重要,主键和外键有常用且明显的约定(分别为PK_Table
和FK_Table_ReferencedTable
)。索引的IX_Table_Column
命名也相当标准。
UNIQUE 约束呢?此约束是否有普遍接受的命名约定?我见过UK_TableName_Column
、UQ_TableName_Column
,还有人推荐AX_TableName_Column
——我不知道这是从哪里来的。
我通常使用UQ
,但我不是特别喜欢它,而且我不喜欢为我使用它的选择辩护 UK
的拥护者。
我只是想看看是否就最流行的命名达成共识,或者对为什么一个比其他更有意义的一个很好的推理。
【问题讨论】:
@Mitch 有什么原因吗?我也这样做,但我总是问自己为什么没有人只使用U
。 Q
代表什么?
你可以问关于 IX for IndeX 的同样问题......为什么不只是我?
“UQ”只是“UNIQUE”的缩写。两个字母的原因,基本上是“PK”的先例。
就我个人而言,我最终将 UX_* 用于“Unique indeX”,以向“IndeX”的默认 IX 致敬。我特别不喜欢UK_,因为我来自英国。如果互联网喜欢,我可能会被 AK 说服。
@KirkBroadhurst 我从未见过这样的约定,但由于赞成票它必须是常见的并且很好地服务于目的。但是有一个名为 FK_03 的外键不是很有帮助,将其命名为FK_TargetTable_SourceTable
不是更好吗?能否请您详细说明。
【参考方案1】:
我对索引和约束的命名约定:
Index/Constraint Type | Naming Convention |
---|---|
Primary key |
<table-name>_PK
|
Unique index/constraint |
<table-name>_AKxx
|
Non-Unique index |
<table-name>_IXxx
|
Check constraint |
<table-name>_CKxx
|
Default constraint |
<table-name>_DFxx
|
Foreign key constraint |
<table-name>_FKxx
|
其中xx
是一个 2 位序列号,对于每个表的每个约束类型,从 01 开始。主键没有序列号,因为只能有一个。 2 个字符的 alpha 后缀含义是:
Suffix | Meaning |
---|---|
PK |
Primary Key |
AK |
Alternate Key |
FK |
Foreign Key |
IX |
IndeX |
CK |
ChecK |
DF |
DeFault |
我通常希望按控制对象而不是按对象类型对元数据/系统目录数据进行分组。
【讨论】:
AK:备用键也是 SQL Server 数据工具 2012 的设计表面所称的。 @AlexKeySmith:感谢您解释为什么微软为此使用 AK! 没问题@T.J.Crowder :-) @TJCrowder,在实体关系/数据库建模领域,它是一个 alternate 键,因为与主键一样,包含备用键的列集必须是唯一的,从而为行/元组提供 [alternate] 身份。 @NicholasCarey:不,我明白了——我一看到亚历克斯的评论,灯就亮了。 :-)【参考方案2】:我的想法是它不是一个关键:它是一个约束。
它当然可以用作键,唯一标识一行,但它不是键。
例如,键是“ThingID”,这是一个替代键,用于代替自然键的 ThingName。您仍然需要约束 ThingName:但它不会用作键。
我也会使用 UQ 和 UQC(如果集群)。
您可以改用唯一索引并选择“IXU”。根据所采用的逻辑,索引也是键,但仅在唯一时。否则它是一个索引。因此,我们将从 IK_columnname
开始用于唯一索引,IX_columnname
用于非唯一索引。太棒了。
唯一约束和唯一索引之间的唯一区别是包含列。
编辑:2013 年 2 月。从 SQL Server 2008 开始,索引也可以有过滤器。约束不能
所以,它归结为一个
按照其他使用 SQL 的星球,坚持使用 UQ 将 IK 用于唯一索引(IKC 也用于集群)以保持一致...【讨论】:
你会更喜欢“IXU”而不是“UIX”吗? 见blogs.msdn.microsoft.com/dtjones/2009/10/29/…【参考方案3】:我使用昆士兰大学。英国的 K 让我想到了 K,因为它用于 PK 和 FK。好吧,无论如何,在我想到英国之后;具有讽刺意味的是,当英国提出这么多其他协会时,这应该是 UNIQUE 的前缀 =)
【讨论】:
以上是关于唯一约束的命名约定的主要内容,如果未能解决你的问题,请参考以下文章