組織階層データモデル(UMLクラス図)における再帰関連と制約条件の解釈

組織の階層構造を表現する3つのUMLクラス図(データモデル)の特徴と制約に関する問題です。 モデルCでは、単一の「組織」エンティティ自身に対して「親子」の自己参照(再帰関連: 親0..1対子0..*)が定義されています。再帰関連では、組織Aの親が組織B、組織Bの親が組織Aのような循環参照(ループ)が発生し得るため、親子関係が閉路を作らないように整合性制約({階層}等の制約)を明示的に課す必要があります。したがって、エ の記述が適切です。 モデルAは「部」「課」「係」が個別のクラスとして固定されているため、新たな組織レベル(例: 室、グループ等)を追加する場合はクラス定義や関連の追加・変更が必要となります。 モデルBやモデルCにおいて、親組織側の多重度を 0..* に変更することで、1つの子組織が複数の親組織に所属するマトリクス組織などの状況を表現することが可能です。 モデルBにおいて親と子は1対多の関連(親1に対して子多)であるため、リレーショナルデータベースに実装する場合は「子組織」のテーブル側に「親組織コード」を外部キーとして持たせる必要があります。親が子の組織コードを持つと複数の子を1行に保持できません。

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

組織のデータモデル案(モデルA〜C)
出典平成31年春期 午前Ⅱ
ア
新しい組織レベルを設ける場合,どのモデルも変更する必要はない。
イ
どのモデルも,一つの子組織が複数の親組織から管轄される状況を記述できない。
ウ
モデルBを関係データベース上に実装する場合,親は子の組織コードを外部キーとする。
エ
モデルCでは,組織の親子関係が循環しないように制約を課す必要がある。