令和3年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問2
テクノロジシステム開発技術データベースモデリング記法(UML・DFD・状態遷移)データモデル・E-R/UML・キー
部,課,係の階層関係から成る組織のデータモデルとして,モデルA~Cの三つの案が提出された。これらに対する解釈として,適切なものはどれか。組織階層における組織の位置を組織レベルと呼ぶ。組織間の階層関係は,親子として記述している。親と子は循環しないものとする。ここで,モデルの表記にはUMLを用い,{階層}は組織の親と子の関連が循環しないことを指定する制約記述である。

図の説明テキスト
問2における組織のデータモデルの3つの案を示すUMLクラス図。
・モデルA: 「部」「課」「係」の3つのクラスが横に並んでおり、それぞれ「部コード」「課コード」「係コード」の属性を持つ。部(1, 親)から課(, 子)への関連、課(1, 親)から係(, 子)への関連がある。
・モデルB: 「組織」クラス(属性: 組織コード, 組織レベル)に自己関連があり、親側が「0..1」、子側が「」となっている。この自己関連に対して「{階層}」という制約が記述されている。
・モデルC: 「組織」クラス(属性: 組織コード, 組織レベル)と「組織構造」クラス(属性: 親組織コード, 子組織コード)の間に2本の関連がある。1つは組織側が「1, 親」で組織構造側が「」、もう1つは組織側が「1, 子」で組織構造側が「*」となっている。
解答・解説
正解: エ. モデルCでは,組織の親子関係が循環しないように制約を課す必要がある。
組織の階層構造を表現するデータモデル(モデルA〜C)の特徴を比較して解釈します。
問題文で「親と子は循環しないものとする」とあり、モデルBには自己関連に対して {階層} という循環を防ぐ制約が明記されています。しかし、モデルCの図にはそのような制約が記述されていません。モデルCの「組織構造」クラスは任意の親組織と子組織のペアを登録できる構造となっているため、そのままでは「組織Aが組織Bの親であり、かつ組織Bが組織Aの親である」といった循環関係を作成できてしまいます。したがって、親子の循環を防ぐためには別途制約を課す必要があります。
よって、エが正解となります。
各選択肢の解説
- ア:モデルAは「部」「課」「係」といった特定の組織レベルを独立したクラスとして固定しているため、新しい組織レベル(例:「本部」や「室」など)を設ける場合は、新しいクラスを追加するモデルの変更が必要になります。
- イ:モデルCでは、「組織」クラスの1つのインスタンスが、「組織構造」クラスの「子」側の関連として複数のインスタンスと関連を持つこと(多重度
*)が可能です。つまり、一つの子組織に対して複数の親組織を紐付けることができ、複数の親組織から管轄される状況を記述できます。 - ウ:モデルB(1対多の自己関連)を関係データベースに実装する場合、1対多の関連では「多」側(子側)のテーブルに、「1」側(親側)の主キーを外部キーとして持たせます。したがって、親が子のコードを持つのではなく、子が親の組織コードを外部キーとして持つことになります。