- ベストアンサー
データベースで「CREATE VIEW」で作成する「ビュー」の意義を教
データベースで「CREATE VIEW」で作成する「ビュー」の意義を教えていただけますか? 以上、宜しくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
NO1さんの検索結果のサイトには妥当な説明がなされており、それはそれでいいんですが、 >意義を教えていただけますか SQLや、RDBMSなどを習う最初は、みなさんそのように思います。7年位前からは特に。 ヒントは、話せは長い長い歴史の忘却のかなた在ります。 今のようにGUIが普通で、SQLなんかサブセットのように思っている、DB構築者が多いですが、その昔業務関係のDBはCUIが中心。その中で、DB管理者や、業務用ソフトのDB担当では、いかにスピーディーに末端のDBクライアントアプリ作成者や、DB管理者に検索を用意に渡されるかが問題になっていました。 これにはクライアントツールの開発環境が、あまりにも長くなるSQLを管理しないといけなくなり、特に業務用では検索速度などが、大事です。いかにDB側、OS側、CPU側にキャッシュさせスピードをあげるかが問題になります(15年以上前は、業務マシン、ワークステーションとっても今のパソコンの10分の1以下のスピード)。 そこで、Viewはとても効果があります。長かったSQLも半分になります。検索結果をいちいち変数にいれてとか、一回、ファイルに保存してとか、プロセス間通信でスレッドに渡してとか、そんな事を考えなくても、1クッション省くことができ、プログラミングが、よりシンプルに作れます。 それがNo1さんが「検索代行」(個人的には言葉は妥当ではないと思うが)といっている部分です。 例をあげれば、4つ以上のテーブルから、各店舗の日別売りあげと、個人売り上げをマージしてランキングでソートして一つのViewになっていたとしたら、どうでしょう。クライアントツールを作るSEは、そのViewに対してSELECT文を1行つくればいいだけですよね。 これはクライアントツール(DBから見て)のアプリ側が、より規模の大きいものになれば、それだけ効果が増します。何せすでに、すでにできている検索文を使うだけで、プログラムを作れるのだから。いわばオブジェクト指向のプログラミングで言えばClass定義などカプセルかをしたのと同じ効果があり、うまく作れば、効率化絶大です。 また、セキュリティー面でも活用できますね。特定のユーザーにViewの使用だけを認めれば、特定の検索しか、できないことになります。 まあ、今はGUIで、ちょちょいのちょいとクエリーが作れるので、どうなのか? といわれると。うん~~~~と黙ってしまいますが(15年以上前は、なかったんですよ)。業務用で一部あり、高かった(100万円以上)。もちろんアクセスやエクセルなんて、あったけ? と言う時代のこと(Office95からGUIで単純なものができた。業務用レベルではなかった)。