【RDB】外部キー - 別カラムを参照するカラム
RDBには外部キーと呼ぶカラムがあります。
外部キーによって、テーブル同士のリレーションを表すことが可能です。
ここでは外部キーについて解説します。
外部キー
外部キーは“カラムを参照するカラム”のことです。
別テーブルやテーブル自身の別カラムに存在するフィールドと同じ値のみ格納するカラムを外部キーとすることができます。
外部キーによって、テーブル(及びレコード)のリレーションを表すことが可能です。
具体例
外部キーを具体例で確認しましょう。
次のユーザー
テーブルに電話番号を格納するにはどのように変更すると良いでしょうか。
最も端的な方法は電話番号
カラムの追加ですが、電話番号を複数個所有するユーザーがいる可能性があり、次のように一部データが重複する恐れがあります。
データの重複は不整合を引き起こしやすくなります。
例えば、ID
が『0003』のユーザーに名前の変更がある場合、3レコードを更新する必要があります。
複数レコードの更新は抜け漏れが発生する可能性があり、他の様々な観点からもこのような構造は避けるべきです。
また、ID
カラムをプライマリーキーとすることができなくなってしまいます。
そのため、ユーザー
テーブルと電話端末
テーブルに分けることが好ましいと考えられます。
しかし、分けただけでは電話番号がどのユーザーのものか不明な状態です。
そこで、電話端末
テーブルにユーザーID
カラムを追加し、ユーザー
テーブルのID
カラムの外部キーとします。
このようにすることで、ID
(ユーザーID
)によって、各テーブルからユーザーの情報を識別することが可能になり、データの重複がなくなりました。
また、各テーブルのユーザーID
カラムとID
カラムのフィールドが同じレコードを紐づけることでリレーション(関連)させることが可能です。