DBデータベーススペシャリスト試験 午前Ⅱ
令和3年度秋期 データベーススペシャリスト 午前Ⅱ 問2
問題文と選択肢を読んで答えを考えてから、下の「正解と解説を見る」で確認しましょう。
問題

選択肢
- ア新しい組織レベルを設ける場合,どのモデルも変更する必要はない。
- イどのモデルも,一つの子組織が複数の親組織から管轄される状況を記述できない。
- ウモデルBを関係データベース上に実装する場合,親は子の組織コードを外部キーとする。
- エモデルCでは,組織の親子関係が循環しないように制約を課す必要がある。
解き方のヒントを見る
親子関係を読むための視点
組織階層を考えるときは、要素同士のつながり方と、上位・下位の関係に付随する制約を切り分けて整理しましょう。用語の印象だけで判断せず、関係の範囲に注目します。
この問題で問われていること
この問題では、階層上の位置関係そのものではなく、親子として結び付いた要素に対して、どの範囲まで関係や制約が及ぶのかを確認する観点に絞って考えてください。
視点
階層モデルでは、要素の所属関係、関係の向き、適用される範囲を分けて捉えると、説明同士の違いを比較しやすくなります。
確認ポイント
- 親と子の関係を、単なる並び順と混同していないか確認する
- 制約がどの要素や関係に及ぶ説明なのかを読み取る
- 関係の向きと適用範囲が一貫しているかを見直す
正解と解説を見る
正解
エ
解説
モデルCは組織と組織構造を分け、親組織コードと子組織コードで階層関係を表します。そのため、親子関係の循環を防ぐ制約を別途課す必要がある。
モデルCの理由
モデルCでは、組織構造が親組織コードと子組織コードを持ち、組織間の親子関係を別の構造として記録する。ただし、図に示された関連だけでは、Aの子孫が再びAの親になるような循環を自動的に排除できないため、循環禁止の制約が必要です。
モデル間の比較
モデルAは部・課・係という組織レベルをクラスとして固定的に表すので、レベル追加時にはモデル変更が必要になる。モデルBは組織自身を親子関係で結ぶ。関係データベースでは、子側が親の組織コードを参照する形で表すのが基本であり、親子の向きを取り違えないことが重要です。
選択肢ア
これは不正解だよ。モデルAは部、課、係をそれぞれ別のクラスとして表しているため、新しい組織レベルを追加するにはクラスや関連の追加・変更が必要になる。モデルBやCも、採用する構造や属性の意味を変更する場合があり、どのモデルも変更不要とはいえない。
選択肢イ
これは不正解だよ。モデルCの組織構造は親組織コードと子組織コードの組で関係を記録できるため、同じ子組織に複数の親組織を対応させる表現が可能である。したがって、どのモデルも複数の親を記述できないという説明は誤りである。
選択肢ウ
これは不正解だよ。モデルBでは組織自身が親子関係を持つので、関係データベースでは通常、子の行が親の組織コードを外部キーとして参照する。親を子の組織コードにするのではなく、子から親を参照する向きで実装する点が誤っている。
選択肢エ(正解)
これは正解だよ。モデルCは親組織コードと子組織コードを組織構造として記録するが、関連の組合せだけでは親子関係の循環を防げない。問題文の前提である親子非循環を満たすには、循環しないよう明示的な制約を課す必要がある。
学習のポイント
自己参照型の組織階層では、関連表の表現と循環禁止制約を区別して考える。
出典:独立行政法人 情報処理推進機構(IPA)令和3年度秋期 データベーススペシャリスト試験 午前Ⅱ 問2(公式資料:問題冊子(PDF) / 解答例)
関連する過去問一覧
IPA Advancedは非公式の学習サイトです。解説にはAIによる補助生成を含む場合があります。公式の問題冊子・解答例・採点講評を優先し、誤りは確認後に訂正します。運営・編集方針