web-dev-qa-db-ja.com

一意制約の命名規則

命名規則は重要であり、主キーと外部キーは一般的に使用されている明白な規則です(それぞれPK_TableFK_Table_ReferencedTable)。インデックスのIX_Table_Column命名もかなり標準です。

UNIQUE制約はどうですか?この制約に一般的に受け入れられている命名規則はありますか? UK_TableName_ColumnUQ_TableName_Column、およびAX_TableName_Columnを推奨している人を見たことがあります-どこから来たのかわかりません。

私は通常UQを使用しましたが、特に好きではありません。また、UK支持者に対してそれを使用するという選択を守る必要はありません。

最も一般的な命名法についてコンセンサスがあるのか​​、それともなぜ他の名前よりも理にかなっているのかについての正当な理由があるのか​​を見たいだけです。

114
Kirk Broadhurst

私の考えでは、それはキーではなく、制約です。

もちろんcouldキーとして使用され、行を一意に識別しますが、ではないキーです。

例は、キーが「ThingID」であり、サロゲートkeyがThingNameの代わりに自然キーとして使用されることです。 constrain ThingNameが必要です:ただし、キーとしては使用されません。

UQとUQC(クラスター化されている場合)も使用します。

代わりに一意のインデックスを使用して、「IXU」に進むことができます。採用されているロジックでは、インデックスもキーですが、一意の場合のみです。それ以外の場合は、インデックスです。したがって、一意のインデックスの場合はIK_columnnameから、一意でないインデックスの場合はIX_columnnameから始めます。素晴らしい。

また、一意制約と一意インデックスの唯一の違いは、INCLUDE列です。

編集:2013年2月。SQLServer 2008以降、インデックスにもフィルターを設定できます。制約はできません

だから、それは

  • sQLを使用する他の惑星ごとにUQに固執する
  • IK一意のインデックス(クラスター化の場合もIKC)に一貫性を持たせるには...
50
gbn

インデックスと制約の命名規則:

  • 主キー。 _PK
  • 一意のインデックス/制約。 _AK {xx}
  • 非ユニークインデックス。 _IX {xx}
  • チェック制約。 _CK {xx}
  • デフォルトの制約。 _DF {xx}
  • 外部キー制約。 _FK {xx}

{xx}は2桁のシーケンス番号で、テーブルごとの制約タイプごとに01から始まります。主キーは1つしか存在できないため、シーケンス番号を取得しません。 2文字のアルファサフィックスの意味は次のとおりです。

  • PK:主キー
  • AK:代替キー
  • FK:外部キー
  • IX:IndeX
  • CK:ChecK
  • DF:DeFault

通常、メタデータ/システムカタログデータをオブジェクトタイプではなく制御オブジェクトごとにグループ化します。

116
Nicholas Carey

UQを使用します。英国のKは、PKおよびFKで使用されているKを思い浮かべます。まあ、とにかくイギリスについて考えた後、皮肉なことに、これは英国が他の多くの協会を立ち上げるときにUNIQUEの接頭辞でなければならないということです=)

5
bitxwise