[解決済み] 一意制約の命名規則
質問
命名規則は重要であり、主キーと外部キーは一般的に使用され、明白な規則があります (
PK_Table
と
FK_Table_ReferencedTable
それぞれ)。 また
IX_Table_Column
という命名もかなり標準的なものです。
UNIQUE制約についてはどうでしょうか。 この制約のために一般的に受け入れられている命名規則はありますか? 私が見たのは
UK_TableName_Column
,
UQ_TableName_Column
を推奨している人がいます。
AX_TableName_Column
- どこから来たんだろう。
私は通常
UQ
を使ってきましたが、特に好きなわけではありませんし、それを使うという自分の選択を守るために
UK
の擁護者たちに対して、それを使うという自分の選択を守らねばならないのは楽しいことではありません。
私は単に、最も一般的な命名についてのコンセンサスがあるかどうか、あるいは、なぜ1つが他のものより理にかなっているかについての良い理由があるかどうかを見たいと思うのです。
どのように解決するのですか?
私の考えでは、それはキーではなく、制約です。
それは は はもちろんキーとして使われ、行を一意に識別しますが、それは はそうではありません。 はキーではありません。
例えば、キーが "ThingID"である場合、代理の キー であり、自然なキーであるThingNameの代わりに使用されます。この場合でも を制約する ThingName: それはキーとして使われませんが。
UQとUQCも使う(クラスタ化されている場合)。
代わりにユニークインデックスを使用して、"IXU" を使用することができます。採用されているロジックでは、インデックスはキーでもありますが、一意である場合にのみ使用されます。それ以外の場合はインデックスです。したがって、次のようになります。
IK_columnname
を一意なインデックスに、そして
IX_columnname
は一意でないインデックス用です。Marvellousです。
そして、一意制約と一意インデックスの唯一の違いは、INCLUDEカラムです。
編集:2013年2月 SQL Server 2008以降、インデックスもフィルタを持つことができるようになりました。制約はできません。
ということで、結局はどちらか
- SQL を使用する他の惑星と同じように UQ を使用する。
- 一貫性を保つため、ユニークインデックスには IK を使用する(クラスター化には IKC も)。
関連
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[エラー処理] [MySQL] [Err] 1241 - オペランドは 1 つのカラムを含む必要があります。
-
解決策:ユーザー root で localhost:3306 にある MySQL に接続できませんでした。
-
executeQuery()ソリューションでデータ操作文を発行できない。
-
[解決済み] SQLのカラム名があいまいな場合のクエリエラー
-
[解決済み] JOINとINNER JOINの違いについて
-
[解決済み] SQL Serverでテーブルからカラム名を取得するにはどうすればよいですか?
-
[解決済み] SQLの複数列の順序付け
-
[解決済み] SQLite - UPSERT *not* INSERT or REPLACE
-
[解決済み] SQL ServerでGROUP BYを使って文字列を連結する方法とは?
-
[解決済み] Entity Framework VS LINQ to SQL VS ADO.NETでストアドプロシージャを使う?[クローズド]