DBのビューとは?メリットデメリットや使用方法についても紹介!
アプリケーション開発にとってデータベースは必須スキルとなっております。
データベースの知識がないと、アプリケーション開発に難航することでしょう。
しかしデータベースの知識を身に付けるとなると、かなりの勉強量を要します。
というのもデータベースオブジェクトには様々な種類があり、一朝一夕では身に付くものではありません。
今回は、データベースのビューについてご説明いたします。
ビューそのものは必ず覚えてなくてはならないと言うものではありませんが、よく使われます。
まずは本記事でビューの基礎知識を身に付けてください。
本記事ではメリットデメリットや具体的な使用方法について紹介しております。
1. DBのビューとは
ビューの説明に入る前に、まずはデータベースオブジェクトにおけるテーブルの説明からいたします。
データベースは、大量のデータを規則に従って格納することに適したものとなっております。
アプリケーションではデータベースがないと成り立たないほど、アプリケーション開発とは切っても切り離せない関係となっております。
テーブルとは別名、表とも呼ばれていて、データを行単位で格納されているものとなります。
テーブルは行列と言う概念があり、行はデータの件数、列はデータごとのカラム(種類)と言う考えがあります。
Excelをイメージしてもらったほうがわかりやすいかと思います。
テーブルは複数作成することも可能ですが、各テーブルごとに格納するデータの種類は異なります。
そのため、複数のテーブルにわたってデータをセレクトすることも必要となります。
その際にそのセレクト分をあらかじめ提示しておいて、あたかも1つのテーブルを参照するかのように取り扱えるものがビューとなります。
もう少し具体的に言うと、あらかじめセレクト文を定義したオブジェクトとなります。
2. ビューを使うメリット
ビューを使うメリットとしては、以下が挙げられます。
2-1. 複数のテーブルへのアクセスが楽になる
View自体はセレクト分の別名定義ですが、セレクト分は、当然ながら複数テーブルへのアクセスが可能です。
しかしながら、そのセレクト分を毎回発行したりするのは大変だと思います。
またよく使われるセレクト分については別名で定義して呼び出しやすくするのが楽になります。
その観点では、ビューを作成しておけばピーを呼び出すだけで、事前定義したセレクト分を呼び出すことができるので楽になります。
2-2. 保守性の高さ
Viewを定義しておけば、そのビューを修正したくなったときに、ビューの定義のみ変更すれば良いことになります。
Viewを定義せずにセレクト分を発行している場合は、その該当箇所全てを修正する必要があります。
機能追加等でセレクト分が変更になることもあるので、ビューを定義しておくことで保守がしやすいプログラムとなるのです。
2-3. セキュリティを高めることができる
テーブルによっては、個人情報等が含まれているカラムが存在することもあります。
このような情報については、不用意にアクセスされてしまうと、個人情報漏洩のリスクがあります。
そこでビューを定義しておいて、あくまでビュー上では個人情報等が含まれていないように設定することができます。
テーブルの個人情報が含まれていないカラムのみ参照するようにしておけば、不用意に個人情報にアクセスされる心配がありません。
Viewを定義することによって、セキュリティリスクを下げることができるのです。
3. ビューを使うデメリット(注意点)
3-1. Viewを定義したからといって、パフォーマンスが良くなるわけではない
ビューはセレクト文をあらかじめ定義するものという説明をしましたが、ビューを定義したからといって、パフォーマンスが良くなると言うわけではありません。
定義ビュー自体のパフォーマンスが悪い場合はそのセレクト文が繰り返し使われることになってしまうので、それを利用しているアプリケーション処理のパフォーマンスが悪くなってしまいます。
また、日はあくまでセレクト分の別名ということですので、例えばそのビューに条件文であったり、ビューに対してさらにビューを定義するなどをしてしまうとアクセスに時間がかかり、結果としてパフォーマンスが低下してしまう恐れがあります。
3-2. データ情報の更新に制限がある
ビューを定義したSQL文にインサート文やアップデート文、デリート文等を利用する場合は制限があります。
具体的な制限については下記に述べました。
・select句にdistinctが使用されていない
・group by句やhaving句を使用していない
・集約されたビューではないこと
・from句に含まれるテーブルが一つであること
3-3. 保守が困難になる場合がある
ビューをたくさん作ってしまうと、データベースの複雑さを増加させることがあります。
ビューが多くなると、ビュー間の依存関係を管理するのが大変になります。
具体的には1つのビューを変更すると関連するクエリやアプリケーションも修正する必要が生じる場合があります。
そのため、たくさんビューを作成すればするほど、ビューの変更管理と保守が難しくなる場合があるのです。
3-4. 正しく活用しないとセキュリティの問題が発生する
ビューはデータの一部のみを表示するため、アクセス制御の管理が重要です。
上記ではセキュリティを高めることができるという記載をしましたが、一方で設定を誤れば意図しないデータアクセスやデータ変更が発生してしまう可能性があるのです。
それによって機密性の漏洩のリスクが高まってしまい、場合によっては重大な問題となりえるのです。
4. ビューの使い方
続いて、ビューの使い方の基本的な方法を説明します。
4-1. ビューの作成
ビューはCREATE VIEWステートメントを使用して作成されます。
以下はビューの作成の1例を記載しています。
CREATE VIEW view_name AS
SELECT column1, column2, ...
FROM table_name;
上記のSQL文の意味としては、view_nameという名前のビューを作成しているSQL文となります。
またtable_nameという表から
column1, column2
という2つのカラムのみを参照するようなビューを作成したということになります。
上記SQL文でビューを作成した後、ビューをクエリとして使用することができます。
ビューはテーブルのように参照できるため、SELECTステートメントなどのクエリで使用することができます。
SELECT * FROM view_name;
4-2. ビューの更新
ビューは一般的に読み取り専用ですが、ビューの元となるテーブルが更新されると、それに伴ってビューのデータも自動的に更新されます。
つまり、元のテーブルに対する変更が反映されるのです。
4-3. ビューの削除
ビューの削除にはDROP VIEWステートメントを使用します。
DROP VIEW view_name;
5. まとめ
今回はビューのメリットデメリットや使用方法を紹介していきました。
ビューについてはアプリケーション開発においてよく使われますので基本的な使い方については勉強しておく必要があるでしょう。
またメリットデメリットも紹介していきましたので使いどころについても注意する必要があります。
本記事を参考にビューを正しく使ってアプリケーション開発に役立てましょう!