DBMSキー:候補型、主キー、スーパーキー、外部キー

⚡ スマートサマリー

DBMSにおけるキーとは、テーブル内の行を一意に識別し、テーブル間の関係を確立する属性のことです。スーパーキー、プライマリキー、外部キー、サロゲートキーなど、8種類のキーによって、リレーショナルデータベース全体の識別性と整合性が確保されます。

  • 🗝️ 主な目的: キーは一意の行を識別し、関連するテーブルをリンクすることで、データの一貫性を維持します。
  • 🔝 スーパーキー: 行を識別する属性セットであれば何でもよく、必要最低限​​の属性以外にも追加の属性が含まれる場合がある。
  • 主キー: 選択された候補キーは、nullであってはならず、重複してはならず、テーブルごとに1つだけ存在する。
  • 🎯 候補キー: 冗長な属性を持たない最小限のスーパーキー。主キーはこれらの中から選択される。
  • 🔁 代替キー: 主キーとして選択されなかった候補キー。
  • 🔗 外部キー: 参照整合性を確保するために、別のテーブルの主キーを参照する列。
  • 🧩 複合モデルと代替モデル: 複合キーは一意性を確保するために複数の列を組み合わせるものであり、サロゲートキーは生成された代替キーである。

DBMSキー候補スーパープライマリ

DBMSにおけるキーとは何ですか?

DBMSのキー キーは、リレーション(テーブル)内の行(タプル)を識別するのに役立つ属性または属性セットです。キーを使用すると、2つのテーブル間のリレーションシップを見つけることができます。キーは、1つ以上の列の組み合わせによってテーブル内の行を一意に識別するのに役立ち、テーブル内の一意のレコードを見つけるのにも役立ちます。

例:

従業員ID ファーストネーム 苗字
11 アンドルー ジョンソン
22 トム 木材
33 Alex Vetsak ヘイル

上記の例では、従業員IDは従業員レコードを一意に識別するため、主キーとなっています。このテーブルでは、他の従業員が同じ従業員IDを持つことはできません。

なぜ鍵が必要なのか?

DBMSでキーを使用する理由をいくつか挙げます。

  • キーは、テーブル内の任意のデータ行を識別するのに役立ちます。実際のアプリケーションでは、テーブルには数千ものレコードが含まれる可能性があり、レコードが重複している場合もあります。キーを使用することで、このような状況下でもテーブルレコードを一意に識別できます。
  • これらを使用することで、テーブル間の関係を確立し、特定することができます。
  • それらは、関係におけるアイデンティティと誠実さを強化するのに役立ちます。

DBMSにおけるキーの種類

DBMSには主に8種類のキーがあり、それぞれのキーには独自の機能があります。

  1. スーパーキー
  2. 主キー
  3. 候補キー
  4. 代替キー
  5. 外部キー
  6. 複合キー
  7. 複合キー
  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
DBMSの候補キー
DBMSの候補キー

外部キーとは何ですか?

外部キー 外部キーは、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つだけ設定できます。 テーブルには複数の外部キーを含めることができます。

よくあるご質問

候補キーはすべて、行を一意に識別できます。主キーは設計者が選択する1つの候補キーであり、残りの候補キーは代替キーとなります。

どちらも一意性を確保するために列を結合します。複合キーでは各列自体が外部キーとなりますが、複合キーは外部キーである必要のない2つ以上の属性を単純に結合します。

固有属性が確実に一意でない場合、または固有キーが大きい場合や変更される可能性がある場合は、サロゲートキーを使用してください。生成された整数は安定性を保ち、結合処理を簡素化します。

はい。AIは、列の一意性、NULL値の割合、安定性をプロファイリングすることで、候補となるキーを絞り込み、主キーまたは代理キーを提案できます。最終的な選択は設計者に委ねられます。

はい。主キーとは異なり、外部キーはnull値を保持できます。null値は、まだどの親レコードにも関連付けられていない行を表します。null値でない外部キーは、既存の主キーと一致する必要があります。