スポンサーリンク

【応用情報技術者試験】ビューとテーブルの違いをわかりやすく解説

SQLと関係演算:抽出・結合・集計を整理 違い比較

基底テーブルは行データを保持し、通常ビューは保存した問い合わせを表のように参照する仕組みです。さらに、問い合わせ結果を保存するマテリアライズドビューを分けて理解しましょう。

3つの役割を比較

比較基底テーブル通常ビューマテリアライズドビュー
中心となるもの保存する行データ問い合わせの定義保存した問い合わせ結果
元データの変更この表自身を変更参照時の可視性の規則に従い結果に反映保存結果の更新・再生成が必要な方式がある
更新権限・制約などに従う定義とDBMSにより条件付き通常の表と同じ更新方法とは限らない

通常ビューにも定義などを保存する領域は必要です。「実体なし」は、定義すら存在しない・容量を完全に使わないという意味ではありません。ここでは一時表などの特殊な表は省いて比較しています。

利用場面で考える

社員の情報そのものを保存するなら基底テーブル、部署ごとに必要な列だけを見せたいなら通常ビューが候補です。時間のかかる集計を保存して参照したいなら、マテリアライズドビューなどを検討します。ただし速さとデータの鮮度の両方を考える必要があります。

元表の変更と表示される時点

通常ビューは保存結果ではなく定義を使うので、参照時のトランザクションの規則に従って元データを読みます。PostgreSQLのマテリアライズドビューは結果を保持し、REFRESH MATERIALIZED VIEWなどで更新します。ほかのDBMSには別の更新方式もあり、「必ず自動で最新」とは限りません。

更新可否とセキュリティ

ビューを通したINSERT・UPDATE・DELETEは、どの元行を変更するかが明確であるかなど、定義と製品の条件に依存します。また、ビューで列を限定しても、元表への直接アクセス権を残せば情報を隠せるとは限りません。通常の表への操作にも権限や整合性制約があります。

名前だけで性能は決まらない

通常ビューは問い合わせを簡略に記述できますが、結果の事前保存による高速化を保証するものではありません。マテリアライズドビューも、保存領域・更新費用・鮮度の管理が必要です。「ビューなら小容量で必ず速い」という覚え方は避けます。

定義と参照のSQL例は、ビューの記事で確認できます。

確認問題

元表の変更を、保存結果を再生成するまで反映しない方式は、通常ビューとマテリアライズドビューのどちらでしょうか?

解答・解説を見る

結果を保存して更新する方式のマテリアライズドビューです。通常ビューは問い合わせの定義を利用し、参照時の可視性の規則に従ってデータを読みます。

ビューの元になるSQLをnoteで復習

関連noteにはSELECT・JOIN・GROUP BYの解説があります。表やビューの違いを理解した後は、仮想表の元になる問い合わせの読み方を復習できます。

無料note:SELECT・JOINとSQL頻出ポイントを学ぶ

ほかの教材は資格・目的別のnote教材ナビから選べます。

参考資料

PostgreSQL:CREATE VIEW

参考:PostgreSQLのマテリアライズドビュー

コメント