IPA過去問ドリル

平成25年度 春期 応用情報技術者試験 午前 問28

テクノロジ/データベース

“プログラマは全て社員であり,社員の約10%を占める。社員は社員番号と氏名をもち,職種がプログラマである場合は,使用できるプログラム言語を一つ以上もつ。”という状況を記録するデータベース設計案として,適切なものはどれか。 (注:本サイトでは原問題の下線(主キー・外部キー)を注記で表しています)

出典:平成25年度 春期 応用情報技術者試験 午前 問28

正解:エ

解説

プログラマは複数のプログラム言語を使用できるため,社員(社員番号,氏名)とプログラマ(社員番号,プログラム言語)に分割し,プログラマ表の主キーを{社員番号,プログラム言語}の組(社員番号は社員表への外部キー)とする設計が,1人が複数言語をもつ関係を正しく表現できます。

選択肢ごとの解説

  • 誤り。社員(社員番号,氏名,職種,プログラム言語)では,複数のプログラム言語をもつプログラマの行が主キー(社員番号)に対して重複してしまい,正しく表現できません。
  • 誤り。プログラム言語の列を社員表にそのまま加えると,1人が複数言語をもつ場合に主キーの一意性が保てなくなります。
  • 誤り。プログラマ表の主キーが社員番号だけでは,1人のプログラマが複数のプログラム言語をもつ場合に行が一意に定まりません。
  • 正しい。プログラマ表の主キーを{社員番号,プログラム言語}とすることで,1人が複数の言語をもつ関係を過不足なく表現できます。
応用情報技術者の過去問を演習モードで解く