DBデータベーススペシャリスト試験 午前Ⅱ

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

問題文と選択肢を読んで答えを考えてから、下の「正解と解説を見る」で確認しましょう。

問題

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

選択肢

  1. ア
    新しい組織レベルを設ける場合,どのモデルも変更する必要はない。
  2. イ
    どのモデルも,一つの子組織が複数の親組織から管轄される状況を記述できない。
  3. ウ
    モデルBを関係データベース上に実装する場合,親は子の組織コードを外部キーとする。
  4. エ
    モデルCでは,組織の親子関係が循環しないように制約を課す必要がある。
解き方のヒントを見る

示された条件と推測を区別する

組織階層のデータモデルを考えるときは、示された条件と、自分が補っている前提を分けて整理しましょう。身近な組織の常識をそのまま当てはめず、解釈の根拠がどこにあるかを確かめることに集中します。

この問題で問われていること

この問題では、解釈に使う前提が、与えられた情報に基づいているかという一点に注目してください。考えを進める途中で補った事情があれば、それを明示された条件と混同していないか、いったん立ち止まって点検しましょう。

視点

解釈の土台となる条件と、理解を助けるために自分で想定した事情は分けて扱います。考えた内容ごとに根拠を振り返り、想定をいつの間にか確定した条件として扱っていないか確認しましょう。

確認ポイント

  • 解釈に用いた前提の根拠を確認したか
  • 身近な組織の常識を前提として補っていないか
  • 自分の想定を明示された条件と混同していないか
正解と解説を見る

正解

エ

解説

正解はエです。モデルCの組織構造は、組織と親側・子側の二つの関連で結ばれた通常のクラスです。多重度だけでは親子関係の循環を防げないため、循環を禁止する制約が必要です。

理由

モデルCでは、組織構造クラスが親組織コードと子組織コードを属性として持ち、組織クラスと親側・子側の二つの関連で結ばれています。各組織構造のインスタンスには親と子がそれぞれ一つ対応しますが、この多重度では循環を禁止できません。例えば、Xを親・Yを子とする関係と、Yを親・Xを子とする関係を同時に持ててしまいます。設問の条件を満たすには、循環を禁止する制約を課す必要があるので、エが適切です。

比較

モデルAは部・課・係を別々のクラスとして定義しているため、新しい組織レベルにはクラスと関連の追加が必要です。モデルBは組織の自己関連で親子関係を表し、親の多重度は0..1なので、一つの子が持てる親は最大一つです。また、{階層}で循環を禁止しています。モデルCは一つの組織に複数の組織構造を対応させられるため、一つの子に複数の親を記述できます。組織構造は通常のクラスとして描かれており、関連の線に破線でつなぐUMLの関連クラス記法は使われていません。

選択肢ア

これは不正解だよ。モデルAでは、部・課・係をそれぞれ別のクラスとして定義している。新しい組織レベルを追加するには、そのレベルのクラスと関連を加える必要がある。モデルBとCは組織レベルを属性として持つが、「どのモデルも変更する必要はない」とはいえない。

選択肢イ

これは不正解だよ。モデルCの組織構造クラスには、親組織コードと子組織コードが属性として示されている。子側の組織から組織構造への多重度は*なので、同じ子組織コードに異なる親組織コードを対応させた行を複数持てる。したがって、複数の親による管轄を記述できる。

選択肢ウ

これは不正解だよ。モデルBでは、一つの子組織に対する親組織は0又は1であり、一つの親組織は複数の子組織を持てる。通常の関係データベースへの実装では、子の行に親の組織コードを外部キーとして持たせる。選択肢は、外部キーを持つ側と参照する組織コードが逆である。

選択肢エ(正解)

これは正解だよ。モデルCでは、組織構造クラスの親組織コードと子組織コードで親子関係を表す。しかし、図の多重度だけでは、組織Xを組織Yの親とし、組織Yを組織Xの親とする循環も許される。設問の「親と子は循環しない」という条件を満たすため、循環を禁止する制約が必要である。

学習のポイント

クラスの属性、関連の多重度、循環を禁止する制約を区別し、それぞれが表す条件を理解しましょう。

出典:独立行政法人 情報処理推進機構(IPA)平成31年度春期 データベーススペシャリスト試験 午前Ⅱ 問3(公式資料:問題冊子(PDF) / 解答例)

関連する過去問一覧

IPA Advancedは非公式の学習サイトです。解説にはAIによる補助生成を含む場合があります。公式の問題冊子・解答例・採点講評を優先し、誤りは確認後に訂正します。運営・編集方針