キーは DBMS の重要な部分であり、スキーマ内のテーブル間の関係を識別して確立するために使用されます。次の記事では、DBMS の 2 つの非常に重要なキー、つまり主キーと外部キーの違いについて説明します。お役に立てば幸いです。
DBMS の主キー
主キーは、リレーションシップ内のタプルを一意に定義します。これは、関係内の単一の属性または関係内の一連の属性にすることができます。主キー属性の値は変更すべきではありません、またはほとんど変更されません。これはプリンシパルであるため、データベース内のあらゆるレコードを識別することを目的としており、主キーの属性の値が変更されると混乱が生じます。 [ビデオチュートリアルの推奨: MySQL チュートリアル]
どのリレーションシップでも主キーを 1 つだけ持つことができます。主キーにはデフォルトでクラスターインデックスが付けられます。これは、テーブル内のすべてのタプルが主キー属性値に基づいて順序付けされることを意味します。主キー制約は一時テーブルに定義できます。クエリの実行中に作成される中間テーブルは、一時テーブルと呼ばれます。
DBMS の外部キー
外部キーは、属性内のリレーションシップ R1 が次の場合に、別のリレーションシップの主キーを参照するキーです。 other 属性がリレーション R2 の主キーである場合、その属性はリレーション R1 の外部キーと呼ばれます。外部キーを含む関係R1は関係R2の主キーを参照するため参照関係と呼ばれ、関係R2は参照関係と呼ばれる。
主キーとは異なり、外部キーはリレーションシップ内のレコードのタスクを明示的に識別しないため、NULL 値を受け入れることができます。同様に、外部キーも重複値を受け入れます。
リレーションシップは、さまざまなリレーションシップで主キーとなるさまざまな属性を持つことができるため、複数の外部キーを持つことができます。外部キー制約は一時テーブルでは定義できません。また、外部キーはクラスター化インデックスのプロパティではありません。
主キーと外部キーの主な違い
1. 本質的に異なります。主キーは、リレーションシップ内のタプルを一意に定義するために選択された候補キーであり、テーブル内の外部キーは、別のテーブルの主キーを参照します。
2. NULL 値
主キーの値を NULL にすることはできません。外部キーは NULL 値を受け入れます。
3. 重複値
主キー関係には、主キー属性の重複値を保持する 2 つのタプルはありません。外部キーのタプルは、外部キー属性の重複した値を保持できます。
4. 範囲
リレーションシップには主キーを 1 つだけ含めることができます。 1 つのリレーションシップ内に複数の外部キーが存在する場合があります。
5. 一時テーブル
主キー 一時テーブルに主キー制約を定義できます。外部キー 外部キー制約は一時テーブルには定義できません。
6. クラスター化インデックス
デフォルトでは、主キーはクラスター化インデックスです。外部キーはインデックスを自動的にクラスター化することができないため、手動で行う必要があります。
7. 挿入
主キーでは、参照する外部キーに値が含まれていない場合でも、主キー属性に値を挿入できます。カラム。
外部キーでは、参照される主キー列に値が存在しない場合、値を外部キーに挿入できません。8. 削除
主キー値を削除する前に、参照テーブルの参照先外部キー列にその値が存在しないことを確認してください。参照関係の参照主キー列に値が存在するかどうかを気にせずに、外部キー列から値を削除できます。
以上がこの記事の全内容です、皆様の学習のお役に立てれば幸いです。さらにエキサイティングなコンテンツについては、PHP 中国語 Web サイトの関連チュートリアルのコラムに注目してください。 ! !以上がDBMSにおける主キーと外部キーの違いの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。