平成23年度 特別 午前 問31
データベース
ビューに関する問題
“商品”表のデータが次の状態のとき,〔ビュー定義〕で示すビュー“収益商品”の行数が減少する更新処理はどれか。
〔商品〕
| 商品コード | 品名 | 型式 | 売値 | 仕入値 |
|---|---|---|---|---|
| S001 | T | T2003 | 150,000 | 100,000 |
| S003 | S | S2003 | 200,000 | 170,000 |
| S005 | R | R2003 | 140,000 | 80,000 |
〔ビュー定義〕
CREATE VIEW 収益商品
AS SELECT * FROM 商品
WHERE 売値 - 仕入値 >= 40000- ア商品コードが S001 の売値を 130,000 に更新する。
- イ商品コードが S003 の仕入値を 150,000 に更新する。
- ウ商品コードが S005 の売値を 130,000 に更新する。
- エ商品コードが S005 の仕入値を 90,000 に更新する。
答えと解説を見る
✓ これが正解ア商品コードが S001 の売値を 130,000 に更新する。
解説
差が4万を下回った行だけがビューから外れます。
このビューは、売値から仕入値を引いた差が40,000以上の行だけを集めたものです。まず現在の差を出します。商品コードが S001 の行は50,000、S003 の行は30,000、S005 の行は60,000ですから、いま集まっているのは S001 と S005 の2行です。行数が減るのは、いま集まっている行の差が40,000を下回ったときだけです。逆に、集まっていない行の差が40,000以上になれば行数は増え、集まっている行の差が40,000以上のまま変わっても行数は動きません。判定の軸は、更新の前と後で差の値が境目をまたぐか、そしてまたぐ向きがどちらかの二点です。
ほかの選択肢はなぜ違うのか
- イ商品コードが S003 の仕入値を 15…:いまビューに集まっていない行が対象です。仕入値が下がると差は50,000へ広がり、条件を満たすようになるので、この行は新たに加わります。行数が動く向きは、減るのではなく増えるほうです。
- ウ商品コードが S005 の売値を 130…:差は60,000から50,000へ縮みますが、まだ40,000以上です。境目をまたいでいないため、この行はビューに残ったままで、集まる行の数は更新の前と後で変わりません。
- エ商品コードが S005 の仕入値を 90…:仕入値が上がるので差は60,000から50,000へ縮みますが、これも40,000以上に収まっています。条件から外れないため、この更新でも集まる行の数は動きません。
出典:平成23年度 特別 基本情報技術者試験 午前 問31(改変:原典の図表をテキストに書き起こした)
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)