平成28年度 春期 データベーススペシャリスト試験 午前II 問4
2025年6月30日
【問題4】
部、課、係の階層関係から成る組織のデータモデルとして、モデルA~Cの三つの案が提起された。これらに対する解釈として、適切なものはどれか。組織階層における組織の位置を組織レベルと呼ぶ。組織間の相対関係は、親子として記述している。ここで、モデルの表記にはUMLを用い、{階層} は組織の親と子の関連が循環しないことを指定する制約記述である。
新しい組織レベルを設ける場合、どのモデルも変更する必要はない。
どのモデルも、一つの子組織が複数の親組織から管理される状況を記述できない。
モデルBを関係データベース上に実装する場合、子の組織コードを外部キーとする。
モデルCでは、組織の親子関係が循環しないように制約を課す必要がある。
【解説】
組織の階層構造を表現するデータモデルとして、モデルA~Cが提案されています。各モデルの特徴と、選択肢の適切性を以下に解説します。
モデルA
特徴: 部、課、係といった組織レベルごとに別々のクラス(エンティティ)を定義しています。
新しい組織レベルの追加: 新たな組織レベル(例:事業部やチーム)を追加する場合、新しいクラスを定義する必要があり、モデルの変更が必要です。
モデルB
特徴: 組織を単一のクラスで表現し、親子関係を自己参照で定義しています。多重度は「0..1 対 *」となっています。
新しい組織レベルの追加: 組織レベルに関係なく、同じクラス内で表現できるため、モデルの変更は不要です。
関係データベースへの実装: 親子関係を表現するため、子組織が親組織を参照します。したがって、親組織コードを外部キーとして設定します。
モデルC
特徴: モデルBと同様に、組織を単一のクラスで表現し、親子関係を自己参照で定義しています。多重度は「* 対 *」となっています。
新しい組織レベルの追加: モデルの変更は不要です。
親子関係の循環防止: 多重度が「* 対 *」であるため、循環参照(例:AがBの親、BがCの親、CがAの親)や自己参照(例:AがAの親)が発生する可能性があります。これを防ぐために、親子関係が循環しないよう制約({階層})を課す必要があります。
選択肢の検討
ア: 新しい組織レベルを設ける場合、どのモデルも変更する必要はない。
誤り。モデルAでは、新しい組織レベルを追加する際にモデルの変更が必要です。
イ: どのモデルも、一つの子組織が複数の親組織から管理される状況を記述できない。
誤り。モデルCでは、多重度が「* 対 *」であるため、一つの子組織が複数の親組織から管理される状況を記述できます。
ウ: モデルBを関係データベース上に実装する場合、子の組織コードを外部キーとする。
誤り。モデルBを関係データベース上に実装する場合、親組織コードを外部キーとします。
エ: モデルCでは、組織の親子関係が循環しないように制約を課す必要がある。
正しい。モデルCでは、組織の親子関係が循環しないように制約を課す必要があります。
【答え】
エ: モデルCでは、組織の親子関係が循環しないように制約を課す必要がある。
出典:平成28年度 春期 データベーススペシャリスト試験 午前II 問4