唯一约束的命名约定

Kir*_*rst 117 sql sql-server naming-conventions unique-constraint

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

UNIQUE约束怎么样?这个约束是否有一个普遍接受的命名约定?我见过UK_TableName_Column,UQ_TableName_Column有人推荐AX_TableName_Column- 我不知道它来自哪里.

我经常使用,UQ但我并不特别喜欢它,我不喜欢捍卫我选择使用它来反对UK倡导者.

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

Nic*_*rey 119

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

  • 首要的关键._PK
  • 唯一索引/约束._AK {XX}
  • 非唯一索引._IX {XX}
  • 检查约束._CK {XX}
  • 默认约束._DF {XX}
  • 外键约束._FK {XX}

其中{xx}是一个2位数的序列号,从每个表的每个约束类型开始于01.主键没有获得序列号,因为只能有一个.2-char alpha后缀的含义是:

  • PK:主键
  • AK:备用钥匙
  • FK:外键
  • IX:IndeX
  • CK:ChecK
  • DF:DeFault

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

  • @AlexKeySmith:**谢谢你**解释为什么微软使用AK这个!! (14认同)
  • AK:Alternate Key是SQL Server数据工具2012的设计界面也称之为. (9认同)

gbn*_*gbn 52

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

可以被用来作为一个理所当然的键,唯一标识一行,但它并不是关键.

一个例子是密钥是"ThingID",代替密钥使用代理密钥作为自然密钥.你仍然需要约束 ThingName:它不会被用作键.

我还使用UQ和UQC(如果是群集的).

您可以使用唯一索引代替"IXU".根据所采用的逻辑,索引也是一个关键,但只有在唯一的时候.否则它是一个索引.那么我们就从IK_columnname唯一索引和IX_columnname非唯一索引开始.奇妙.

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

编辑:2013年2月.自SQL Server 2008以来,索引也可以包含过滤器.限制不能

所以,它归结为其中之一

  • 根据使用SQL的星球的其余部分坚持使用UQ
  • 使用IK作为唯一索引(IKC for clustered)也是一致的......

  • 请参阅 https://blogs.msdn.microsoft.com/dtjones/2009/10/29/best-practice-naming-constraints/ (2认同)

bit*_*ise 5

我用UQ.英国的K让我想起K在PK和FK中的使用.好吧,在我想到英国之后呢?具有讽刺意味的是,当英国提出这么多其他协会时,这应该是UNIQUE的前缀=)