【初心者向け】関係DB(RDB)の主キー、外部キーの違いとは

はじめに

今回は、DBの主キーと外部キーについて、初心者でもわかりやすく説明していきます。さらにデータベースの基礎的なことから学習したいという方は以下の記事を先に読むことをオススメします。

関連記事

はじめに 今回は、データベース(DB)基礎について、初心者でもわかりやすく説明していきます。 この記事はこんな方にオススメ! IT系の分野で活躍したいので、IT用語・知識を習得したい 基本情報技術者、応用情報技術[…]

この記事はこんな方にオススメ!

  • IT系の分野で活躍したいので、IT用語・知識を習得したい
  • 基本情報技術者、応用情報技術者などIT系の資格を取りたい
  • システムエンジニアとして復習がしたい

主キーと外部キー

データベースから、ある特定の1行を取得する場合、その1行を特定できる情報が必要です。例えば、大きな病院で特定の患者さんの情報を参照しようとします。名前で検索した場合、同姓同名の人が何人かいた場合、参照したい人が、どの人なのかはわかりません。ただ、患者ごとに患者番号(重複のしないユニークな番号)のようなものが一人一人に割り振られている場合、その患者番号で検索すれば、必ず特定の患者さんを検索することができます。このようにデータベースの中には一つ一つのデータを識別できるように鍵となる情報が含まれています。これを主キーといいます。また、データベースごとを関連づけさせる時にもそのデータベースごとで持っている主キーが重要となってきます。データベースとデータベースの関連づけをするために設定するキーを外部キーといいます。詳しく説明していきます。

主キー(primary key)とは

主キー(primary key)とは前章でも説明したとおり、データベースの中から特定の行を識別することのできる鍵のことです。下の表の「患者情報」を見てみると、「患者名」は同性同名がいるので、「山田 太郎」さんを指定して行を抽出しても、2行取り出されてしまうため、主キーにはなりません。「住所」、「病棟ID」でも同様です。一方で「患者番号」を見てみると、値の重複がなく、特定の患者番号を指定して行を抽出すると、1行のみ抽出できることがわかります。これは主キーとなり得ます。

では、一体どのような条件であれば主キーとなるのでしょうか。主キーの条件、制約としては、以下の2つがあります。

  1. データベースの特定の行を一意に決めることができること(その列に重複したデータがない)
  2. 列の値にNULLもしくは空白がないこと

この2つの条件、制約を満たす列を主キーとすることができます。また、データベースにおいて、主キーは1列でなくてはならないという制約はありません。1列では一意にならなくても、複数列を組み合わせることで一意となるように設計することもあります。このように複数列を組み合わせて主キーとしたものを複合キーといいます。あわせて覚えておきましょう。

外部キー(foreign key)とは

外部キー(foreign key)とは関連データベースにおいて、テーブルとテーブルをつなぐために他のテーブルの主キーを参照する列のことを外部キーといいます。下の表で見てみると、患者情報の「病棟ID」と病棟情報の「病棟ID」がつながっている状態で、患者情報の「病棟ID」は病棟情報の主キーである「病棟ID」を参照しているので、外部キーとなります。

外部キーにより、関連性を持たせることで、システムから「患者情報」を見た場合、どの病棟にいたのかということをIDではなく、病棟名で見ることもできます。

主キーと外部キーの違い まとめ

上記で説明した主キーと外部キーについて、違いをざっと表にまとめます。

主キー外部キー
概要データベースの中から特定の行を識別することのできる列テーブルとテーブルをつなぐために他のテーブルの主キーを参照する列
関連テーブル数単一2つ
NULL、空白NGOK

おわりに

今回は初心者向けにデータベースの主キー、外部キーの違いついてわかりやすく説明しました。他の記事で様々なIT用語を説明しているので、他の記事もチェックしてください!

関連記事

はじめに 今回は、データベース(DB)基礎について、初心者でもわかりやすく説明していきます。 この記事はこんな方にオススメ! IT系の分野で活躍したいので、IT用語・知識を習得したい 基本情報技術者、応用情報技術[…]

関連記事

はじめに 今回は、ミドルウェアの役割、種類、代表的なサービス について、わかりやすく説明していきます。 この記事はこんな方にオススメ! IT系の分野で活躍したいので、IT用語・知識を習得したい基本情報技術者、応用情[…]

関連記事

はじめに 今回は、クラウドの基礎とクラウドの種類、メリットデメリットについて、 わかりやすく説明していきます。 この記事はこんな方にオススメ! IT系の分野で活躍したいので、IT用語・知識を習得したい 社内[…]

関連記事

はじめに 私は基本情報技術者試験の勉強を始めて、3ヶ月で一発合格しました。 3ヶ月で合格した勉強方を本記事で記載していきます。 また、基本情報技術者資格を取得する目的は以下のどちらに当てはまるか明確にして下さい。 目的によっ[…]