ホーム > データベーススペシャリスト試験 > 2021年
データベーススペシャリスト試験 2021年 午前2 問02
部, 課, 係の階層関係から成る組織のデータモデルとしてモデルA~Cの三つの案が提出された。これらに対する解釈として適切なものはどれか。組織階層における組織の位置を組織レベルと呼ぶ。組織間の階層関係は、親子として記述している。親と子は循環しないものとする。ここで、モデルの表記にはUMLを用い,{階層}は組織の親と子の関連が循環しないことを指定する制約記述である。

ア:新しい組織レベルを設ける場合どのモデルも変更する必要はない。どのモデルも一つの子組織が複数の親組織から管轄される状況を記述できない。
イ:どのモデルも、一つの子組織が複数の親組織から管轄される状況を記述できない。
ウ:モデルBを関係データベース上に実装する場合親は子の組織コードを外部キーとする。
エ:モデルCでは組織の親子関係が循環しないように制約を課す必要がある。(正解)
解説
組織階層のデータモデルに関する問題【午前2 解説】
要点まとめ
- 結論:モデルCでは組織の親子関係が循環しないように制約を設ける必要がある。
- 根拠:モデルCは組織と組織構造を分離し、親子関係を別エンティティで管理するため、循環制約を明示的に設けなければならない。
- 差がつくポイント:自己参照関係の循環禁止制約の理解と、各モデルの親子関係表現方法の違いを正確に把握することが重要。
正解の理由
モデルCは「組織」と「組織構造」を別々のエンティティとして表現し、親組織コードと子組織コードで親子関係を管理します。この構造では、親子関係の循環(例:AがBの親で、BがAの親になる)が発生しやすいため、循環を防ぐ制約を明示的に設ける必要があります。問題文でも「親と子は循環しないものとする」とあり、モデルCにおいてはこの制約を設けることが適切と判断されます。
よくある誤解
モデルBの自己参照関係に循環制約が不要と誤解しがちですが、循環禁止はどのモデルでも必要な概念です。モデルAは階層が固定的なので循環の心配が少ないと考えられますが、モデルCは明示的に制約を設ける必要があります。
解法ステップ
- 各モデルの親子関係の表現方法を理解する。
- 循環禁止制約の意味と必要性を確認する。
- モデルCの構造(組織と組織構造の分離)に注目する。
- 循環が起こりうるモデルに制約が必要と判断する。
- 選択肢の内容と照合し、最も適切なものを選ぶ。
選択肢別の誤答解説
- ア: 「新しい組織レベルを設ける場合どのモデルも変更不要」は誤り。モデルAやBは属性追加が必要な場合が多い。
- イ: 「どのモデルも複数親を記述できない」は誤り。モデルCは多対多の親子関係を表現可能。
- ウ: 「モデルBで親は子の組織コードを外部キーとする」は誤り。自己参照関係では子が親の組織コードを外部キーにするのが一般的。
- エ: 「モデルCでは親子関係の循環禁止制約が必要」は正解。
補足コラム
組織階層モデルは、階層構造の表現方法により「固定階層モデル」「自己参照モデル」「橋渡しテーブルモデル(多対多)」などに分類されます。モデルAは固定階層、モデルBは自己参照、モデルCは橋渡しテーブルを用いた多対多関係の表現です。循環禁止制約は階層構造の整合性を保つために不可欠です。
FAQ
Q: なぜモデルCで循環禁止制約が特に重要なのですか?
A: モデルCは親子関係を別テーブルで管理し、多対多の関係を許すため、循環が発生しやすく制約が必須です。
A: モデルCは親子関係を別テーブルで管理し、多対多の関係を許すため、循環が発生しやすく制約が必須です。
Q: モデルBの自己参照関係で循環は起こらないのですか?
A: 起こり得ますが、問題文ではモデルCに制約が必要と明示されているため、選択肢としてはモデルCが正解です。
A: 起こり得ますが、問題文ではモデルCに制約が必要と明示されているため、選択肢としてはモデルCが正解です。
関連キーワード: 組織階層, UML, データモデル, 親子関係, 循環禁止制約, 自己参照, 多対多関係, 階層構造