ビューの解説(基本情報技術者シラバス用語)

目次

ビューとは

ビューとは、データベース上に作成された「仮想的なテーブル」です。ビュー自体には実際のデータは保存されておらず、元となるテーブルから特定のデータを取得するSQLのSELECT文がビューの定義として保存されています。ユーザーから見ると通常のテーブルと全く同じように扱えます。複雑で長い結合処理などのSQL文を何度も書く手間を省くことができ、また不要な列(例えば個人情報など)を隠して一部のデータだけを見せることで、システムのセキュリティや利便性を向上させる目的で使用されます。

具体例

毎日何ページもある「売上テーブル」と「商品テーブル」を結合して今日の集計を出すのは面倒です。そこで結合した結果を表示するビュー(名前:『本日の売上ビュー』)を定義しておけば、次回からは以下のようにシンプルな記述だけで、最新の集計結果がいつでも取り出せます。

SELECT * FROM daily_sales_view;

もう少し詳しく

ビュー(View)は、RDBにおけるデータアクセスを柔軟かつ安全にするための抽象化機能です。ユーザーがビューに対してクエリ(検索)を実行すると、DBMSはバックグラウンドで「ビューの定義として保存されているSELECT文」と「ユーザーが書いたクエリ」を合体(展開)させ、元のベーステーブル(実テーブル)に対して実際のデータ取得処理を行います。このため、ビューのデータは常に最新であり、ベーステーブルが更新されればビューの結果もリアルタイムに連動します。

ビューの導入メリットは大きく以下の3点があります。

1. クエリの簡素化:JOINや集計(GROUP BY)を用いた複雑で長いSQL文をあらかじめビューとして定義しておくことで、他の開発者やプログラムはシンプルなSELECT文だけで結果を取得できるようになります。
2. セキュリティ(データの隠蔽):例えば、「社員テーブル」に『社員ID、名前、給与、住所』が保存されているとします。一般社員向けのシステムに対して、給与や住所を隠した「社員公開情報ビュー(社員IDと名前だけを抽出する)」を作成して公開することで、不要な個人情報の漏洩をデータベースレベルでシャットアウトできます。
3. 論理的データ独立性:システムの都合でベーステーブルの構造(列名やテーブル分割など)を変更した場合でも、ビューの定義であるSELECT文側を修正して同じ出力結果を維持すれば、そのテーブルを利用している外部アプリケーションのソースコードを修正せずに済みます。

なお、ビューはデータを持たないため、ビューに対して「INSERT」や「UPDATE」を実行してベーステーブルを書き換える(更新可能ビュー)ためには、厳格な条件(結合が含まれていないこと、集計関数が使われていないことなど、1つのベーステーブルの行と1対1で対応可能なこと)をクリアしている必要があります。また、大量データを毎回計算するのを避けるために、ビューのデータを一時的に実体化して保存しておく「マテリアライズドビュー」と呼ばれる高度な技術もあります。

試験でのポイント

IT試験においては、ビューの基本的な性質(仮想的なテーブルである点、実データを持たない点)を問う問題が頻出します。

試験対策としての重要ポイントは以下の通りです。
・実データを持たない:「ビューの実体は定義されたSELECT文であり、データそのものは保持しない(記憶領域を占有しない)」という性質をしっかり覚えましょう。
・セキュリティ対策:「特定の人に必要なデータ列だけを見せる(不要な列を隠す)ことで、セキュリティを向上させることができる」という説明がビューのメリットに該当します。
・ビューへのデータ更新可否:どのようなビューであればINSERTやUPDATEを実行できるか(例えば、2つのテーブルを結合したビューや集計結果を表示するビューに対しては、行を特定できないためデータの追加・更新は原則不可能である点)が問われます。

「関係データベースにおいて、実データを持たず、元となる表から必要なデータを定義した仮想的な表はどれか」という問題には、ビューを選択してください。

関連する用語

ビューの定義として使われる「SELECT文」や、ビューの基となる「ベーステーブル(基底表)」、セキュリティ上のアクセス制御機能が関連します。また、ビューを定義するためのDDL(データ定義言語)命令である「CREATE VIEW」や、実データをディスク上に保持して高速化する「マテリアライズドビュー」も関連用語として重要です。

読んだ内容を10問練習と実技で確認

記事で理解した用語を、StudyQuestの演習とクラウド実技ラボで定着させます。

10問練習 実技ラボ