IPA過去問ドリル

平成29年度 春期 データベーススペシャリスト試験 午前Ⅱ 問3

テクノロジ/データベース

人の健康状態の検査では,検査項目が人によって異なるだけでなく,あらかじめ決まっていないことも多い。このような場合のデータモデルとして,最も適切なものはどれか。ここで,検査項目の標準値は,検査項目ごとに最新の値だけを保持し,計測値は計測日時とともに保持する。また,モデルの表記にはUMLを用いる。

平成29年度 春期 データベーススペシャリスト試験 午前Ⅱ 問3の図

出典:平成29年度 春期 データベーススペシャリスト試験 午前Ⅱ 問3

正解:イ

解説

検査項目があらかじめ決まっておらず人によって異なる状況では,検査項目をあらかじめ固定した列として表に持たせることはできません。そこで,検査項目そのものをエンティティ(マスタ)として独立させ,検査項目ごとに最新の標準値だけを保持し,個々の計測結果(計測日時,計測値)は別のエンティティとして保持することで,項目の追加や標準値の更新にも柔軟に対応できます。イのモデルは,“人”と“検査値”が1対多,“検査値”と“検査項目”が多対1で関連付けられており,“検査項目”は項目ごとに一つの標準値だけを保持するマスタとして機能し,“検査値”は計測の都度追加される履歴データとして機能するため,設問の要件を満たします。

選択肢ごとの解説

  • 誤り。“検査項目”に項目名・標準値と計測日時・計測値を同居させているため,同じ項目について測定するたびに標準値の列も重複して保持されることになり,「標準値は項目ごとに最新の値だけを保持する」という要件をシンプルに満たせません。
  • 正しい。“検査値”(計測日時,計測値)が人と検査項目の間の履歴データとして機能し,“検査項目”(項目名,標準値)は項目ごとに一つだけ存在するマスタとなるため,最新の標準値を項目ごとに1件だけ保持しつつ,計測値は計測日時とともに何度でも記録できます。
  • 誤り。“人”と“検査値”を直接の多対多関連とし,“検査項目”をその関連の修飾子(qualifier)のような位置に置く構造になっており,検査項目が独立したマスタとして標準値を一意に保持する構造になっていません。
  • 誤り。“人”と“検査項目”が1対多で関連付けられており,検査項目(項目名,標準値)が人ごとに個別に保持される形になってしまうため,項目マスタとしての標準値が人の数だけ重複してしまい,「項目ごとに最新の値だけ保持する」という要件に反します。
データベーススペシャリストの過去問を演習モードで解く