SQLにおける「主キー」の役割・「外部キー」の違いとは【33回】

「SQL入門」講座にご興味ある方はこちら。次回は7/24(月)開催です。

SQLにおける「主キー」の役割・「外部キー」の違いとは
ビジネスパーソンのためのプログラミング講座【第33回】


 

主キーと外部キーは、リレーショナル・データベースの構造を設計するにあたって非常に重要な要素です。
また、SQLを使ってデータベースを扱う際にも、主キーと外部キーの考え方を理解することで、効率的に誤りの無くデータを管理することができます。

■主キーとその役割とは?
主キー(プライマリーキー)は、あるテーブルの中でデータ行(レコード)をひとつに特定できる列(カラム)のことです。
「生徒名簿」テーブルの中の「学籍番号」列をイメージすると分かりやすいと思います。
同姓同名の生徒はいますが、学籍番号は異なるので、ひとりの生徒を特定することができます。
主キーのフィールドには必ず値が入っていなければいけません(非NULL制約)。

また、他のデータ行と異なる値が入っていなければいけません(一意制約)。
さらに、複数の列で主キーを構成することもできます。
たとえば、「生徒名簿」テーブルで、「学籍番号」を使わずに、「学年」「学級」「出席番号」を用いるようなものです。

これでも、やはり、ひとりの生徒を特定することができます。

■外部キーとその役割とは?
外部キーは、他のテーブルとの関連づけに使う列のことです。外部キーは関連づけされた先のテーブルでは主キーになります。
たとえば、「生徒名簿」テーブルと「出身校」テーブルがあるとします。
「生徒名簿」テーブルでは、生徒の出身校の情報は「出身校コード」だけ持っています。
「名称」「所在地」「連絡先」など出身校の詳しい情報は、「出身校コード」を主キーとして持つ「出身校」テーブルに記録されています。
このとき、「生徒名簿」テーブルの「出身校コード」は外部キーと呼ばれ、「出身校」テーブルとの関連づけに使われます。

「出身校」テーブルを親テーブル、「生徒名簿」テーブルを子テーブルと呼びますが、親子の関連が途切れてしまうようなデータ変更やデータ追加を行うとデータベースの整合性が無くなってしまいます。
そのような変更からデータベースを保護するために、外部キーの設定が必要になります。

なお、1つのテーブルに複数の外部キーを持つことができます。

例えば、「生徒名簿」テーブルの中で、「出身校コード」「部活動コード」を外部キーとして、それぞれ「出身校」「部活動」テーブルと関連づけをすると考えると分かりやすいでしょう。

■主キーと外部キーの役割
リレーショナル・データベースでは、正規化によってテーブルを分割し、それぞれのテーブルを関連づけることが基本的な設計思想になります。

主キーと外部キーは、テーブルを定義し、関連づけるための根幹にあたる重要な要素になります。
テーブルに主キーを指定することによって、データの重複を防ぐなどデータ管理が容易になります。
データを抽出する際にも、主キーを用いて任意のデータを確実に抽出することができます。

また、外部キーを指定することで、テーブル間のデータ管理が分かりやすく容易になりますし、複数のテーブルから結合したデータを抽出する際にも重要になります。

■まとめ
主キーと外部キーを理解することで、データベースの構造を深く知ることができます。
複雑なテーブルの構成をひもといて理解するために役に立ちますし、有効なSQL文を組むことができるようになります。

☆おすすめ講座☆
プログラミング入門講座の詳細はこちら
SQL入門講座の詳細はこちら
PHP入門講座の詳細はこちら

  >プログラミング豆知識 記事一覧へ

投稿日: 2017年5月12日

前後の記事

気になることは何でもお気軽にお問合せください。

0120-188-024 受付時間 平日9:00~19:00