**外部キー(Foreign Key)**は、リレーショナルデータベース(RDB)において、データの整合性を保つための重要な制約です。
この制約は、テーブル内のある列が、別のテーブル内の特定の列に含まれるデータのみを受け入れることを保証します。
この記事では、外部キーの基本概念、SQLでの設定方法、そしてその実際の活用例について詳しく解説します。
外部キーを理解することで、データベース設計の効率を高め、データの整合性を確保する手助けになります。
外部キーの基本概念
外部キーとは?
**外部キー(Foreign Key)**は、リレーショナルデータベースのテーブルにおいて、ある列が別のテーブルの特定の列に対応するデータだけを持つことを要求する制約です。
外部キーを設定することで、以下の利点があります:
- データの整合性保持: テーブル間のリレーションシップを維持し、誤ったデータの入力を防ぐ。
- 自動的なデータの更新: 参照先のデータが変更された場合、参照元のデータも自動的に更新できる。
- 参照先データの保護: 参照先のデータが削除または変更されるのを防ぐことができる。
外部キーの設定方法
外部キーは、SQLのFOREIGN KEY句を使用して設定します。
テーブル作成時には、以下の形式で記述します:
例
例えば、顧客コードが外部キーとして設定されている受注テーブルの例を見てみましょう:
この例では、受注テーブルの顧客コード列が、顧客テーブルの顧客コード列を参照しており、顧客コードが存在しない場合は受注テーブルにデータを挿入できません。
外部キーの参照操作
参照操作の種類
外部キーには、参照先のデータが変更または削除された場合にどのように処理するかを指定する「参照操作」があります。
主なオプションは以下の通りです:
- CASCADE: 参照先のデータが更新または削除されると、参照元のデータも自動的に更新または削除されます。
- RESTRICT: 参照先のデータが削除または更新されるのを禁止します。
- NO ACTION: RESTRICTと似ていますが、トランザクションの終了時にチェックを行います。
- SET NULL: 参照先のデータが削除されると、参照元のデータがNULLに設定されます。
- SET DEFAULT: 参照先のデータが削除されると、参照元のデータがデフォルト値に設定されます。
設定の例
この例では、顧客テーブルの顧客コードが変更された場合、受注テーブルの顧客コードも自動的に変更されます。また、顧客が削除されると、受注テーブルの顧客コードはNULLに設定されます。
外部キーの活用例
企業での利用
多くの企業では、外部キーを用いてデータの整合性を維持しています。
例えば、在庫管理システムでは、商品のカテゴリを外部キーで管理し、カテゴリが削除されると関連する商品のデータも適切に処理されるようにしています。
データベース設計のベストプラクティス
- 一貫性の維持: 外部キーを用いることで、データの一貫性を保ちやすくなります。
- エラー防止: 不正なデータの入力を防ぎ、データベースのエラーを未然に防ぎます。
まとめ
**外部キー(Foreign Key)**は、リレーショナルデータベースの設計においてデータの整合性を保つための重要な制約です。
外部キーを設定することで、データの参照整合性を確保し、誤ったデータの入力やデータの不整合を防ぐことができます。
SQLでの設定方法や参照操作の種類を理解し、適切に活用することで、データベースの信頼性を高めましょう。
さらに参考してください。