戦国IT - 情報処理技術者試験の過去問対策サイト
ブログお知らせお問い合わせ料金プラン

基本情報技術者 2012年 秋期 午前(科目A)29


問題文

“商品”表のデータが次の状態のとき、〔ビュー定義〕で示すビュー“収益商品”の行数が減少する更新処理はどれか。
基本情報技術者 2012年 秋期 午前(科目A) 問29の問題画像

選択肢

商品コードがS001の売値を130,000に更新する。(正解)
商品コードがS003の仕入値を150,000に更新する。
商品コードがS005の売値を130,000に更新する。
商品コードがS005の仕入値を90,000に更新する。

##: “収益商品”ビューの行数が減少する更新処理はどれか【午前2 解説】

要点まとめ

  • 結論: の更新(S001の売値を130,000にする)で売値−仕入値が50,000→30,000になりビューの行が減少します。
  • 根拠:ビュー定義は売値−仕入値 >= 40000 なので、更新により条件を満たさなくなる行はビューから除外されます。
  • 差がつくポイント:境界値(>=40000)の扱いと「元々ビューに含まれる行のみ削除され得る」点を素早く判定すること。

正解の理由

正解は です。
ビュー「収益商品」は WHERE 売値 - 仕入値 >= 40000 の条件で抽出します。元のデータでは S001 と S005 がこの条件を満たしており(それぞれ50,000 と 60,000)、ビュー行数は2です。アの更新で S001 の売値を 150,000 → 130,000 にすると差額が となり条件を満たさなくなるためビューから除外され、行数が減少します。

よくある誤解

  • 「差が小さくなれば必ず行数が減る」と考える誤り:差が 40,000 以上を維持すればビューには残ります。
  • 「更新はどの行でも減らせる」と思う誤り:ビューから除外されるのは元々ビューに含まれていた行のみです。元々含まれていない行を更新すると行数が増えることがあります。
  • 境界値の判定ミス:条件が >= 40,000 か > 40,000 かで判定が変わるので注意が必要です。

解法ステップ

  1. ビュー条件を確認する(売値 − 仕入値 >= 40,000)。
  2. 各商品の現在の差額を計算する:S001=50,000、S003=30,000、S005=60,000。
  3. 選択肢ごとの更新後の差額を計算し、条件を満たすかどうかを確認する。
  4. 条件を満たさなくなる(ビューから除外される)更新を選ぶ。

選択肢別の誤答解説

  • ア: (正解)
    • S001 の売値を 150,000 → 130,000 にすると差額は 50,000 → 30,000 となり、条件(>=40,000)を満たさなくなりビューから除外されます。結果、ビューの行数は減少します。
  • イ: 商品コード S003 の仕入値を 170,000 → 150,000 にすると差額は 30,000 → 50,000 となり、新たに条件を満たすためビューに追加され、行数は増加します(減少しない)。
  • ウ: S005 の売値を 140,000 → 130,000 にすると差額は 60,000 → 50,000 となり、依然として >=40,000 のためビューに残ります。行数は変わりません。
  • エ: S005 の仕入値を 80,000 → 90,000 にすると差額は 60,000 → 50,000 となり、これも >=40,000 のためビューに残り、行数は変わりません。

補足コラム

  • ビューは基になる表の現在の値に基づいて動的に行を返します。したがって基表の更新で行の追加・削除・維持が起こります。
  • 境界条件(>= 40000)の場合、ちょうど 40,000 になってもビューに含まれる点を必ず確認してください。
  • 実務では ALTER VIEW で条件を変える方法、あるいはマテリアライズドビュー(集計結果を保持するタイプ)に注意が必要です。
例:該当更新の SQL(参考)
-- 正解の更新例(S001の売値を130000にする)
UPDATE 商品
SET 売値 = 130000
WHERE 商品コード = 'S001';

FAQ

Q1: もし更新後の差がちょうど 40,000 だったら?
A1: WHERE が >= 40000 なので、差が 40,000 の行はビューに残ります(除外されません)。
Q2: ビューがマテリアライズされていると影響は変わりますか?
A2: マテリアライズドビューは基表の更新があっても再構築・リフレッシュするまで反映されないため、即時に行数が変わらない場合があります。
Q3: 基表に新しい行を追加した場合はどうなる?
A3: 追加された行の差額が条件を満たせばビューに新規に含まれるので、行数は増加します。

関連キーワード: SQL、ビュー、CREATE VIEW、SELECT、WHERE、UPDATE、売値、仕入値、差額、境界値、レコード、演算子
← 前の問題へ次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

基本情報技術者
クイズ形式で学習しませんか?

クイズ画面へ遷移する

すぐに利用可能!

©︎2026 情報処理技術者試験対策アプリ

このサイトについてブログプライバシーポリシー利用規約特商法表記開発者について