DBデータベーススペシャリスト試験 午前Ⅱ
平成28年度春期 データベーススペシャリスト 午前Ⅱ 問10
問題文と選択肢を読んで答えを考えてから、下の「正解と解説を見る」で確認しましょう。
問題
選択肢
- アCREATE VIEW ビュー1(取引先番号,製品番号) AS SELECT DISTINCT 納入.取引先番号,納入.製品番号 FROM 納入
- イCREATE VIEW ビュー2(取引先番号,製品番号) AS SELECT 納入.取引先番号,納入.製品番号 FROM 納入 GROUP BY 納入.取引先番号,納入.製品番号
- ウCREATE VIEW ビュー3(取引先番号,ランク,住所) AS SELECT 取引先.取引先番号,取引先.ランク,取引先.住所 FROM 取引先 WHERE 取引先.ランク > 15
- エCREATE VIEW ビュー4(取引先住所,ランク,製品倉庫) AS SELECT 取引先.住所,取引先.ランク,製品.倉庫 FROM 取引先,製品 HAVING 取引先.ランク > 15
解き方のヒントを見る
更新可能性を見極める視点
更新可能なビューを考えるときは、表示結果だけで判断せず、元データとの対応関係や変更の影響範囲に注目し、構成要素を順序立てて確認しましょう。
この問題で問われていること
元データの情報がビュー上でどのように表され、変更を考えたときに対象範囲を追跡できるかという観点に絞って、各要素の関係を整理してください。
視点
ビューを評価するときは、元データとの関係、結果を構成する情報の出どころ、変更時に影響を受ける範囲を整理します。個別の構文を覚えるより、情報の対応関係を図式化して確認すると考えやすくなります。
確認ポイント
- 元データの要素と、ビューに現れる結果との対応関係を整理する。
- ビュー上で変更を考えた場合に、影響範囲を追跡できるか確認する。
- 複数の構成要素が関係する箇所で、対象の整理が難しくなっていないか見直す。
正解と解説を見る
正解
ウ
解説
更新可能なビューは、基底表の行とビューの行を対応付けたまま、ビューを通して基底表を更新できる定義です。単一の基底表を参照し、WHERE句で行を絞り込むだけなら、この対応関係を保てる。
理由
ウは単一の基底表である取引先を参照し、取引先番号、ランク、住所をそのまま選択している。WHERE句はランクが15より大きい行を絞り込むだけなので、ビューの各行と基底表の行との対応が維持され、更新可能です。
比較
DISTINCTやGROUP BYは複数の基底表行をまとめたり重複を除いたりするため、更新対象の行を一意に対応付けにくい。また、複数の表を参照する定義も、更新先を単純に決められないため、更新可能なビューの条件を満たさない。
選択肢ア
これは不正解だよ。SELECT DISTINCTによって、納入表の取引先番号と製品番号の重複行が一つにまとめられる。ビュー上の一行が基底表のどの行に対応するか一意でなくなり、ビューを通じた更新対象を決めにくいため、更新可能なビューとはいえない。
選択肢イ
これは不正解だよ。GROUP BYで納入表の取引先番号と製品番号をグループ化しているため、複数の基底表行が一つのビュー行に集約される。集約後のビュー行から元の更新対象行を一意に特定できず、更新可能性を失っている。
選択肢ウ(正解)
これは正解だよ。取引先という単一の基底表から、取引先番号、ランク、住所を直接選択し、WHERE句でランクが15より大きい行だけを絞り込んでいる。行の対応関係が保たれるため、更新可能なビューの定義である。
選択肢エ
これは不正解だよ。FROM句で取引先と製品の二つの表を参照し、取引先の列と製品の列を同じビューに含めている。ビューの行が複数表の組合せに基づくため、変更をどの基底表のどの行へ反映するか単純に決められず、更新可能とはいえない。
学習のポイント
DISTINCT、GROUP BY、複数表参照がビュー更新性に与える影響を整理する。
出典:独立行政法人 情報処理推進機構(IPA)平成28年度春期 データベーススペシャリスト試験 午前Ⅱ 問10(公式資料:問題冊子(PDF) / 解答例)
関連する過去問一覧
IPA Advancedは非公式の学習サイトです。解説にはAIによる補助生成を含む場合があります。公式の問題冊子・解答例・採点講評を優先し、誤りは確認後に訂正します。運営・編集方針