データベース

ビューとは(データベース)

2021年2月28日

ビュー(view)

データベースのビューとは

関係データベースにおけるビュー(英:view)とは、1つ以上の表(テーブル)から必要な要素だけを取り出して作った仮想的な表のことです。

例えば、次のような3つの表があるとします。

「社員テーブル」は社員の情報を管理している表、「部署マスタ」は部署の情報を管理している表、「課マスタ」は課の情報を管理している表です。

テーブルの例

データベースの表はデータを効率よく格納するために正規化されています。この正規化された表は、必ずしも使いやすいとは限りません。

例えば、次のような「営業部の社員」だけを管理する表を利用したいとき、「社員テーブル」「部署マスタ」「課マスタ」の表を結合する必要があります。

営業部だけの表があると助かるんだけどなぁ・・・
営業部の情報

そこで、用途に応じた仮想的な表を作ることができます。これがビュー(view)です。

ビューのイメージ例

上記はビューのイメージ例です。

「社員テーブル」「部署マスタ」「課マスタ」から必要な要素だけ取り出して「仮想的な表」を作成しています。

スポンサーリンク

なぜビューが必要なのか?ビューのメリットとは

わざわざ仮想的な表を作らなくても、表を結合すればよいのでは?

ビューを作らなくても、複数の表を結合すればビューと同じ結果を得ることができます。ではなぜビューを使うのでしょうか。

ビューには次のメリットがあります。

ビューのメリット

  • SQL文をシンプルにする
  • セキュリティを高める

【ビューのメリット1】SQL文をシンプルにする

1つ目のメリットは「SQL文をシンプルにする」ということです。複数の表を結合すると、結合する表の数が多いほど、SQL文は複雑化します。

事前にビューを作っておくことで、表を結合する必要がなくなりシンプルで分かりやすいSQL文を書くことができます。

【ビューのメリット2】セキュリティを高める

2つ目のメリットは「セキュリティを高める」ということです。表には権限があり、表の権限はデータベースのユーザー毎に設定できます。(GRANT文)

例えば、次のような権限を付与したとします。

  • 社員テーブル:操作権限なし
  • 営業部の社員テーブル(view):操作権限あり
ビューの権限

ビューの参照元である「社員テーブル」へのアクセスは拒否しているため、営業部の社員は他部署の情報を見ることができません。

このようにビューを利用することで、セキュリティを高められます。

更新可能なビュー

ビューは参照するだけではなく、通常の表と同じようにデータを追加(INSERT文)したり、更新(UPDATE文)、削除(DELETE文)することもできます。

ビューは「仮想的な表」であり実体はありません(実体は参照元の表)

そのため、ビューに対して行われた更新操作は、参照元の表に対して行われます

ビューには、「更新可能なビュー」と「更新できないビュー」が存在します。更新できるか、できないかは元となる行が特定できるかどうかで決まります。

例えば、MAXAVGなどの集合関数を使って作られたビューは元となる行が特定できないので、更新できません。

その他にも複数の表を結合している(例外あり)場合や、DISTINCT、GROUP BY、HAVINGを利用している場合、副問合せが含まれている場合なども更新することはできません。

helpful