基本情報技術者 2011年 春期 午前(科目A) 問31
問題文
“商品”表のデータが次の状態のとき、〔ビュー定義〕で示すビュー“収益商品”の行数が減少する更新処理はどれか。
〔ビュー定義〕
CREATE VIEW収益商品
AS SELECT * FROM商品
WHERE 売値-仕入値>= 40000

選択肢
ア:商品コードがS001の売値を130,000に更新する。(正解)
イ:商品コードがS003の仕入値を150,000に更新する。
ウ:商品コードがS005の売値を130,000に更新する。
エ:商品コードがS005の仕入値を90,000に更新する。
🔒 解説は解答すると表示されます
ビューと更新による行削除【午前解説】
正解の理由
正解: ア
ビュー定義は WHERE 売値 - 仕入値 >= 40000 です。各商品の更新後の差額を計算すると、アの更新のみがビュー該当から外すため、ビューの行数が減少します。
ビュー定義は WHERE 売値 - 仕入値 >= 40000 です。各商品の更新後の差額を計算すると、アの更新のみがビュー該当から外すため、ビューの行数が減少します。
解法ステップ
- 各行の現在の利益(売値 − 仕入値)を計算する。
- S001:
- S003:
- S005:
- ビュー該当は利益 >= 40000 の行(現状 S001, S005 の 2 行)。
- 各選択肢で該当行の利益が更新後にどう変わるかを計算する。
- 更新後にビューから外れる(該当数が減る)選択肢を選ぶ。
選択肢別の誤答解説
- ア: 商品コード S001 の売値を 130,000 に更新すると、 で 40,000 未満になりビュー該当から外れるため行数が減少する → 正解。
- イ: S003 の仕入値を 150,000 にすると、 で新たにビューに入るため行数は増加する(減少しない)。
- ウ: S005 の売値を 130,000 にすると、 で依然 40,000 以上、ビューに残るため行数は変わらない。
- エ: S005 の仕入値を 90,000 にすると、 で 40,000 以上、ビューに残るため行数は変わらない。
よくある誤解
- 「>= と > を取り違える」:等号を見落とすと境界(40,000)の扱いを誤りやすいです。
- 「カンマを含む数値表記で桁を誤認する」:150,000 や 100,000 を読み間違えて差額計算ミスをする。
- 「ビューは別テーブルであり更新で古い結果が残る」と誤解する:ビューは基テーブルの現在データを反映します。
補足コラム
ビューは基礎テーブルに対する仮想的な表現であり、データを保持しません。したがって基テーブルを UPDATE するとビューの内容は即座に反映されます。本問のように WHERE によるフィルタ条件に関係する列を更新すると、行の「所属」(ビューに含まれるか否か)が変化し、ビューの行数が増減します。NULL が絡む場合は比較結果が FALSE/UNKNOWN になる点にも注意してください。
FAQ
Q: ビューは更新可能ですか?
A: 定義や DBMS によりますが、単純な SELECT * FROM 単一テーブルで WHERE のみならば基テーブルの更新は可能で、ビューには即時反映されます。
A: 定義や DBMS によりますが、単純な SELECT * FROM 単一テーブルで WHERE のみならば基テーブルの更新は可能で、ビューには即時反映されます。
Q: 等号(>=)の境界値が 40,000 のとき、40,000 は含まれますか?
A: はい、>= は 40,000 を含むため、差額がちょうど 40,000 の場合はビューに含まれます。
A: はい、>= は 40,000 を含むため、差額がちょうど 40,000 の場合はビューに含まれます。
Q: 更新で行数が増えることもありますか?
A: はい。条件を満たしていなかった行が更新で条件を満たすと、ビューの行数は増えます(本問の選択肢イが該当)。
A: はい。条件を満たしていなかった行が更新で条件を満たすと、ビューの行数は増えます(本問の選択肢イが該当)。
関連キーワード: ビュー、CREATE VIEW、WHERE句、UPDATE、売値、仕入値、差額計算、SELECT、SQL、NULL比較

\ せっかくなら /
基本情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

