平成29年度 春期 午前Ⅱ 問3
データベース設計
このような場合のデータモデル
人の健康状態の検査では,検査項目が人によって異なるだけでなく,あらかじめ決まっていないことも多い。このような場合のデータモデルとして,最も適切なものはどれか。ここで,検査項目の標準値は,検査項目ごとに最新の値だけを保持し,計測値は計測日時とともに保持する。また,モデルの表記にはUMLを用いる。
選択肢は原典ではUMLのクラス図(各肢を文字に書き写した。[クラス名]属性/属性,多重度つきの関連)。
- ア(原典は図。[人]識別 1 ──── * [検査項目]項目名/標準値/計測日時/計測値)
- イ(原典は図。[人]識別 1 ──── * [検査値]計測日時/計測値 * ──── 1 [検査項目]項目名/標準値)
- ウ(原典は図。[人]識別 * ──── * [検査値]計測日時/計測値。その関連に点線で関連クラス[検査項目]項目名/標準値 が付く)
- エ(原典は図。[人]識別 1 ──── * [検査項目]項目名/標準値 * ──── 1 [検査値]計測日時/計測値)
答えと解説を見る
✓ これが正解イ(原典は図。[人]識別 1 ──── * [検査値]計測日時/計測値 * ──── 1 [検査項目]項目名/標準値)
解説
人と検査項目の間に検査値を置き、計測ごとに1件ずつ持たせます。
見分ける軸は、検査項目の標準値と、人ごとの計測値をどこに持たせるかです。標準値は検査項目ごとに最新の値を一つだけ持つので、検査項目は人と切り離した独立のクラスにします。一方、計測値は、ある人がある検査項目をいつ測ったかごとに生じるので、計測日時と計測値を持つ検査値を、人と検査項目の両方に結び付けます。正解のUMLのクラス図は、人1に対して検査値が多、検査値多に対して検査項目が1という形で、まさにこの持たせ方になっています。検査項目が人によって異なり、前もって決まっていなくても、検査項目に行を足すだけで対応できます。マスタにあたる値と、出来事ごとに生じる値を別のクラスに分けるのが見分け方です。
ほかの選択肢はなぜ違うのか
- ア(原典は図。[人]識別 1 ──── *…:一つの検査項目のクラスに、標準値と計測日時・計測値が同居しています。計測のたびに標準値が書き写されて重複し、検査項目ごとに最新の値を一つだけ持つという条件を守れません。
- ウ(原典は図。[人]識別 * ──── *…:検査項目が、人と検査値の組ごとに付く関連クラスになっています。これでは標準値が組の数だけ現れて重複します。また、一つの計測値が複数の人に結び付く多対多の形も実態と合いません。
- エ(原典は図。[人]識別 1 ──── *…:検査項目が人に従属し、さらに複数の検査項目が一つの検査値を指す向きになっています。標準値は人ごとに重複し、検査項目ごとに計測値を一つしか持てないので、計測日時ごとの記録も残せません。
出典:平成29年度 春期 データベーススペシャリスト試験 午前Ⅱ 問3
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)