【RDB】外部キー - 別カラムを参照するカラム

【RDB】外部キー - 別カラムを参照するカラム

RDBには外部キーと呼ぶカラムがあります。

外部キーによって、テーブル同士のリレーションを表すことが可能です。

ここでは外部キーについて解説します。

外部キー

外部キーは“カラムを参照するカラム”のことです。

別テーブルやテーブル自身の別カラムに存在するフィールドと同じ値のみ格納するカラムを外部キーとすることができます。

外部キーによって、テーブル(及びレコード)のリレーションを表すことが可能です。

具体例

外部キーを具体例で確認しましょう。

次のユーザーテーブルに電話番号を格納するにはどのように変更すると良いでしょうか。

テーブル例

最も端的な方法は電話番号カラムの追加ですが、電話番号を複数個所有するユーザーがいる可能性があり、次のように一部データが重複する恐れがあります。

カラム追加とデータ重複

データの重複は不整合を引き起こしやすくなります。

例えば、IDが『0003』のユーザーに名前の変更がある場合、3レコードを更新する必要があります。

複数レコードの更新は抜け漏れが発生する可能性があり、他の様々な観点からもこのような構造は避けるべきです。

また、IDカラムをプライマリーキーとすることができなくなってしまいます。

そのため、ユーザーテーブルと電話端末テーブルに分けることが好ましいと考えられます。

不明なリレーション

しかし、分けただけでは電話番号がどのユーザーのものか不明な状態です。

そこで、電話端末テーブルにユーザーIDカラムを追加し、ユーザーテーブルのIDカラムの外部キーとします。

外部キーの追加

このようにすることで、IDユーザーID)によって、各テーブルからユーザーの情報を識別することが可能になり、データの重複がなくなりました。

また、各テーブルのユーザーIDカラムとIDカラムのフィールドが同じレコードを紐づけることでリレーション(関連)させることが可能です。