データベース設計(全65問中28問目)

"プログラマは全て社員であり,社員の約10%を占める。社員は社員番号と氏名をもち,職種がプログラマである場合は,使用できるプログラム言語を一つ以上もつ。"という状況を記録するデータベース設計案として,適切なものはどれか。ここで,実線の下線は主キーを,破線の下線は外部キーを表す。

出典:平成25年春期 問28

  • 社員(社員番号,氏名,職種,プログラム言語)
  • 社員(社員番号,氏名,プログラム言語)
  • 社員(社員番号,氏名)
    プログラマ(社員番号,プログラム言語)
  • 社員(社員番号,氏名)
    プログラマ(社員番号プログラム言語)
正解 問題へ
分野:テクノロジ系
中分類:データベース
小分類:データベース設計
解説
プログラマは社員であるため、1つ以上の"プログラム言語"に加えて"社員番号"と"氏名"の属性を記録しなくてはなりません。したがって"社員番号"、"氏名"、"プログラム言語"の属性をもつプログラマ表は次のようになります。
28_1.png
この状態では、"プログラム言語"が繰り返し項目になっているため第1正規化を行って重複項目を排除します。
28_2.png
この状態で1つのレコードを特定するには"社員番号"と"プログラム言語"が必要なのでこの2つを組み合わせた複合キーが主キーになります。
28_3.png
さらに"氏名"は"社員番号"に関数従属しているので、"氏名"列を別表に分離する第2正規化を行います。
このように順を追って完成した適切なデータベース設計が「エ」の表です。正解以外の表では、プログラム言語の複数記録に対応できません。
28_4.png

Pagetop