SQL Server 索引命名约定 [关闭]

Posted

技术标签:

【中文标题】SQL Server 索引命名约定 [关闭]【英文标题】:SQL Server Index Naming Conventions [closed] 【发布时间】:2011-02-16 12:43:52 【问题描述】:

是否有一些标准的方法来命名 SQL Server 的索引?似乎主键索引被命名为 PK_ 而非聚集索引通常以 IX_ 开头。除了唯一索引之外,还有其他命名约定吗?

【问题讨论】:

【参考方案1】:

是否值得为与外键关联的索引使用特殊前缀?我想是的,因为它提醒我默认情况下不会创建外键索引,因此更容易查看它们是否丢失。

为此,我使用与外键名称匹配的名称:

FK_[table]_[foreign_key_table]

或者,同一张表上存在多个外键

FK_[table]_[foreign_key_table]_[foreign_key_field]

【讨论】:

【参考方案2】:

我知道一个老话题,但我想我会投入 2 美分的价值

PKC_ 主键,集群 PKNC_ 主键,非集群 NCAK_ 非集群,唯一 CAK_ 集群,唯一 NC_ 非集群

示例;

NCAK_AccountHeader_OrganisationID_NextDate

其中 NCAK :非集群、唯一、AccountHeader :表和 OrganisationID_NextDate :列。

【讨论】:

备用键 - en.wikipedia.org/wiki/Unique_key#Alternate_key【参考方案3】:

我用

主键的PK_

UK_ 用于唯一键

IX_ 用于非聚集非唯一索引

UX_ 用于唯一索引

我所有的索引名称都采用<index or key type>_<table name>_<column 1>_<column 2>_<column n>

的形式

【讨论】:

非唯一聚集索引呢?客户体验? 我从来不需要非唯一聚集索引...我意识到这是可能的,但对我来说这似乎从来都不是正确的做法。 根据这里给出的答案***.com/questions/1401572/… KEY 和 INDEX 是同义词。那么唯一键和唯一索引应该不需要不同的前缀? 这是一个逻辑上的区别,如果会有外键引用我使用UniqueKey,否则我使用UniqueIndex。 Tahir Hassan:我想你错了,Sql Server 索引必须有一个唯一的名称。此外,我喜欢能够查看索引名称并查看它属于哪个表或视图。【参考方案4】:

我通常通过表名和它们包含的列来命名索引:

ix_tablename_col1_col2

【讨论】:

如何区分索引列和包含列? 我很确定他只是按照它们在索引中的放置顺序列出索引列。 我使用如下:IX_TableName_col1_col2-includecol1-includecol2

以上是关于SQL Server 索引命名约定 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

C++ 命名约定 [关闭]

SQL Server中的索引搜索与索引扫描[关闭]

承诺的 JavaScript 命名约定? [关闭]

C# GUI 命名约定的最佳实践? [关闭]

单元测试都有哪些流行的命名约定? [关闭]

单元测试都有哪些流行的命名约定? [关闭]