問題本文
データベースにおける外部キーに関する記述のうち,適切なものはどれか。
選択肢
- ア.外部キーがもつ特性を,一意性制約という。
- イ.外部キーを設定したフィールドには,重複する値を設定することはできない。
- ウ.一つの表に複数の外部キーを設定することはできない。
- エ.複数のフィールドを,まとめて一つの外部キーとして設定することができる。
正解
エ. 複数のフィールドを,まとめて一つの外部キーとして設定することができる。
解説
外部キー(Foreign Key)はあるテーブルの列が別のテーブルの主キー(またはユニークキー)を参照する制約(参照整合性制約)。外部キーの特性:①値の重複が可能(同じ顧客コードが注文テーブルに複数回登場可能)、②一つの表に複数の外部キーを設定可能(複数テーブルを参照する場合)、③複数フィールドを組み合わせた複合外部キーも設定可能。主キーの「一意性制約(重複不可)」と外部キーの「参照整合性制約(参照先の値が存在することを保証)」は別の制約であり正確な区別が重要。
選択肢ごとの解説
- ア.誤り。外部キーが持つ制約は参照整合性制約(参照先のレコードが存在することを保証する制約)であり一意性制約ではない。一意性制約(UNIQUE制約)は主キーに適用されテーブル内で値の重複がないことを保証するもの。外部キーにはこの一意性制約は適用されず、同一値が複数行に存在できる。
- イ.誤り。外部キーには重複する値を設定できる。例えば注文テーブルの顧客コード(外部キー)は同じ顧客が複数回注文すれば同じ値が複数行に存在することが許容される。外部キーには主キーにある一意性制約がなく、参照整合性制約のみが適用される点が重要。
- ウ.誤り。一つの表に複数の外部キーを設定することは可能であり通常よく行われる。例えば注文テーブルに顧客コード(顧客テーブルを参照)と商品コード(商品テーブルを参照)という2つの外部キーを同時に持たせることは標準的なデータベース設計である。
- エ.正解。複数のフィールドを組み合わせた複合外部キーとして設定できる。参照先の主キーが複数フィールドの組み合わせ(複合主キー)の場合、参照元の外部キーも同じ複数フィールドの組み合わせで設定する必要がある。主キーの複合化と外部キーの複合化は対応する形で実装される。
ITパスポート 2018年 (平成30年 秋期) の過去問一覧へ戻る・問73