DBMSキー:候補型、主キー、スーパーキー、外部キー
⚡ スマートサマリー
DBMSにおけるキーとは、テーブル内の行を一意に識別し、テーブル間の関係を確立する属性のことです。スーパーキー、プライマリキー、外部キー、サロゲートキーなど、8種類のキーによって、リレーショナルデータベース全体の識別性と整合性が確保されます。
DBMSにおけるキーとは何ですか?
DBMSのキー キーは、リレーション(テーブル)内の行(タプル)を識別するのに役立つ属性または属性セットです。キーを使用すると、2つのテーブル間のリレーションシップを見つけることができます。キーは、1つ以上の列の組み合わせによってテーブル内の行を一意に識別するのに役立ち、テーブル内の一意のレコードを見つけるのにも役立ちます。
例:
| 従業員ID | ファーストネーム | 苗字 |
|---|---|---|
| 11 | アンドルー | ジョンソン |
| 22 | トム | 木材 |
| 33 | Alex Vetsak | ヘイル |
上記の例では、従業員IDは従業員レコードを一意に識別するため、主キーとなっています。このテーブルでは、他の従業員が同じ従業員IDを持つことはできません。
なぜ鍵が必要なのか?
DBMSでキーを使用する理由をいくつか挙げます。
- キーは、テーブル内の任意のデータ行を識別するのに役立ちます。実際のアプリケーションでは、テーブルには数千ものレコードが含まれる可能性があり、レコードが重複している場合もあります。キーを使用することで、このような状況下でもテーブルレコードを一意に識別できます。
- これらを使用することで、テーブル間の関係を確立し、特定することができます。
- それらは、関係におけるアイデンティティと誠実さを強化するのに役立ちます。
DBMSにおけるキーの種類
DBMSには主に8種類のキーがあり、それぞれのキーには独自の機能があります。
- スーパーキー
- 主キー
- 候補キー
- 代替キー
- 外部キー
- 複合キー
- 複合キー
- 代理キー
以下の表は、それぞれを詳細に説明する前に、8つの項目すべてを一目でわかるようにまとめたものです。
| キー | 1行で | ユニーク? |
|---|---|---|
| スーパーキー | 行を識別する属性セットであれば何でも可(追加属性も可) | はい |
| 候補キー | 最小限のスーパーキー、冗長な属性なし | はい |
| 主キー | 選択された候補キー(nullではない) | はい |
| 代替キー | プライマリとして選択されなかった候補キー | はい |
| 外部キー | 別のテーブルの主キーを参照します。 | いいえ |
| 複合キー | 2つ以上の属性(それぞれが一意ではない可能性あり) | 組み合わせ |
| 複合キー | 一意性を確保するために2つ以上の列を結合 | 組み合わせ |
| 代理キー | 生成された人工識別子 | はい |
スーパーキーとは何ですか?
スーパーキーとは、テーブル内の行を識別するための、単一または複数のキーのグループです。スーパーキーには、一意の識別には必要のない追加属性が含まれる場合があります。
例:
| EmpSSN | EmpNum | 従業員名 |
|---|---|---|
| 9812345098 | AB05 | 示されている |
| 9876512345 | AB06 | ロザリン |
| 199937890 | AB07 | James |
上記の例では、EmpSSNとEmpNumはスーパーキーです。
主キーとは
主キー in DBMS 主キーとは、テーブル内のすべての行を一意に識別する列または列のグループです。主キーは重複してはならず、同じ値がテーブル内に複数回出現することはできません。また、1つのテーブルに複数の主キーを設定することはできません。
主キーを定義するためのルール
- 2つの行が同じ主キー値を持つことはできません。
- すべての行には主キー値が必要です。
- 主キーフィールドを null にすることはできません。
- 外部キーがその主キーを参照している場合、主キー列の値は変更または更新できません。
例: 次の例では、 StudID 主キーです。
| スタッドID | ロール番号 | 名 | 苗字 | メールアドレス |
|---|---|---|---|---|
| 1 | 11 | トム | 価格 | abc@gmail.com |
| 2 | 12 | Nick | ライト | メールアドレス |
| 3 | 13 | ダナ | ネイサン | mno@yahoo.com |
代替キーとは何ですか?
代替キー 主キーとは、テーブル内の各行を一意に識別する列または列のグループです。テーブルには複数の主キーの選択肢がありますが、主キーとして設定できるのは1つだけです。主キー以外のすべてのキーは、代替キーと呼ばれます。
例: この表では、StudID、Roll No、およびEmailは主キーとなる資格があります。しかし、StudIDが主キーであるため、Roll NoとEmailは代替キーとなります。
| スタッドID | ロール番号 | 名 | 苗字 | メールアドレス |
|---|---|---|---|---|
| 1 | 11 | トム | 価格 | abc@gmail.com |
| 2 | 12 | Nick | ライト | メールアドレス |
| 3 | 13 | ダナ | ネイサン | mno@yahoo.com |
候補キーとは何ですか?
候補キー 候補キーとは、テーブル内のタプルを一意に識別する属性の集合です。候補キーは、重複する属性を持たないスーパーキーです。主キーは候補キーの中から選択する必要があります。すべてのテーブルには少なくとも1つの候補キーが必要であり、1つのテーブルには複数の候補キーを設定できますが、主キーは1つしか設定できません。
候補キーのプロパティ:
- それは固有の値を含んでいる必要がある。
- 候補キーは複数の属性を持つことができる。
- null値を含んではならない。
- 一意性を確保するために必要な最小限のフィールドを含めるべきです。
- テーブル内の各レコードを一意に識別します。
例: 下の表では、StudID、Roll No、Email は学生レコードを一意に識別するのに役立つ候補キーです。スーパーキーとプライマリキーとの関係は、理解するための一般的な方法です。 関数従属性.
| スタッドID | ロール番号 | 名 | 苗字 | メールアドレス |
|---|---|---|---|---|
| 1 | 11 | トム | 価格 | abc@gmail.com |
| 2 | 12 | Nick | ライト | メールアドレス |
| 3 | 13 | ダナ | ネイサン | mno@yahoo.com |

