仮装表(ビュー)
ビューは、実在する表を元に作成される仮想的な表です。ビューを利用するとアプリケーションの作りを単純化することができます。
1.ビューの概念
ビューとは、実在する表を元に作成される仮想的な表です。ビューの中には物理的なデータは存在せず、単なるデータの見え方の定義をするものにすぎません。仮想的な表な為、仮装表と呼ばれることもあります。
上の図では、人やプログラムは”顧客”表ではなく”顧客”ビューにアクセスしていることになります。このビューには、収入、住所、TEL No.、病歴の情報は含まれていません。
2.ビューの利用目的
①.開発効率の向上
ビューは永続的なオブジェクトです。その為、複雑なクエリーを各プログラムで実行するのではなくビューとして作成しておけば、各プログラムはそのクエリーにアクセスするだけで目的のデータにアクセスすることができます。こうすることによりプログラム開発者は複雑なクエリーを考慮することなしにプログラムの開発が行えるので開発効率の向上が期待できます。
②.セキュリティの向上
上記の図のように開発者には、顧客表ではなく顧客ビューのみに参照権限を与えれば、個人情報のような重要な情報に触れさせることなく開発させることができます。このような配慮によってセキュリティの向上が期待できます。
3.ビューの作成・削除
①.ビューの作成
ビューを作成するときの構文は以下のとおりです。
CREATE VIEW <ビュー名> [(<列名1>,<列名2>,<列名3>,・・・)] AS
<SELECT文>
[WITH CHECK OPTION]
ASキーワードの次には、SELECT文を記述します。このSELECT文の結果として表から取り出されるデータからビューが作成されます。WITH CHECK OPTION句は、ビューの更新に関連するオプションとなります。
CREATE VIEW文には以下の制約が存在します。
②.ビュー作成時の制約
CREATE VIEW文に使用するSELECT文は、通常のSELECT文と同じように、様々なクエリーを実行することができます。列をしたり、行を指定したり、表を結合したり集計関数を使用したりできます。但し、次のような制約があります。
・UNION句は使用できない。
・ORDER BY句は使用できない。
③.ビューに対するデータの変更
ビューを使うと、データの参照だけでなく表に格納されているデータを変更することもできます。CREATE VIEW文を使ってビューを作成した後は、ビューに対してSELECT文だけでなく、INSERT文、UPDATE文、DELETE文を実行することができます。但し、前述したようにビュー自体にはデータは存在しません。その為、これらの変更は、ビューではなくその先にある実表のデータが変更されることになります。
4.ビューの特徴と制限
一般にビューに対するデータの変更には以下のような制約があります。
①.演算や関数の結果を格納する列は変更できない
演算や関数の結果として出力されている値を変更しても、それを逆算し、元の表のどの行を変更すればよいのかをDBMSが判断することは困難です。
②.GROUP BY句やHAVING句を使って作成したビューは変更できない
このようなビューでは、列に集計値が格納されます。集計結果として出力されている値を変更しても、元の表のどの行を変更すればよいのかDBMSは判断できません。
③.DISTINCT句を使って作成したビューは変更できない
このようなビューでは、列に代表値が格納されます。代表として出力されている値を変更しても、元の表のどの行のデータを変更するべきかDBMS側は判断できません。
④.複数の表を外部結合するビューでは、優先しない方の表の列は変更できない
上下関係のある結合でビューを作成した場合、下位のテーブルの列を変更することはできません。
⑤.RDMBS製品によっては、複数の表をもとにしたビューを変更することはできない
例えば、SQL Serverは複数の表をもとにして作成されているビューからデータを削除できない仕様になっています。
コメントを残す