読み方 : がいぶキー

外部キー【foreign key】FK

概要

外部キーとはリレーショナルデータベース(RDB)で、テーブルのある列に、別のテーブルの特定の列に含まれる項目しか入力できないようにする制約。また、その際に指定する列。標準のSQLではFOREIGN KEY句を用いて設定できる。
外部キーのイメージ画像

ある列に入力するデータに制約を課し、別のテーブルのある列に登録済みのデータしか入力できないようにする。参照先のデータの変更に追随して自動的に参照元も書き換えるよう指定したり、参照先の削除や変更を禁じるよう指定することもできる。

例えば、受注テーブルの顧客コードの列に、顧客テーブルの顧客コードの列を外部キーとして設定すれば、顧客テーブルに登録されていない顧客コードを受注テーブルに誤って入力してしまうことを防ぐことができる。既存顧客の一覧から一つを選択して入力するような形にすることもできるようになる。

SQLでの記述

テーブル作成時には、CONSTRAINT句を用いて「CREATE TABLE テーブル定義 CONSTRAINT 制約名 FOREIGN KEY(列名) REFERENCING 参照先テーブル名(列名) 参照操作」という形式で記述する。列名は参照元、参照先ともに複数指定することができ、その場合は各列の値の組み合わせに対して制約を課す。既存のテーブルにALTER TABLE文で外部キーを追加することもできる。

「参照操作」は参照先のデータの更新や削除をどう扱うかを指定するキーワードである。「CASCADE」なら参照先の更新や削除に参照元を自動的に追随させ、「RESTRICT」なら参照されている値の(参照先での)更新や削除を禁じる。「NO ACTION」もRISTRICT同様に参照先の変更時にエラーを発するが、そのチェックはトランザクションの最後に行われる。

「SET NULL」は参照先が削除されたときに参照元にNull値をセットし、「SET DEFAULT」は列のデフォルト値をセットする。参照操作を更新時に適用するか削除時に適用するかは「ON UPDATE CASCADE ON DELETE RESTRICT」のように「ON UPDATE」および「ON DELETE」で指示することができる。

他の辞典等による「外部キー」の解説 (外部サイト)

資格試験などの「外部キー」の出題履歴

▼ ITパスポート試験
令8】 関係データベースで管理している“学生”表,“科目”表,“成績”表がある。1人の学生は複数の科目を履修するものとし,“学生”表に登録されていない学生や,“科目”表に登録されていない科目は“成績”表に登録できないものとするとき,外部キーとして設定するのが適切なものはどれか。
平30秋】 データベースにおける外部キーに関する記述のうち、適切なものはどれか。
平30秋】 レコードの関連付けに関する説明のうち、関係データベースとして適切なものはどれか。
平29秋】 関係データベースにおける外部キーに関する記述のうち、適切なものはどれか。
平25秋】 関係データベースの表に設定する主キー、外部キー及びインデックスのうち、一つの表に対して複数設定できるものだけを全て挙げたものはどれか。
平25春】 関係データベースを使い“社員”表と“部署”表を作成して社員情報を管理する。“社員”表と“部署”表に、必要に応じて設定する主キーと外部キーの適切な組合せはどれか。
平22秋】 “部署”表、“都道府県”表及び“社員”表を結合して、A表を作成した。結合した“社員”表はどれか。ここで、下線は主キーを示し、破線は外部キーを示す。
▼ 基本情報技術者試験
令5修7/令4修12/平30修7/平28春】 関係データベースにおいて,外部キーを定義する目的として,適切なものはどれか。
令4修7/令2修7/平30修1/平26修7/平24秋/平22秋】 関係データベースの “注文” 表の “顧客番号” は,“顧客” 表の主キー “顧客番号” を参照する外部キーである。このとき,参照の整合性を損なうデータ操作はどれか。
平25修12/平23春/平22修1】 関係データベースにおいて,外部キー定義を行う目的として,適切なものはどれか。
平21修7】 三つの表からなるデータベースのスキーマがある。次の項目中で外部キーはどれか。ここで,スキーマの中の下線は主キーを表す。 学生( 学生番号 ,学生名,住所,生年月日) 成績( 学生番号 , 科目番号 ,点数) 科目( 科目番号 ,科目名,講師番号)。
この記事の著者 : (株)インセプト IT用語辞典 e-Words 編集部
1997年8月より「IT用語辞典 e-Words」を執筆・編集しています。累計公開記事数は1万ページ以上、累計サイト訪問者数は1億人以上です。学術論文や官公庁の資料などへも多数の記事が引用・参照されています。