命名規則は重要であり、主キーと外部キーは一般的に使用されている明白な規則です(それぞれPK_Table
とFK_Table_ReferencedTable
)。インデックスのIX_Table_Column
命名もかなり標準です。
UNIQUE制約はどうですか?この制約に一般的に受け入れられている命名規則はありますか? UK_TableName_Column
、UQ_TableName_Column
、およびAX_TableName_Column
を推奨している人を見たことがあります-どこから来たのかわかりません。
私は通常UQ
を使用しましたが、特に好きではありません。また、UK
支持者に対してそれを使用するという選択を守る必要はありません。
最も一般的な命名法についてコンセンサスがあるのか、それともなぜ他の名前よりも理にかなっているのかについての正当な理由があるのかを見たいだけです。
私の考えでは、それはキーではなく、制約です。
もちろんcouldキーとして使用され、行を一意に識別しますが、ではないキーです。
例は、キーが「ThingID」であり、サロゲートkeyがThingNameの代わりに自然キーとして使用されることです。 constrain ThingNameが必要です:ただし、キーとしては使用されません。
UQとUQC(クラスター化されている場合)も使用します。
代わりに一意のインデックスを使用して、「IXU」に進むことができます。採用されているロジックでは、インデックスもキーですが、一意の場合のみです。それ以外の場合は、インデックスです。したがって、一意のインデックスの場合はIK_columnname
から、一意でないインデックスの場合はIX_columnname
から始めます。素晴らしい。
また、一意制約と一意インデックスの唯一の違いは、INCLUDE列です。
編集:2013年2月。SQLServer 2008以降、インデックスにもフィルターを設定できます。制約はできません
だから、それは
インデックスと制約の命名規則:
{xx}は2桁のシーケンス番号で、テーブルごとの制約タイプごとに01から始まります。主キーは1つしか存在できないため、シーケンス番号を取得しません。 2文字のアルファサフィックスの意味は次のとおりです。
通常、メタデータ/システムカタログデータをオブジェクトタイプではなく制御オブジェクトごとにグループ化します。
UQを使用します。英国のKは、PKおよびFKで使用されているKを思い浮かべます。まあ、とにかくイギリスについて考えた後、皮肉なことに、これは英国が他の多くの協会を立ち上げるときにUNIQUEの接頭辞でなければならないということです=)