142

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

UNIQUE制約はどうですか?この制約に対して一般的に受け入れられている命名規則はありますか?私は、、そして誰かが推薦しているのを見てきましたUK_TableName_Column-UQ_TableName_ColumnそれAX_TableName_Columnがどこから来ているのかわかりません。

私は通常使用しましUQたが、特に好きではありません。また、支持者に対してそれを使用するという私の選択を擁護しなければならないことを楽しんでいませんUK

最も一般的な命名についてコンセンサスがあるかどうか、または1つが他よりも理にかなっている理由についての適切な理由があるかどうかを簡単に確認したいと思います。

4

3 に答える 3

155

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

インデックス/制約タイプ 命名規則
主キー <テーブル名>_PK
一意のインデックス/制約 <テーブル名>_AK{xx}
非一意のインデックス <テーブル名>_IX{xx}
制約チェック <テーブル名>_CK{xx}
デフォルトの制約 <テーブル名>_DF{xx}
外部キー制約 <テーブル名>_FK{xx}

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

サフィックス 意味
PK プライマリーキー_ _
AK 代替キー_ _
FK F oreign K ey
IX I nde X
CK C hec K
DF デフォールト_ _ _

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

于 2011-01-29T19:24:17.503 に答える
59

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

もちろんキーとして使用でき、行を一意に識別しますが、キーではありません

たとえば、キーが「ThingID」であり、ThingNameの代わりに自然キーとして使用される代理キーです。ThingNameを制約する必要があります。ただし、キーとしては使用されません。

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

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

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

編集:2013年2月。SQLServer2008以降、インデックスにもフィルターを含めることができます。制約はできません

だから、それは

  • SQLを使用する惑星の残りの部分と同様にUQに固執する
  • 一貫性を保つために、一意のインデックスにIKを使用します(クラスター化にもIKCを使用します)。
于 2011-01-29T13:19:07.913 に答える
8

私はUQを使用しています。英国のKは、PKとFKで使用されているKを思い起こさせます。とにかくイギリスのことを考えた後、皮肉なことに、英国が他の多くの協会を立ち上げたときに、これがUNIQUEの接頭辞になるはずです=)

于 2011-01-29T10:56:21.900 に答える