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

選択肢
- ア新しい組織レベルを設ける場合,どのモデルも変更する必要はない。
- イどのモデルも,一つの子組織が複数の親組織から管轄される状況を記述できない。
- ウモデルBを関係データベース上に実装する場合,子の組織コードを外部キーとする。
- エモデルCでは,組織の親子関係が循環しないように制約を課す必要がある。
解き方のヒントを見る
構造と制約の整合性を点検
組織階層を表すデータモデルを考えるときは、要素同士の関係がどの範囲で成り立つかと、階層全体の整合性を保てるかを切り分けて確認しましょう。表現の細部より、構造と制約の対応に注目します。
この問題で問われていること
ここでは、階層の各要素に対して想定される関係の範囲と、データが矛盾なく維持される条件が、説明の中で同じ前提に立っているかだけを確認してください。個別の用語暗記ではなく、前提の一貫性を見ます。
視点
説明を読む際は、データの構造と、それを保つために置かれている制約を分けて捉え、両者が同じ対象範囲や前提を共有しているかを確認します。
確認ポイント
- 関係の前提と制約の範囲が一致しているか
- 階層全体で矛盾が生じない説明になっているか
- 構造の説明と制約の説明を混同していないか
正解と解説を見る
正解
エ
解説
モデルAは部・課・係を別々の要素として表すため、階層追加時に変更が必要です。モデルBは組織自身の親子関連で階層を表し、モデルCは組織構造を関連表として表します。モデルCには循環を防ぐ制約が図示されていないため、別途制約が必要です。
理由
正しいのはエです。公式図では、循環しないことを示す{階層}制約が付いているのはモデルBです。モデルCにはその制約記述がないため、組織構造の親子関係が循環しないよう、別途制約を課す必要があります。
比較
モデルAは部・課・係を個別に表すため、新しい組織レベルを追加するにはモデルの変更が必要です。モデルBとCは階層を一般化して表しますが、モデルCは組織構造を別表で保持するため、親子関係の循環防止を明示的に補う必要があります。
選択肢ア
これは不正解だよ。モデルAは「部」「課」「係」をそれぞれ別の要素として定義し、部と課、課と係の関連も個別に記述している。したがって、新しい組織レベルを追加する場合は、そのレベルの要素や関連をモデルへ追加する変更が必要であり、どのモデルも変更不要という説明は誤りである。
選択肢イ
これは不正解だよ。モデルAとモデルBでは、図の多重度から一つの子組織に対応する親組織を複数にはできない。一方、モデルCは組織構造を別の要素として表し、同じ子組織を複数の構造に関連付けられるため、複数の親組織を記述できる。よって「どのモデルも」は誤りである。
選択肢ウ
これは不正解だよ。モデルBでは組織が親組織を自己関連で参照する。関係データベースに実装する場合、親子関係を保持する列は親組織を識別する組織コードを参照する外部キーとして扱うのであり、子の組織コードを外部キーとするという説明は図の親子の向きと一致しない。
選択肢エ(正解)
これは正解だよ。モデルCでは、組織と組織構造の間に親組織用と子組織用の関連を設けているが、公式図には{階層}制約が記述されていない。したがって、親子関係をたどって元の組織へ戻るような循環が生じないよう、別途制約を課す必要がある。
学習のポイント
UMLの多重度と自己関連、階層の循環制約を正確に読み取る。
出典:独立行政法人 情報処理推進機構(IPA)平成28年度春期 データベーススペシャリスト試験 午前Ⅱ 問4(公式資料:問題冊子(PDF) / 解答例)
関連する過去問一覧
IPA Advancedは非公式の学習サイトです。解説にはAIによる補助生成を含む場合があります。公式の問題冊子・解答例・採点講評を優先し、誤りは確認後に訂正します。運営・編集方針