IPA過去問ドリル

令和3年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問2

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

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

令和3年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問2の図

出典:令和3年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問2

正解:エ

解説

モデルAは部・課・係という固定的な3階層のエンティティで構成され,各子エンティティから見た親側の多重度が1に限定されているため,構造上循環は起こり得ません。モデルBは組織を自己参照するモデルであり,{階層}という制約記述によって親子の関連が循環しないことが明示的に指定されています。一方,モデルCは組織構造という橋渡し用のエンティティを介して親子関係を汎用的に表現していますが,{階層}のような循環を禁止する制約が付与されていないため,構造上は任意の組織同士を親子として結び付けることができてしまい,循環(例えば組織Xの子が組織Y,組織Yの子が組織Xとなるような閉路)を防ぐには別途制約を課す必要があります。

選択肢ごとの解説

  • 誤り。モデルAのように部・課・係という固定階層のエンティティで構成されたモデルに新しい組織レベルを追加する場合,新たなエンティティや関連の追加といった構造自体の変更が必要になるため,「どのモデルも変更する必要はない」とはいえません。
  • 誤り。モデルCの組織構造テーブルは親組織コードと子組織コードを共に保持する橋渡し構造であり,同一の子組織コードに対して異なる親組織コードをもつ複数行を記述することを構造上排除していないため,モデルによっては複数の親組織から管轄される状況を表現できる余地があります。
  • 誤り。モデルBは組織エンティティの自己参照であり,実装する場合は子(自分自身)の側が親の組織コードを外部キーとして保持する形になります。設問の「親は子の組織コードを外部キーとする」は参照の向きが逆です。
  • 正しい。モデルCには{階層}のような親子関係の循環を禁止する制約記述が付与されていないため,組織の親子関係が循環しないようにするには,モデルCでは別途制約を課す必要があります。
データベーススペシャリストの過去問を演習モードで解く