情報セキュリティスペシャリスト平成25年春期 午前Ⅰ 問11

問11

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

分類

テクノロジ系 » データベース » データベース設計

正解

解説

プログラマは社員であるため、1つ以上の"プログラム言語"に加えて"社員番号"と"氏名"の属性を記録しなくてはなりません。したがって"社員番号"、"氏名"、"プログラム言語"の属性をもつプログラマ表は次のようになります。
am1/28_1.gif/image-size:469×82
この状態では、"プログラム言語"が繰り返し項目になっているため第1正規化を行って重複項目を排除します。
am1/28_2.gif/image-size:259×123
この状態で1つのレコードを特定するには"社員番号"と"プログラム言語"が必要なのでこの2つを組み合わせた複合キーが主キーになります。
am1/28_3.gif/image-size:259×122
さらに"氏名"は"社員番号"に関数従属しているので、"氏名"列を別表に分離する第2正規化を行います。
このように順を追って完成した適切なデータベース設計が「エ」の表です。正解以外の表では、プログラム言語の複数記録に対応できません。
am1/28_4.gif/image-size:361×122
© 2014-2024 情報処理安全確保支援士ドットコム All Rights Reserved.

Pagetop