ユニオン主キーと複合主キーの違い

王林
リリース: 2019-08-28 14:22:45
転載
9298 人が閲覧しました

1. 複合主キー

#いわゆる複合主キーとは、テーブルの主キーに複数のフィールドが含まれていることを意味します。 . 使用されない場合はビジネス上の意味がなく、自動インクリメントされる ID が主キーとして使用されます。

例:

create table test 
( 
   name varchar(19), 
   id number, 
   value varchar(10), 
   primary key (name,id) 
)
ログイン後にコピー

上記の名前フィールドと ID フィールドの組み合わせは、テスト テーブルの複合主キーです。これは、名前フィールドが同じ名前を持つ可能性があるため表示されます。 ID フィールドを使用すると、レコードの一意性を確保できます。一般に、主キーのフィールド長とフィールド数はできるだけ小さくする必要があります。

ここで疑問が生じるでしょう? 主キーが唯一のインデックスであるのに、なぜテーブルは複数の主キーを作成できるのでしょうか?

実のところ、「主キーが唯一のインデックスである」というのは少し曖昧です。たとえば、テーブルに ID フィールドを作成し、自動的に拡張して主キーとして設定しますが、「主キーが唯一のインデックス」であり、ID フィールドは一意性を確保するために自動的に拡張されるため、問題ありません。大丈夫です。

この時点で、varchar 型で別のフィールド名を作成し、それを主キーとして設定します。テーブルの複数の行に同じ名前の値を入力できることがわかります。これは違法ではありませんか? ? この文は「主キーが唯一のインデックスです」ということでしょうか?

これが、「主キーが唯一のインデックスである」が曖昧だと述べた理由です。 「テーブル内に主キーが 1 つだけある場合、それが唯一のインデックスです。テーブル内に複数の主キーがある場合、それは複合主キーと呼ばれます。複合主キーの組み合わせは、一意のインデックス"。

自己増加 ID はすでに一意の識別のための主キーとして使用できるのに、複合主キーが依然として必要なのはなぜですか?すべてのテーブルに ID フィールドが必要なわけではないためです。たとえば、学生テーブルを作成し、学生を一意に識別する ID がない場合、どうすればよいでしょうか? 学生の名前、年齢、クラスはすべて繰り返される可能性があります。単一のフィールドを一意の識別に使用することはできません。このとき、複数のフィールドを主キーとして設定して、複合主キーを形成できます。これらの複数のフィールドを合わせて一意性を識別します。その中で、特定の主キー フィールド値があれば問題ありません複数のレコードがない限り繰り返されます。すべての主キーの値がまったく同じである場合、それらは重複とは見なされません。

2. ジョイント主キー

ジョイント主キーは、名前が示すように、複数の主キーを組み合わせて形成するものです。主キーの組み合わせ (主キーは原則として一意です。一意の値によって問題が発生する必要はありません。)

結合主キーの意味: 2 つのフィールド (または複数のフィールド、具体的には 2 つのフィールドの組み合わせ) を使用します。フィールドは後で使用されます) を使用してレコードを決定し、これら 2 つのフィールドが一意ではないことを示します。2 つのフィールドは別々に繰り返すことができます。この設定の利点は、繰り返しフィールドのレコード数を直感的に確認できることです。

簡単な例:

主キー A と主キー B は結合主キーを形成します。

主キー A と主キー B のデータはまったく同じであってもかまいません。共用体は主キー A と主キー B にあります。結果として得られる結合主キーは一意です。
次の例では、主キー A のデータは 1、主キー B のデータも 1、結合された主キーは実際には 11 です。この 11 は一意の値であり、11 の一意の値は次のようになります。二度と現れることは絶対に許されない。 (多対多の関係です)

主キーAのデータ 主キーBのデータ
1 1 ##2 2
3 3

の結合主キー主キー A と主キー B 最大値は

11

12
13
21
22
23
31
32
33

要約 : 私の意見では、複合主キーは ID 名、ID 電話などの複数のフィールドで構成されますが、結合主キーは 2 つのテーブルのテーマを組み合わせたものである必要があります。同じ時間です。これが複合主キーとの最大の違いです!

その他の関連する質問については、PHP 中国語 Web サイトを参照してください:

mysql ビデオ チュートリアル

以上がユニオン主キーと複合主キーの違いの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:cnblogs.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート