web-dev-qa-db-ja.com

複合(複合)一意キー

私はこのページだけでなく、stackoverflowやgoogleも探していました。これはよくある質問かもしれませんが、関連するものは何も見つからなかったためです...ここで正しい用語を使用していない可能性があります。

質問は非常に簡単です。

入れ子になった一意のキー(または主キーと一意のキーの組み合わせ)を別の一意のキー内に置くことは良い習慣ですか?

例:

列A、B、C、D、E、F、Gのテーブルがあります。プライマリまたは一意のキーは(A、B)で、一意のキーは(A、B、C)および(A、B、D)です。

これが一種のことであるかどうかは、一般的には良いことですが、mysqlについても知りたいです。

どうもありがとうございました

  • すべてのテーブルには_PRIMARY KEY_が必要です。 MySQLでは、これはUNIQUEness制約とインデックスの2つを意味します。
  • あらゆる種類のインデックスを「複合」(「複合」)にすることができます。つまり、複数の列で構成されます。
  • 1つのテーブルに2つのUNIQUEキーを含めることはめったにありません。 (注意:PRIMARYUNIQUEとしてカウントされます。
  • 一般的な例外は、長い文字列を「正規化」し、それを短いINTに「マッピング」する場合です。
  • 一意のキー_(a)_を既に持っている場合、UNIQUE(a,b)またはUNIQUE(b,a)も持つ必要はありません。一方、それはmay一意でないINDEX(a,b)および/またはINDEX(b,a)を持つと便利です。 _(a)_ impliesの一意性が他の2つの一意性をどのように考えるか。
  • INDEX(a,b)を使用する場合、INDEX(a)も使用する理由は事実上ありません(注:この箇条書き項目ではUNIQUEについて話していません)。

特定の質問に(おそらく間接的に)対処しなかった場合は、質問を言い換えてください。

1
Rick James