本文へスキップ

平成29年度 春期 ITパスポート試験 問69

この問題の解説と、これまでの解答の記録です。

問69
頻出度★★★

ある会社の社員の情報処理技術者試験の受験状況の一部を次に示す。この表を関係データベースで管理するために,二つの表に分割する方法として,適切なものはどれか。ここで,この会社には同姓同名の社員がいるものとする。

社員ID社員名生年月日試験種別試験日合否
0001佐藤 花子1985/4/29ITパスポート2013/4/21合
0002鈴木 一郎1990/11/3基本情報技術者2013/4/21否
0003高橋 二郎1992/2/11ITパスポート2013/4/21否
0001佐藤 花子1985/4/29基本情報技術者2013/10/20合
0003高橋 二郎1992/2/11ITパスポート2013/10/20合
  • 表1
    社員ID社員名生年月日
    表2
    社員ID試験種別試験日合否
  • 表1
    社員ID社員名生年月日
    表2
    社員名試験種別試験日合否
  • 表1
    社員ID社員名生年月日試験日
    表2
    社員ID社員名試験種別合否
  • 表1
    社員ID生年月日試験日
    表2
    社員ID社員名試験種別合否
出典 平成29年度 春期 ITパスポート試験 問69
解説

問 69

  • ア

    正解 元の1枚の表には、社員そのものの情報(社員名・生年月日)と、1回1回の受験の情報(試験種別・試験日・合否)が混在している。社員は何度も受験するので(社員ID 0001の佐藤花子は2013/4/21と2013/10/20の2回など)、1枚のままだと同じ社員名・生年月日が何度も重複して記録され、無駄と更新ミスの原因になる。そこで、社員1人につき1行になる「社員表(社員ID・社員名・生年月日)」と、受験1回につき1行になる「受験表(社員ID・試験種別・試験日・合否)」に分け、両表を社員IDでつなぐ。設問に「同姓同名の社員がいる」とあるので、個人を一意に特定できるのは社員名ではなく社員IDだけであり、受験表側も社員IDで社員表を参照する必要がある。この分割がまさに選択肢アなので、アが適切である。

  • 不正解イ

    受験表側の結び付けに社員IDではなく社員名を使っている。設問は「同姓同名の社員がいる」と明記しており、社員名だけでは誰の受験記録か一意に決められない(別人の同名社員と取り違える)。社員表と正しく対応付けできないため不適切。

  • 不正解ウ

    1回の受験を表す試験種別・試験日・合否を、試験日だけ社員表側へ、試験種別・合否を別表へと分けてしまっている。同じ受験の情報がバラバラになり、どの試験日がどの試験種別・合否に対応するか結び付かない。さらに社員は複数の試験日を持つため、社員表が社員1行に収まらず社員名・生年月日が重複する。不適切。

  • 不正解エ

    社員の属性である社員名と生年月日を別々の表に分けてしまい、しかも生年月日を受験側の試験日と同じ表に入れている。関連する項目のまとまりが崩れ、受験1回分の情報(試験種別・試験日・合否)も試験日だけ切り離されている。項目の割り当てが正しくなく不適切。

ここがポイント
  • 正規化の基本: 1枚の表に混在する「実体(社員)の情報」と「取引・イベント(受験)の情報」を、社員1行の社員表と受験1行の受験表に分け、主キー(社員ID)を外部キーとして両表を関連付ける。
  • 主キーの選び方: 同姓同名がいる場合、社員名では個人を一意に識別できないため社員IDを主キー/結合キーに用いる。1回の受験を表す試験種別・試験日・合否は同じ表にまとめて置く。
用語

解答の記録