ITパスポート過去問 平成30年度(2018年)問73
データベースにおける外部キーに関する記述のうち,適切なものはどれか。
選択肢
- ア:外部キーがもつ特性を,一意性制約という。
- イ:外部キーを設定したフィールドには,重複する値を設定することはできない。
- ウ:一つの表に複数の外部キーを設定することはできない。
- エ:複数のフィールドを,まとめて一つの外部キーとして設定することができる。
- ア
- イ
- ウ
- エ
正解と解き方・学習ポイント(AI解説)
外部キーは、参照先の表に存在する値だけを参照元の表に入れられるようにする参照整合性の制約です。一意性制約のように重複を禁止するものではないため、外部キーの列には同じ値を複数行で設定できます。また、一つの表に外部キーを複数設定することもでき、複数のフィールドを組み合わせて一つの外部キー(複合外部キー)として定義することも可能です。
Point
この問題は、外部キーが満たす制約は一意性ではなく参照整合性であること、外部キーは重複可能で複数設定も可能であること、複数フィールドをまとめた複合外部キーが存在することを理解しているかを確認するものです。
解くために必要な知識
この問題を解くには、リレーショナルデータベースのキー制約(主キー・外部キー・一意性制約)と参照整合性の理解が必要です。
用語の整理
| 用語 | 意味 |
|---|---|
| 外部キー(Foreign Key) | 他の表の主キー(またはUNIQUE制約の列)を参照し、参照先に存在しない値の登録などを防ぐ制約です。参照整合性を保つ目的で使います。 |
| 一意性制約(UNIQUE制約) | 列、または列の組に同じ値(重複)を入れられない制約です。 |
| 主キー(Primary Key) | 表の各行を一意に識別する列、または列の組です。原則として重複とNULLを許しません。 |
外部キーで押さえるポイント
-
外部キーは重複を禁止する制約ではありません。
-
参照先の表に存在する値だけを入れられるようにします。
-
1つの表に外部キーを複数定義できます。
-
複数のフィールドを組み合わせた複合外部キーを定義できます。
他の選択肢に出てくる用語
| 用語 | 意味 |
|---|---|
| フィールド | 表の列(カラム)を指す表現です。設問では「フィールド」という語が使われています。 |
| 複合外部キー | 複数のフィールドを組み合わせて、1つの外部キーとして参照する定義です。参照先でも同じ列の組が主キーまたはUNIQUE制約で一意になっている必要があります。 |
問題の解法手順
各選択肢の整理
| 選択肢 | 内容 | 正誤 | 理由 |
|---|---|---|---|
| ア | 外部キーがもつ特性を、一意性制約という。 | ✕ | 一意性制約は、値の重複を禁止する制約です。外部キーに求められる代表的な制約は参照整合性制約です。 |
| イ | 外部キーを設定したフィールドには,重複する値を設定することはできない。 | ✕ | 外部キーは同じ値を複数行に設定できます。例えば複数の注文が同一顧客を参照する場合、顧客IDは重複します。 |
| ウ | 一つの表に複数の外部キーを設定することはできない。 | ✕ | 1つの表に複数の外部キーを設定できます。例えば注文表が顧客表と商品表を同時に参照することがあります。 |
| エ | 複数のフィールドを,まとめて一つの外部キーとして設定することができる。 | ○ | 参照先が複合主キーなど複数フィールドで識別される場合、参照元も複数フィールドをまとめて外部キーにできます。 |
選択肢ごとの解説
- ア:不正解
一意性制約は、値の重複を禁止する制約であり、主キーやUNIQUE制約に関する性質です。外部キーには一意であることは求められません。
- イ:不正解
外部キーは参照先に存在する値であれば、同じ値を複数行で持てます。例えば同じ顧客IDが複数の注文で使われることがあります。
- ウ:不正解
1つの表に複数の外部キーを定義できます。例えば注文表が顧客表の顧客IDと商品表の商品IDを参照する場合、2つの外部キーを持ちます。
- エ:正解
複数のフィールドを組み合わせて1つの外部キーとして設定できます。参照先が複合主キーの場合、参照元も対応する複数列で外部キーを構成します。
まとめ
外部キーは、参照先の表に存在する値だけを参照元の表に入れられるようにする参照整合性の制約です。一意性制約のように重複を禁止するものではないため、外部キーの列には同じ値を複数行で設定できます。また、一つの表に外部キーを複数設定することもでき、複数のフィールドを組み合わせて一つの外部キー(複合外部キー)として定義することも可能です。
テクノロジ系 > 技術要素 > データベース
一意性制約は、値の重複を禁止する制約であり、主キーやUNIQUE制約に関する性質です。外部キーには一意であることは求められません。
外部キーは参照先に存在する値であれば、同じ値を複数行で持てます。例えば同じ顧客IDが複数の注文で使われることがあります。
1つの表に複数の外部キーを定義できます。例えば注文表が顧客表の顧客IDと商品表の商品IDを参照する場合、2つの外部キーを持ちます。
複数のフィールドを組み合わせて1つの外部キーとして設定できます。参照先が複合主キーの場合、参照元も対応する複数列で外部キーを構成します。