データベーススペシャリスト試験 2023年 午前205


従業員番号と氏名と使用できるプログラム言語を管理するために、“従業員”表及び“プログラム言語”表を設計する。“プログラム言語を2種類以上使用できる従業員がいる。プログラム言語を全く使用できない従業員もいる。”という状況を管理する“プログラム言語”表の設計として、適切なものはどれか。ここで、実線の下線は主キーを表す。
〔従業員表〕 従業員(従業員番号, 氏名)
プログラム言語(氏名, プログラム言語)
プログラム言語(従業員番号, プログラム言語)
プログラム言語(従業員番号, プログラム言語)
プログラム言語(従業員番号プログラム言語)(正解)

解説

従業員とプログラム言語の管理設計【午前2 解説】

要点まとめ

  • 結論:プログラム言語表は「従業員番号」と「プログラム言語」の複合主キーで設計するのが適切です。
  • 根拠:1人の従業員が複数の言語を使い、言語を使わない従業員も存在するため、複合主キーで多対多の関係を正確に表現します。
  • 差がつくポイント:主キーの選定と多対多関係の理解、氏名を主キーにしないことが重要です。

正解の理由

正解はエの「プログラム言語(従業員番号、プログラム言語)」です。
従業員番号は従業員表の主キーで一意に従業員を識別し、プログラム言語は使用可能な言語を示します。
複合主キーにすることで、1人の従業員が複数の言語を持つことを表現でき、言語を使わない従業員はプログラム言語表にレコードがないことで管理可能です。

よくある誤解

氏名を主キーにすると重複や変更時の問題が起きやすく、プログラム言語を単独主キーにすると1人の複数言語使用を表現できません。

解法ステップ

  1. 従業員表の主キーは「従業員番号」であることを確認する。
  2. プログラム言語は複数登録可能なため、多対多の関係を考える。
  3. 多対多関係は中間テーブルで管理し、複合主キーを設定する。
  4. 複合主キーは「従業員番号」と「プログラム言語」の組み合わせにする。
  5. 言語を使わない従業員はプログラム言語表にレコードがないことで表現可能と理解する。

選択肢別の誤答解説

  • ア: 氏名を主キーにするのは誤り。氏名は重複や変更の可能性があり主キーに不適切。
  • イ: プログラム言語を主キーにすると、1言語につき1レコードしか登録できず複数言語使用を表現できない。
  • ウ: 従業員番号のみを主キーにすると、1人に複数言語を登録できず不適切。
  • エ: 従業員番号とプログラム言語の複合主キーで多対多関係を正しく管理できる。

補足コラム

多対多の関係を管理する際は、中間テーブルを設けて複合主キーを設定するのが基本です。
また、主キーには変更や重複のリスクが少ない識別子(IDなど)を使うことが推奨されます。

FAQ

Q: なぜ氏名を主キーにしてはいけないのですか?
A: 氏名は重複する可能性があり、また変更されることもあるため、主キーとしての一意性と安定性を欠きます。
Q: プログラム言語を単独で主キーにできない理由は?
A: 1つの言語を複数の従業員が使うため、言語単独では一意にレコードを特定できません。

関連キーワード: 主キー, 複合主キー, 多対多関係, データベース設計, 正規化, 中間テーブル
← 前の問題へ次の問題へ →

©︎2025 情報処理技術者試験対策アプリ