ITパスポート 平成29年度春期午前問69

午前問69

ある会社の社員の情報処理技術者試験の受験状況の一部を次に示す。この表を関係データベースで管理するために、二つの表に分割する方法として、適切なものはどれか。ここで、この会社には同姓同名の社員がいるものとする。
『情報処理過去問.com』からiPhoneアプリがリリースされました!!

正解

解説

元表の列は「社員ID・社員名・生年月日・試験種別・試験日・合否」です。同姓同名の社員がいるため、人を特定するのは社員名ではありません。1人の社員が同じ日に複数の試験を受けない前提より、元表の主キーは{社員ID, 試験日}になります。
第2正規化では、複合キーの一部に関数従属する属性を別表に移します。社員IDが決まれば社員名と生年月日が一意に決まるので、「社員ID → {社員名, 生年月日}」を社員表として分離し、試験に関する項目は受験表にまとめます。両表を関連付けるために社員IDは双方に保持します。これに一致する分割はアです。
ア.
「社員ID・社員名・生年月日」の社員表と、「社員ID・試験種別・試験日・合否」の受験表に分けており、社員ID→{社員名, 生年月日}の従属を同一表にまとめ、社員IDで両表を関連付けられます。正規化の手順に適合しています。
イ.
受験表の識別子として社員名を用いており、同姓同名の社員がいる前提では一意に特定できません。社員IDで関連付ける必要があります。
ウ.
社員表側に試験日が残っており、社員属性と試験属性が混在しています。主キーの一部(社員ID)に従属する属性(社員名・生年月日)だけを社員表に分けるという第2正規化が達成できていません。
エ.
社員ID→{社員名, 生年月日}という従属関係を同一表にまとめておらず、社員の基本情報が分断されています。関数従属のまとまりを保った分割になっていません。
スポンサーリンク







シェアする

  • このエントリーをはてなブックマークに追加

フォローする