DBデータベーススペシャリスト試験 午前Ⅱ

平成25年度春期 データベーススペシャリスト 午前Ⅱ 問11

問題文と選択肢を読んで答えを考えてから、下の「正解と解説を見る」で確認しましょう。

問題

三つの表“取引先”,“商品”,“注文”を基底表とするビュー“注文123”を操作するSQL文のうち,実行できるものはどれか。ここで,各表の列のうち下線のあるものを主キーとする。
主キーを下線で示した取引先・商品・注文の三つの基底表と,それらを結合するビュー注文123の定義。
主キーを下線で示した取引先・商品・注文の三つの基底表と,それらを結合するビュー注文123の定義。

選択肢

  1. ア
    DELETE FROM 注文123 WHERE 取引先ID = '111'
  2. イ
    INSERT INTO 注文123 VALUES (8,'目白商店','レンチ',3)
  3. ウ
    SELECT 取引先.名称 FROM 注文123
  4. エ
    UPDATE 注文123 SET 数量 = 3 WHERE 取引先名 = '目白商店'
解き方のヒントを見る

抽出条件を行ごとに確認する視点

SQLの抽出結果を考えるときは、条件式を各行へ適用した結果に注目し、比較対象の値、境界、複数条件の組み合わせ、特殊な値の扱いを順に整理します。各行の判定理由を短く記録すると、全体の対応関係も確認しやすくなります。

この問題で問われていること

この問題では、各行が抽出条件を満たすかを判断する過程だけに焦点を置き、条件の読み取りと評価結果を表にして整理すると、結果集合との対応を落ち着いて確認できます。特に一行ずつ同じ手順で見直すことが重要です。

視点

抽出条件は、対象行の値を条件の各部分と照らし合わせ、単独の条件と複数条件を組み合わせた場合の判定を分けて捉えると整理しやすくなります。列の表示内容や並び順とは切り分け、まず対象になる行の範囲だけを確認します。

確認ポイント

  • 条件を各行に適用したとき、比較する列と値を取り違えていないか。
  • 複数の条件を組み合わせる箇所で、各条件の成立状況を別々に整理できているか。
  • 境界にある値や通常と異なる値を含む行について、条件との関係を見落としていないか。
正解と解説を見る

正解

エ

解説

ビュー「注文123」は注文番号、取引先名、数量の3列を公開しており、参照できる列と基底表への対応を確認すると実行可能な文を判定できます。

理由

ビュー「注文123」は、注文表・取引先表・商品表を結合し、注文番号、取引先の名称を別名にした取引先名、数量だけを表示します。そのため、SQL文はこのビューで公開された列を前提に記述する必要があります。

比較

アとイとウは、ビューに存在しない列の参照、列数と値数の不一致、FROM句にない表名の修飾という問題があります。エは公開された取引先名で行を絞り、数量を更新する指定になっています。

選択肢ア

これは不正解だよ。ビュー「注文123」が公開する列は注文番号、取引先名、数量であり、取引先IDは含まれていません。また、三つの表を結合したビューに対するDELETEとしても、この文の条件をビューの列として解釈できないため実行できません。

選択肢イ

これは不正解だよ。ビュー「注文123」の列は注文番号、取引先名、数量の3列です。一方、このINSERT文は注文番号、取引先名、商品名、数量に相当する4個の値を指定しており、ビューの列数と値数が一致しないため実行できません。

選択肢ウ

これは不正解だよ。FROM句で指定されているのはビュー「注文123」だけで、基底表の「取引先」は指定されていません。そのため、SELECT句の「取引先.名称」という表修飾を解決できず、ビューが公開する取引先名を参照する文にもなっていません。

選択肢エ(正解)

これは正解だよ。ビューが公開している取引先名を条件にして対象行を絞り、同じく公開されている数量を3に更新する指定です。数量は注文表の列に対応するため、このビュー定義に基づく更新文として実行できます。

学習のポイント

ビューの列公開範囲と、基底表への更新対応を確認する。

出典:独立行政法人 情報処理推進機構(IPA)平成25年度春期 データベーススペシャリスト試験 午前Ⅱ 問11(公式資料:問題冊子(PDF) / 解答例)

関連する過去問一覧

IPA Advancedは非公式の学習サイトです。解説にはAIによる補助生成を含む場合があります。公式の問題冊子・解答例・採点講評を優先し、誤りは確認後に訂正します。運営・編集方針