[解決済み] ビューは何のためにあるのか?
2023-02-19 17:55:31
質問
RDBMSでビューがどのように使用されるのか、一般的な知識を得ようとしているところです。 つまり、ビューが何であるか、どのように作成するかは知っています。 また、私は過去にそれらを使用したことがあります。
しかし、ビューが何のために有用で、何のために有用でないかを徹底的に理解したいのです。 具体的には
- ビューは何のために有用なのでしょうか。
- ビューを使うべきでないのに、使いたくなるような状況ってありますか?
- テーブル値関数のようなものの代わりにビューを使用する理由、またはその逆は何ですか?
- 一見しただけではわからない、ビューが役に立つような状況はありますか?
(念のためですが、これらの質問のいくつかは意図的に素朴なものです。 これは部分的にコンセプト チェックです)。
どのように解決するのですか?
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) 一見しただけではわからない、ビューが有用であるような状況はありますか。
私の頭の中では、明白でない使い方は思いつきません。 (もしそうであれば、それは明らかなことだと思います)。
関連
-
[解決済み] SQLテーブルで重複する値を検索する
-
[解決済み] UNIONとUNION ALLの違いは何ですか?
-
[解決済み] INNER JOIN ON vs WHERE句
-
[解決済み] T-SQLでnot equalには!=と<>のどちらを使うべきですか?
-
[解決済み] SQL Serverで結果をページ分割する最も良い方法は何ですか?
-
[解決済み] OracleのViewsとMaterialized Viewsの違いは何ですか?
-
[解決済み】「INNER JOIN」と「OUTER JOIN」の違いは何ですか?
-
[解決済み】DDLとDMLとは何ですか?
-
[解決済み】MongoDBがv4以前にACID準拠でなかったことの本当の意味は?
-
[解決済み】なぜ歴史的に人々はデータベースのフィールドの大きさに256ではなく255を使うのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] データベースのインデックス作成はどのように行われるのですか?[クローズド]
-
[解決済み] SQL Server で複数行のテキストを 1 つのテキスト文字列に連結する方法
-
[解決済み] JOINとINNER JOINの違いについて
-
[解決済み] SQL Serverでシングルクォートをエスケープするにはどうすればよいですか?
-
[解決済み] INNER JOINよりもCROSS APPLYを使用すべきなのはどのような場合ですか?
-
[解決済み] SQL Serverでレコードを削除した後、IDシードをリセットする。
-
[解決済み] フラットテーブルをツリーにパースする最も効率的/エレガントな方法は何ですか?
-
[解決済み] SQL Serverで結果をページ分割する最も良い方法は何ですか?
-
[解決済み] Selectステートメントで特定のフィールドの重複を検索する
-
[解決済み】なぜデータベースにViewを作成するのですか?