平成25年度 春期 応用情報技術者試験 午前 問28
“プログラマは全て社員であり,社員の約10%を占める。社員は社員番号と氏名をもち,職種がプログラマである場合は,使用できるプログラム言語を一つ以上もつ。”という状況を記録するデータベース設計案として,適切なものはどれか。ここで,実線の下線は主キーを,破線の下線は外部キーを表す。

キーボード:1〜4 で解答 → 次の問題 ← 前の問題
正解と解説を見る
解答する前に解説を開いたので、この問題は「見て解いた」として記録します(正解数には入りません)。
正解:エ
設計のポイントは次の2点です。
- プログラマは使用できるプログラム言語を 一つ以上(複数) もつ。
- プログラマは社員の約10%なので,社員表にプログラム言語の列を設けると多くの行が空値になる。
したがって,社員表とは別にプログラマ表を作り,{社員番号,プログラム言語} を主キー,社員番号を社員表への外部キーとするのが適切です。
-
ア: 社員(社員番号,氏名,職種,プログラム言語)
誤り。プログラマは複数のプログラム言語をもつので,1行に1つしか格納できず,繰返し項目が発生します。また,社員の約90%はプログラマではないため,プログラム言語の列が空値ばかりになります。 -
イ: 社員(社員番号,氏名,プログラム言語)
誤り。アと同様に,複数のプログラム言語を記録できず,プログラマ以外の社員ではプログラム言語が空値になります。 -
ウ: 社員(社員番号,氏名),プログラマ(社員番号,プログラム言語)※社員番号が外部キーのみ
誤り。プログラマ表の主キーが定義されていません。1人のプログラマが複数の言語をもつので,社員番号だけでは行を一意に識別できず,主キーには {社員番号,プログラム言語} の組が必要です。 -
エ: 社員(社員番号,氏名),プログラマ(社員番号,プログラム言語)※{社員番号,プログラム言語} が主キー
正しい。プログラマ表は社員番号とプログラム言語の組で行を一意に識別でき,社員番号は社員表を参照する外部キーにもなっています。複数言語を記録でき,プログラマ以外の社員に空値も生じません。
答え
エ: 社員(社員番号,氏名),プログラマ(社員番号,プログラム言語)※{社員番号,プログラム言語} が主キー
出典:平成25年度 春期 応用情報技術者試験 午前 問28