外部キー

外部キーとは



外部キー(Foreign Key, FK)は、関係データベースにおいて、テーブル(関係変数)間の参照整合性を維持するための制約です。具体的には、あるテーブルの列(属性)が、別のテーブルの列を参照する際に用いられます。

外部キーの役割



  • - 参照整合性の確保: 外部キーは、参照する側のテーブルのデータが、参照される側のテーブルに存在するデータを指すことを保証します。これにより、データの一貫性が保たれます。
  • - テーブル間の関連付け: 外部キーは、テーブル間の関係を定義し、関連するデータを結びつけます。
  • - データの正規化: 外部キーは、データの冗長性を排除し、データの正規化を促進します。

外部キーの定義



外部キーは、データベース言語であるSQLの `FOREIGN KEY` 制約として定義されます。既存のテーブルに外部キーを追加する場合、`ALTER TABLE` 文を使用します。テーブル作成時に外部キーを定義することも可能です。

定義例 (SQL)


sql
  • -- 既存のテーブルに外部キーを追加
ALTER TABLE 参照するテーブル
ADD CONSTRAINT 制約名
FOREIGN KEY (参照する列)
REFERENCES 参照されるテーブル (参照される列);

  • -- テーブル作成時に外部キーを定義
CREATE TABLE 参照するテーブル (
...,
FOREIGN KEY (参照する列)
REFERENCES 参照されるテーブル (参照される列)
);


`REFERENCES` 句で参照される列を省略した場合、参照されるテーブルの主キーが参照されると解釈されます。

参照操作



外部キーが設定されたテーブルでは、参照される側のテーブルのデータが変更(削除や更新)された場合、参照する側のテーブルに影響が生じる可能性があります。このため、SQLでは参照操作を定義し、データの一貫性を保つためのメカニズムが提供されています。主な参照操作には以下の5種類があります。

1. CASCADE: 参照される側のデータが削除または更新された場合、参照する側の対応するデータも連動して削除または更新されます。
2. RESTRICT: 参照する側のデータが存在する場合、参照される側のデータの削除または更新は許可されません。
3. NO ACTION: SQL文の実行後、参照整合性が満たされているか確認し、満たされていない場合はSQL文を失敗させます。
4. SET NULL: 参照される側のデータが削除または更新された場合、参照する側の外部キーの値をNULLに設定します。
5. SET DEFAULT: 参照される側のデータが削除または更新された場合、参照する側の外部キーの値をデフォルト値に設定します。

注意点


  • - CASCADE はデータの一貫性を保つために強力ですが、意図しないデータ削除を引き起こす可能性があるため、慎重に使用する必要があります。
  • - RESTRICT はデータの一貫性を最も厳密に保ちますが、データ変更の柔軟性を損なう可能性があります。
  • - SET NULL および SET DEFAULT は、外部キーがNULLを許容する場合にのみ使用可能です。

具体例



例1: 会計データベース


請求書テーブルと供給者テーブルがあるとします。

  • - 供給者テーブル (Supplier)
- `SupplierNumber` (主キー)
- `Name`
- `Address`
- `Type`
  • - 請求書テーブル (Invoices)
- `InvoiceNumber` (主キー)
- `SupplierNumber` (外部キー, 供給者テーブルの `SupplierNumber` を参照)
- `Text`

この例では、請求書テーブルの `SupplierNumber` 列が外部キーとして機能し、供給者テーブルの `SupplierNumber` 列を参照します。これにより、請求書は必ず存在する供給者に紐づけられます。

例2: 企業データベース


社員テーブルと部署テーブルがあるとします。

  • - 部署テーブル (Department)
- `DepartmentID` (主キー)
- `DepartmentName`
  • - 社員テーブル (Employee)
- `EmployeeID` (主キー)
- `DepartmentID` (外部キー, 部署テーブルの `DepartmentID` を参照)
- `Name`

この例では、社員テーブルの `DepartmentID` 列が外部キーとして機能し、部署テーブルの `DepartmentID` 列を参照します。これにより、社員は必ず存在する部署に所属することになります。

外部キーに関する問題点



  • - 外部キーと主キーの関係が、本来あるべきでない場合に存在していたり、その逆のパターンが存在すると、データベース設計上の問題を引き起こしやすくなります。
  • - 不適切な外部キーの設計は、データの不整合、性能問題、アプリケーションの複雑化などを招く可能性があります。

まとめ



外部キーは、関係データベースにおいて、テーブル間の参照整合性を保つために不可欠な概念です。外部キーの適切な設計と使用は、データの正確性と整合性を保証し、データベースシステムの信頼性を高めます。データベース設計を行う際には、外部キーの役割と特性を十分に理解することが重要です。

関連項目



もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。