データベース|平成25年度 春期 ITパスポート試験(特別措置試験) 問55
関係データベースを使い“社員”表と“部署”表を作成して社員情報を管理する。“社員”表と“部署”表に,必要に応じて設定する主キーと外部キーの適切な組合せはどれか。ここで,社員は必ず“部署”表に存在する部署に所属するものとし,社員データの追加や更新をするときには,参照制約を利用して整合性を確保するものとする。
社員
| 社員コード | 社員名 | 入社年 | 生年月日 | 部署コード |
|---|
部署
| 部署コード | 部署名 |
|---|
〔選択肢〕(原典では選択肢そのものが表=主キーと外部キーの2欄。欄の中身を書き起こしたもの)
| 肢 | 主キー | 外部キー |
|---|---|---|
| ア | “社員”表の社員コード,“部署”表の部署コード | なし |
| イ | “社員”表の社員コード,“部署”表の部署コード | “社員”表の部署コード |
| ウ | “部署”表の部署コード | “社員”表の社員コード,“社員”表の部署コード |
| エ | “社員”表の部署コード | “社員”表の社員コード,“部署”表の部署コード |
- 主キー=“社員”表の社員コード,“部署”表の部署コード / 外部キー=なし
- ✓ これが正解主キー=“社員”表の社員コード,“部署”表の部署コード / 外部キー=“社員”表の部署コード
- 主キー=“部署”表の部署コード / 外部キー=“社員”表の社員コード,“社員”表の部署コード
- 主キー=“社員”表の部署コード / 外部キー=“社員”表の社員コード,“部署”表の部署コード
解説
主キーになれるかは、重複しないかどうかだけで決まります。
主キーは、その表の行を一つに定める列のことです。社員の表なら、一人に一つ与えられる番号がそれにあたります。部署の表なら、部署ごとに一つの番号がそれになります。外部キーは、別の表の主キーを指している列のことです。社員の表にある部署の番号が、向こうの主キーを指します。これを外部キーにすると、無い部署を書き込めなくなります。外部キーが在れば、無い番号は弾かれます。設問は、社員が必ず存在する部署に属すると書いています。だから、主キー二つと外部キー一つの組が当たります。外部キーを置かない組は、無い番号を許してしまいます。社員の番号を外部キーにした組も成り立ちません。その番号を主キーに持つ表が、どこにも無いからです。その番号のほうを主とした組も外れます。同じ部署に何人も居るので、その列は重複してしまいます。
ほかの選択肢はなぜ違うのか
- 主キーは二つで、外部キーは置かないとします。主キーの取り方そのものは合っています。ところが外部キーが一つもありません。存在しない番号も書き込めてしまいます。設問は整合を保つと書いていました。守る仕掛けが足りません。
- 部署の番号だけを主キーにするとしています。社員の表に主キーが置かれていません。そのうえ社員の番号を外部キーにしました。その番号を主とする表が在りません。指す先が無く、外部キーになれません。二か所が同時にずれています。
- 社員の表の部署の番号を主キーにするとします。同じ部署には、何人もの社員が属します。だからその列は重複してしまいます。重複する列は、行を一つに定められません。そのうえ外部キーの置き方も逆でした。主キーになれない列です。
この問題に関係する言葉
- 外部キー
出典:平成25年度 春期 ITパスポート試験(特別措置試験) 問55
同じ単元をまとめて解くならデータベースへ。
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)