一意制約の命名規則


129

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

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

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

私は、最も一般的なネーミングについてコンセンサスがあるのか​​、それともなぜ他の人よりも理にかなっているのかについての正当な理由があるのか​​どうかを知りたいだけです。


1
@ミッチ理由は何ですか?私もそうですが、なぜ誰も使用しない理由を常に自問していますU。何のQ略ですか?
Kirk Broadhurst、2011年

1
あなたはIX for IndeXについて同じ質問をすることができます...なぜ私だけではないのですか?
Chris J

3
「UQ」は「UNIQUE」の略です。2文字の理由は、基本的には「PK」の前例です。
Mark Cidade、2011年

2
個人的には、 "IndeX"のデフォルトのIXに敬意を表して、 "Unique indeX"のUX_ *を使用することになりました。私はイギリス出身なので、特にUK_が嫌いです。それがインターネットが好きなものなら、私はAKで説得されるでしょう。
Tim Abell、2016年

@KirkBroadhurst私はそのような慣習を見たことがありませんが、賛成投票のため、それは一般的であり、目的をうまく果たさなければなりません。しかし、FK_03という名前の外部キーがあるとあまり役に立ちません。名前を付けた方がいいのではないでしょうFK_TargetTable_SourceTableか。詳しく説明してください。
CodingYoshi 2017

回答:


56

私の考えでは、それは鍵ではありません。それは制約です。

それは可能性が当然のキーとして使用され、行を一意に識別し、それはされないキー。

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

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

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

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

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

だから、それは

  • SQLを使用する他の惑星と同様にUQに固執する
  • 一貫性を保つために、一意のインデックスにIKを使用します(クラスター化にもIKCを使用)...

1
「UIX」よりも「IXU」を強くお勧めしますか?
Hamish Grubijan 2013


133

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

  • 主キー。_PK
  • 一意のインデックス/制約。_AK {xx}
  • 一意でないインデックス。_IX {xx}
  • 制約を確認してください。_CK {xx}
  • デフォルトの制約。_DF {xx}
  • 外部キー制約。_FK {xx}

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

  • PK:主キー
  • AK:代替キー
  • FK:外部キー
  • IX:IndeX
  • CK:チェック
  • DF:デフォルト

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


10
AK:代替キーは、SQL Serverデータツール2012のデザインサーフェイスでも呼ばれています。
Alex KeySmith 2013

15
@AlexKeySmith:MicrosoftがこれにAKを使用する理由を説明していただきありがとうございます !!
TJクラウダー2015

問題ありません@TJCrowder :-)
Alex KeySmith

@TJCrowder、エンティティリレーションシップ/データベースモデリングの世界では、これは代替キーです。これは、主キーと同様に、代替キーを構成する列セットは一意でなければならず、したがって行/タプルに[代替] IDを提供する必要があるためです。
ニコラスキャリー

@NicholasCarey:いいえ、わかりました-アレックスのコメントを見るとすぐに、明かりがつきました。:-)
TJクラウダー2015

5

私はUQを使用しています。UKのKは、PKとFKで使用されているKを思い起こさせます。ええと、とにかくイギリスについて考えた後、皮肉なことに、英国が他の多くの団体を立ち上げた場合、これはUNIQUEのプレフィックスになるはずです=)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.