平成23年度 特別 午前Ⅱ 問3
データベース設計
このような場合の概念データモデル
人の健康状態の検査では,検査項目が人によって異なるだけでなく,あらかじめ決まっていないことも多い。このような場合の概念データモデルとして,最も適切なものはどれか。ここで,検査項目は標準値をもち,適宜見直しが発生するものとする。また,モデルの表記には UML を用いる。
選択肢:
- ア人(識別) 1 ―― * 検査項目(項目名,標準値,計測日時,計測値)
- イ人(識別) 1 ―― * 検査値(計測日時,計測値) * ―― 1 検査項目(項目名,標準値)
- ウ人(識別) * ―― * 検査値(計測日時,計測値)。この関連に破線で関連クラス 検査項目(項目名,標準値)が付く
- エ人(識別) 1 ―― * 検査項目(項目名,標準値) * ―― 1 検査値(計測日時,計測値)
答えと解説を見る
✓ これが正解イ人(識別) 1 ―― * 検査値(計測日時,計測値) * ―― 1 検査項目(項目名,標準値)
解説
人と検査項目の間に計測の記録を置き、標準値は検査項目にもたせます。
この概念データモデルで見るべき軸は、標準値をどこにもたせるかと、計測のたびに生じる値をどこに置くかです。検査項目は標準値をもち、見直しも起きるので、人とは独立した一つのクラスにしておけば、見直しは検査項目の1か所を直すだけで済みます。一方、計測日時と計測値は、ある人をある検査項目で測るたびに生まれます。そこで人と検査項目の間に検査値を置き、人1に対して検査値は多、検査項目1に対して検査値は多、とつなぐ形が合います。人ごとに測る項目が違っても、検査値を足すだけで表せます。マスタにあたる情報と、出来事ごとの記録を別のクラスに分けると、見直しにも項目の追加にも強いモデルになります。
ほかの選択肢はなぜ違うのか
- ア人(識別) 1 ―― * 検査項目(項目…:検査項目に標準値と計測値をまとめて人にぶら下げているので、同じ項目の標準値が人の数だけ重複します。標準値を見直すたびに多くの箇所を直す必要があり、条件に合いません。
- ウ人(識別) * ―― * 検査値(計測日…:人と検査値を多対多にし、その関連に検査項目を付けています。検査値は1回の計測の記録なので複数の人に共有されるものではなく、標準値も人と検査値の組ごとに重複してしまいます。
- エ人(識別) 1 ―― * 検査項目(項目…:検査項目が人ごとに作られて標準値が重複するうえ、多数の検査項目が一つの検査値を共有する形になっています。計測の記録と項目の向きが逆で、計測のたびの値を表せません。
出典:平成23年度 特別 データベーススペシャリスト試験 午前Ⅱ 問3
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)