唯一约束的命名约定

发布于 2024-10-14 18:34:31 字数 440 浏览 4 评论 0原文

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

那么 UNIQUE 约束呢?此约束是否有普遍接受的命名约定?我见过 UK_TableName_ColumnUQ_TableName_Column,还有人推荐 AX_TableName_Column - 我不知道它来自哪里。

我通常使用 UQ,但我不是特别喜欢它,而且我不喜欢必须针对 UK 的拥护者来捍卫我使用它的选择。

我只是想看看是否就最流行的命名达成了共识,或者是否有一个很好的理由来解释为什么一个命名比其他命名更有意义。

Naming conventions are important, and primary key and foreign key have commonly used and obvious conventions (PK_Table and FK_Table_ReferencedTable, respectively). The IX_Table_Column naming for indexes is also fairly standard.

What about the UNIQUE constraint? Is there a commonly accepted naming convention for this constraint? I've seen UK_TableName_Column, UQ_TableName_Column, and someone recommending AX_TableName_Column - I don't know where that comes from.

I've typically used UQ but I don't particularly like it, and I do not enjoy having to defend my choice of using it against a UK advocate.

I would simply like to see if there is a consensus on the most prevalent naming, or a good reasoning as to why one makes more sense than the others.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

诺曦 2024-10-21 18:34:31

我的索引和约束的命名约定:

索引/约束类型命名约定
主键<表名>_PK
唯一索引/约束><表名>_AK{xx}
非唯一索引<表名>< /em>_IX{xx}
检查约束<表名>_CK{xx}
默认约束< em><表名>_DF{xx}
外键约束<表名>< /em>_FK{xx}

其中 {xx} 是 2 位序列号,每个表的每种约束类型从 01 开始。主键没有序列号,因为只能有一个。 2 个字符的字母后缀含义为:

后缀含义
PKPrimary Key
AKA< /strong>备用Key
FKF外国Key
IXIndeX
CKChecK
DF默认

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

My naming convention for indices and constraints:

Index/Constraint TypeNaming Convention
Primary key<table-name>_PK
Unique index/constraint<table-name>_AK{xx}
Non-Unique index<table-name>_IX{xx}
Check constraint<table-name>_CK{xx}
Default constraint<table-name>_DF{xx}
Foreign key constraint<table-name>_FK{xx}

Where {xx} is a 2-digit sequence number, starting at 01 for each constraint type per table. Primary key doesn't get a sequence number since there can be only one. The 2-char alpha suffix meanings are:

SuffixMeaning
PKPrimary Key
AKAlternate Key
FKForeign Key
IXIndeX
CKChecK
DFDeFault

I generally want to group metadata/system catalog data by the controlling object rather than by object type.

阿楠 2024-10-21 18:34:31

我的想法是这不是关键:它是一个约束。

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

例如,密钥是“ThingID”,它是用于代替自然密钥 ThingName 的代理密钥。您仍然需要约束 ThingName:但它不会用作密钥。

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

您可以使用唯一索引来代替“IXU”。根据所采用的逻辑,索引也是键,但前提是唯一。否则它就是一个索引。因此,我们首先使用 IK_columnname 表示唯一索引,使用 IX_columnname 表示非唯一索引。奇妙。

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

编辑:2013 年 2 月。从 SQL Server 2008 开始,索引也可以有过滤器。约束不能

所以,归结为

  • 坚持 UQ 之一,因为使用 SQL 的星球的其余部分
  • 使用 IK 来实现唯一索引(IKC 也用于集群)以保持一致......

My thinking is it isn't a key: it's a constraint.

It could be used as a key of course, and uniquely identifies a row, but it isn't the key.

An example would be that the key is "ThingID", a surrogate key used in place of ThingName the natural key. You still need to constrain ThingName: it won't be used as a key though.

I'd also use UQ and UQC (if clustered).

You could use a unique index instead and go for "IXU". By the logic employed, an index is also a key but only when unique. Otherwise it's an index. So then we'd start with IK_columnname for unique indexes and IX_columnname for non-unique indexes. Marvellous.

And the only difference between a unique constraint and a unique index is INCLUDE columns.

Edit: Feb 2013. Since SQL Server 2008, indexes can have filters too. Constraints can not

So, it comes down to one of

  • stick with UQ as per the rest of the SQL-using planet
  • use IK for unique indexes (IKC for clustered too) to be consistent...
我三岁 2024-10-21 18:34:31

我用的是昆士兰大学。英国的 K 让我想起 K,因为它用于 PK 和 FK。好吧,无论如何,在我想到英国之后;具有讽刺意味的是,当英国提出了如此多的其他协会时,这应该是 UNIQUE 的前缀 =)

I use UQ. The K in UK makes me think of K as it's used in PK and FK. Well, after I think of United Kingdom anyways; ironic that this should be a prefix for UNIQUE when UK brings up so many other associations =)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文