過去問解きまくり研究所 ホーム

平成31年度 春期 午前Ⅱ 問3

データベース設計

UMLに関する問題

部,課,係の階層関係から成る組織のデータモデルとして,モデルA~Cの三つの案が提出された。これらに対する解釈として,適切なものはどれか。組織階層における組織の位置を組織レベルと呼ぶ。組織間の階層関係は,親子として記述している。親と子は循環しないものとする。ここで,モデルの表記にはUMLを用い,{階層}は組織の親と子の関連が循環しないことを指定する制約記述である。

モデルA~C:

モデルA
  クラス「部」(属性:部コード)
  クラス「課」(属性:課コード)
  クラス「係」(属性:係コード)
  部 1 ―――― * 課   (部側のロール名:親,課側のロール名:子)
  課 1 ―――― * 係   (課側のロール名:親,係側のロール名:子)

モデルB
  クラス「組織」(属性:組織コード,組織レベル)
  組織から組織自身への関連(一方の端:ロール名 親・多重度 0..1,他方の端:ロール名 子・多重度 *)
  この関連に制約 {階層}

モデルC
  クラス「組織」(属性:組織コード,組織レベル)
  クラス「組織構造」(属性:親組織コード,子組織コード)
  組織 1 ―――― * 組織構造   (組織側のロール名:親)
  組織 1 ―――― * 組織構造   (組織側のロール名:子)
答えと解説を見る

✓ これが正解エモデルCでは,組織の親子関係が循環しないように制約を課す必要がある。

解説

親子を組で記録するモデルCには、循環を防ぐ制約を別に課す必要があります。

三つのモデルが、親子関係をどこで表しているかを軸に比べます。モデルCでは、組織どうしの親子を組織構造というクラスに、親組織コードと子組織コードの組として記録します。この形はどの組織とどの組織でも組にできるので、子をたどっていくと自分に戻ってくるような組合せも記録できてしまいます。モデルBでは親子の関連に{階層}の制約が付いていて循環しないことが指定されていますが、モデルCにはその指定がありません。そのため、モデルCでは循環を防ぐ制約を別に課す必要があります。親子を別のクラスで組として持つ設計は柔軟な反面、関連そのものに付けていた制約を自分で補わなければならない、と押さえておくと判断しやすくなります。

ほかの選択肢はなぜ違うのか

この問題の用語

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

同じ用語が出る問題

この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)