データベースにおける、テーブルとビューの違いについて説明します。
テーブルは皆さんご存じだと思いますので、ビューの定義から説明します。
「呼び出されたタイミングでその時点のデータに基づき正しい結果を返すこと」です。
いわゆる、テーブルのようなふるまいができるものを指します。
データベースの教科書では、「呼び出された時点でテーブルライクなものを作成し、結果を返す」ように説明されることもあります。
このようなビューは、「実体のないビュー」と呼ばれます。
テーブルを多く作成してそのままデータベースを運用すると、そのぶんストレージの容量が圧迫されることになります。
主にそのような事態を防ぐために開発された技術です。
ビューの作成時間は、テーブルを作成する場合と比較して高速です。
その理由は、データをストレージに書き込む必要がないからです。
もちろん実装上は書き込んでいるケースもあると思いますが、できる限りストレージへのアクセスを少なるすることで最小限の処理でユーザにデータを提示することが可能になります。
そのあたりは各ベンダーのデータベースシステムの腕のみせどころです。
ただし、小規模なデータや単純な計算の場合は迅速に結果を返すことが可能ですが、それ以外の場合は計算に膨大な時間が必要となり、実用性が乏しくなります。
SQLを呼び出して、画面の前で何時間も待つわけにはいかないわけです・・・
結論から言うと、大規模なデータベースでは、ビューといっても実体がある(データベースが構築されている)ことが多いです。
このようなビューは、「実体のあるビュー」と呼ばれます。
しかし、これはなにもおかしいことではありません。
先ほどのビューの定義に、「テーブルライクなものを作成し」と説明しました。
つまり、テーブルであろうがなかろうが、テーブルライクなものでありさえすれば良いのです。
作成時間は特に問われていませんから、定義上は0秒で作成しても問題ないですよね?
つまり、実際には完成しているテーブルをユーザーに見せてあげても良いのです。
また、あえてテーブルとしてではなくビューとして定義することで、ユーザーに対して見せてはいけないカラムや行を設定することでセキュリティ対策に役立つためです。
大規模なデータベースでは、このようにしてテーブルとビューを使い分けることもあります。
コメント