外部キーとは何ですか?
外部キー 外部キーは、2つのテーブル間の関係を構築する列です。外部キーの目的は、データの整合性を維持し、エンティティの異なる2つのインスタンス間をナビゲートできるようにすることです。外部キーは、別のテーブルの主キーを参照するため、2つのテーブル間の相互参照として機能します。
例:
| DEPTCode | 部署名 |
|---|---|
| 001 | 科学 |
| 002 | 英語 |
| 005 | パソコン |
| 教師ID | 名前 | 名前 |
|---|---|---|
| B002 | デイビッド | ワーナー |
| B017 | サラ | 美咲さん(専業主婦) |
| B009 | マイク | ブラントン |
この例では、学校内に「教師」と「部署」という2つのテーブルがあります。現状では、どの教師がどの部署に所属しているかを確認する方法はありません。
外部キーDeptを追加することでCode Teacher テーブルに対して、2 つのテーブル間の関係を作成できます。
| 教師ID | DEPTCode | 名前 | 名前 |
|---|---|---|---|
| B002 | 002 | デイビッド | ワーナー |
| B017 | 002 | サラ | 美咲さん(専業主婦) |
| B009 | 001 | マイク | ブラントン |
この概念は、参照整合性とも呼ばれます。
複合キーとは何ですか?
複合キー 複合キーは、特定のレコードを一意に識別できる2つ以上の属性を持ちます。各列は、データベース内で単独では一意ではない可能性があります。しかし、これらの列を組み合わせることで、一意になります。複合キーの目的は、テーブル内の各レコードを一意に識別することです。
例:
| 注文番号 | 商品ID | 製品名 | 数量 |
|---|---|---|---|
| B005 | JAP102459 | マウス | 5 |
| B005 | DKT321573 | USB | 10 |
| B005 | OMG446789 | 液晶モニター | 20 |
| B004 | DKT321573 | USB | 15 |
| B002 | OMG446789 | レーザープリンタ | 3 |
この例では、OrderNoとProductIDはどちらもレコードを一意に識別できないため、それぞれを主キーとして使用することはできません。しかし、OrderNoとProductIDを組み合わせた複合キーを使用すれば、各レコードを一意に識別できます。
複合キーとは何ですか?
複合キー テーブル内の行を一意に識別する、2つ以上の列の組み合わせです。列の組み合わせによって一意性が保証されますが、個々の列では一意性が保証されません。そのため、テーブル内のレコードを一意に識別するために、これらの列が組み合わされます。
複合キーとコンポジットキーの違いは、複合キーはどの部分でも外部キーになり得るのに対し、コンポジットキーは外部キーの一部になる場合もならない場合もあるという点です。
サロゲートキーとは何ですか?
サロゲートキー サロゲートキーは、各レコードを一意に識別することを目的とした人工キーです。この種のキーは、自然な主キーが存在しない場合に作成されるため、一意です。サロゲートキーはテーブル内のデータに意味を与えず、通常はレコードが挿入される直前に生成される整数です。
| 名前 | 苗字 | 始まる時間 | 終了時間 |
|---|---|---|---|
| アン | Smith | 09:00 | 18:00 |
| ジャック | フランシス | 08:00 | 17:00 |
| アンナ | マクリーン | 11:00 | 20:00 |
| 示されている | ウィラム | 14:00 | 23:00 |
上記の例は、異なる従業員のシフト時間を示しています。ここでは、各従業員を一意に識別するためにサロゲートキーが必要です。 SQL 次のような場合に使用されます。
- プライマリキーというパラメータを持つプロパティはありません。
- 主キーが大きすぎるか、複雑すぎる。
主キーと外部キーの違い
主キーと外部キーの主な違いは以下のとおりです。
| 主キー | 外部キー |
|---|---|
| テーブル内のレコードを一意に識別するのに役立ちます。 | これは、別のテーブルの主キーとなるテーブル内のフィールドです。 |
| 主キーはnull値を決して受け入れません。 | 外部キーは複数の null 値を受け入れることができます。 |
| 主キーはクラスタ化インデックスであり、テーブル内のデータは物理的にクラスタ化インデックスの順序に従って整理されます。 | 外部キーは、クラスタ化インデックスまたは非クラスタ化インデックスを自動的に作成することはできません。手動で作成する必要があります。 |
| テーブルには、主キーを1つだけ設定できます。 | テーブルには複数の外部キーを含めることができます。 |

