1. ホーム
  2. sql

[解決済み] ビューは何のためにあるのか?

2023-02-19 17:55:31

質問

RDBMSでビューがどのように使用されるのか、一般的な知識を得ようとしているところです。 つまり、ビューが何であるか、どのように作成するかは知っています。 また、私は過去にそれらを使用したことがあります。

しかし、ビューが何のために有用で、何のために有用でないかを徹底的に理解したいのです。 具体的には

  1. ビューは何のために有用なのでしょうか。
  2. ビューを使うべきでないのに、使いたくなるような状況ってありますか?
  3. テーブル値関数のようなものの代わりにビューを使用する理由、またはその逆は何ですか?
  4. 一見しただけではわからない、ビューが役に立つような状況はありますか?

(念のためですが、これらの質問のいくつかは意図的に素朴なものです。 これは部分的にコンセプト チェックです)。

どのように解決するのですか?

1) ビューは何のためにあるのでしょうか?

イオポ 一箇所のみ



-データそのものを考えるにせよ、結合されたテーブルを参照するクエリを考えるにせよ、ビューを利用することで不必要な冗長性を回避することができます。



-ビューはまた、テーブルへの直接アクセスを防ぐ抽象化レイヤーを提供します(そして、結果として物理的な依存関係を参照する手錠をかけます)。実際、私はそれが グッドプラクティス 1 のようなビューを含む、基礎となるデータへの抽象化されたアクセスのみを提供すること(ビューとランプ、テーブル値関数を使用する)。



CREATE VIEW AS
      SELECT * FROM tblData




1 そのアドバイスの中には、「私の言うとおりにしなさい、私のするとおりにしてはいけません」というものがたくさんあることを、私は認めざるを得ません。)

2) ビューを使うべきでないのに、ビューを使いたくなるような状況はありますか。

以前はビュー結合のパフォーマンスが心配されました(例:SQL 2000)。 私は専門家ではありませんが、ここしばらくは心配していません。(また、現在私がビュージョインを使用している場所も思い当たりません。)



ビューが過剰になる可能性があるもう1つの状況は、ビューが1つの呼び出し場所からしか参照されず、派生テーブルが代わりに使用される可能性がある場合です。 ちょうど、無名型が一度だけ使用または参照される場合、.NETではクラスよりも無名型が望ましいように。



    - http://msdn.microsoft.com/en-us/library/ms177634.aspx の派生テーブルの説明を参照してください。

3) テーブル値関数のようなものの代わりにビューを使用する理由、またはその逆は?

(パフォーマンス上の理由は別として)テーブル値関数は、パラメータ化されたビューと機能的に同等です。 実際、一般的な単純なテーブル値関数の使用例は、単に 1 つのオブジェクトですでに存在するビューに WHERE 句フィルタを追加することです。

4) 一見しただけではわからない、ビューが有用であるような状況はありますか。

私の頭の中では、明白でない使い方は思いつきません。 (もしそうであれば、それは明らかなことだと思います)。