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

平成28年度 春期 午前Ⅱ 問4

データベース設計

UMLに関する問題

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

モデルA~C:

モデルA
[部]                [課]                [係]
部コード 1 ───── * 課コード 1 ───── * 係コード
         親      子         親      子

モデルB
[組織](組織コード,組織レベル)
  自分自身への関連: 親 0..1 ───── * 子   {階層}

モデルC
[組織]                     [組織構造]
組織コード   1 ───── *     親組織コード
組織レベル   (親)
             1 ───── *     子組織コード
             (子)

モデルA: 部(部コード)`1`“親” ― `*`“子” 課(課コード)`1`“親” ― `*`“子” 係(係コード)。

モデルB: 組織(組織コード,組織レベル)の自己関連。親側の多重度 `0..1`,子側の多重度 `*`。制約 {階層} が付く。

モデルC: 組織(組織コード,組織レベル)と組織構造(親組織コード,子組織コード)が2本の関連で結ばれる。1本は組織側が“親”で多重度 `1`,組織構造側が `*`。もう1本は組織側が“子”で多重度 `1`,組織構造側が `*`。

答えと解説を見る

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

解説

モデルCには循環を禁じる制約がないので、別に課す必要があります。

モデルCは、組織と、親組織コードと子組織コードの組を記録する組織構造に分けて、親子関係を表します。組織構造には任意の組を何件でも登録できるので、AがBの親、BがAの親、という組を両方入れることもでき、親子関係が循環してしまいます。モデルBには{階層}という循環しないことを指定する制約が付いていますが、モデルCにはそれがありません。したがってモデルCを使う場合は、循環しないように別に制約を課す必要があります。組織レベルを属性でもつか、クラスで分けるか、親子の組を別のクラスにするかで、それぞれのモデルの強みと弱みを比べるのがこの問いの読み方です。

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

この問題の用語

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

同じ用語が出る問題

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