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 索引命名约定 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章