正答1
解説
正解は1です。
ビューを通じて更新(挿入・更新・削除)を行うには、ビューの各行が基底表のどの行に当たるかを1対1で特定できる必要があります。
DISTINCTによる重複除去、GROUP BYによるグループ化、集合関数(SUMやAVGなど)を使ったビューは、元の行を特定できないので更新できません。
【選択肢別解説】
1:○ 1つの基底表から、WHERE句で行を選び、列をそのまま取り出しているだけです。
ビューの1行が商品表の1行に対応するので、更新可能なビューになります。
2:× SELECT DISTINCTで重複を除いているため、ビューの1行が受注表のどの行に当たるか特定できません。
そのため更新できないビューです。
3:× GROUP BYで商品番号ごとにまとめ、SUMで合計しているため、ビューの1行が受注表の複数行の集計結果になります。
元の行を特定できないので、更新できないビューです。
4:× AVGで受注数量の平均を求めており、ビューの1行が受注表全体の集計結果です。
元の行に対応しないので、更新できないビューです。
【ポイント】
更新可能なビューの条件は、「1つの表から」「行の選択と列の取出しだけで」「DISTINCT、GROUP BY、集合関数を使わない」と覚えます。
集計結果は元の行と1対1に対応しないことが、更新できない理由です。