データベーススペシャリスト試験 2019年 午前203


部課, 係の階層関係から成る組織のデータモデルとして, モデルA~Cの三つの案が提出された。これらに対する解釈として, 適切なものはどれか。組織階層における組織の位置を組織レベルと呼ぶ。組織間の階層関係は, 親子として記述している。親と子は循環しないものとする。ここで, モデルの表記にはUMLを用い, {階層}は組織の親と子の関連が循環しないことを指定する制約記述である。
問題画像
新しい組織レベルを設ける場合, どのモデルも変更する必要はない。
どのモデルも, 一つの子組織が複数の親組織から管轄される状況を記述できない。
モデルBを関係データベース上に実装する場合, 親は子の組織コードを外部キーとする。
モデルCでは, 組織の親子関係が循環しないように制約を課す必要がある。(正解)

解説

組織階層モデルの解釈に関する問題【午前2 解説】

要点まとめ

  • 結論:モデルCでは組織の親子関係が循環しないよう制約を設ける必要があるため、選択肢エが正解です。
  • 根拠:モデルCは連関表で親子関係を表現し、循環を防ぐ制約が明示的に必要となるためです。
  • 差がつくポイント:再帰的自己参照モデル(モデルB)と連関表モデル(モデルC)の違い、循環制約の有無を正確に理解することが重要です。

正解の理由

モデルCは「組織」と「組織構造」という2つのエンティティで親子関係を表現し、親組織コードと子組織コードを連結しています。この構造では、親子関係が循環すると階層構造として成立しないため、循環を防ぐ制約({階層})を設ける必要があります。したがって、選択肢エの「モデルCでは組織の親子関係が循環しないように制約を課す必要がある」が正しい解釈です。

よくある誤解

モデルBの再帰的自己参照で循環制約が暗黙的に管理されていると誤解しがちですが、実際には明示的な制約が必要です。また、親子関係の多重管轄の可否を誤認することも多いです。

解法ステップ

  1. 各モデルの構造を理解する(モデルAは階層ごとにエンティティ分割、モデルBは自己参照、モデルCは連関表)。
  2. 循環制約の意味と必要性を確認する。
  3. 選択肢の内容とモデルの特徴を照合する。
  4. 循環制約が明示的に必要なのはモデルCであることを判断する。
  5. 選択肢エを正解と確定する。

選択肢別の誤答解説

  • ア: 新しい組織レベルを設ける場合、モデルAは新たなエンティティ追加が必要であり、モデルB・Cも属性や構造の変更が必要なため誤り。
  • イ: モデルB・Cともに一つの子組織が複数の親組織を持つことは基本的にできないが、モデルCは連関表で柔軟に表現可能なため誤り。
  • ウ: モデルBの親子関係は親側の組織コードを子側の外部キーとするため、親が子の組織コードを外部キーとするのは誤り。
  • エ: モデルCでは親子関係の循環を防ぐ制約が必要であり、正しい。

補足コラム

組織階層モデルはデータベース設計でよく用いられ、階層構造の表現方法には「階層型モデル」「再帰的自己参照モデル」「連関表モデル」があります。再帰的自己参照は単一テーブルで階層を表現できる一方、連関表モデルは複雑な多対多関係や柔軟な階層管理に適していますが、循環防止の制約が必須です。

FAQ

Q: モデルBの再帰的自己参照で循環は自動的に防げますか?
A: いいえ。循環を防ぐためには明示的な制約やアプリケーション側のチェックが必要です。
Q: モデルCの連関表はどんな場合に有効ですか?
A: 複雑な親子関係や多重階層を柔軟に管理したい場合に有効です。

関連キーワード: 組織階層モデル, 再帰的自己参照, 連関表, UML制約, 階層構造, データベース設計
← 前の問題へ次の問題へ →

©︎2025 情報処理技術者試験対策アプリ