7

SQL VIEWは、永続化される場合とされない場合があるグローバルな論理テーブルです。しかし、それはまだテーブルです。したがって、VIEWは常に第一正規形(1NF)に準拠する必要がありますか?つまり、重複する行はなく、スカラータイプのみ、上から下または左から右の順序などはありません。より高い正規形はどうでしょうか。

私にとって、私のアプリケーションはストアドプロシージャの結果を「消費」し、ビューはSQLクエリによって「消費」され、これら2つの使用法は相互に排他的です(つまり、SQLを使用してストアドプロシージャの結果セットをクエリせず、アプリケーションはクエリを実行しませんSQLコードを含む)。他の人がVIEWを使用して、列内の複数の値を1つの行(通常はコンマ区切り形式)に「連結」するのを見てきました。このような列に対してSQLクエリで述語を記述するには、次のような応急修理が必要です。

',' + concat_col + ',' LIKE '%' + ',' + search_value + ',' + '%'

したがって、クエリできるすべてのテーブルがスカラー型のみで構成されていることを期待するのは妥当なようです。私はこれを考えることによってあまりにも「純粋」であるのですか?

4

7 に答える 7

9

いいえ-プログラムに必要な出力に一致するビューを作成します。

于 2009-06-26T13:17:47.480 に答える
4

リレーショナルシステムの要点は、効率や管理のしやすさのためにデータを正規化された関係に保ち、関係演算子を使用してそれらを必要な関係に変換することです。

マテリアライズド化されていないビューは保存されず、クエリです。

そのため、アプリケーションのニーズに最適な形式で作成する必要があります。

詳細については、この回答を参照してください。

于 2009-06-26T13:21:01.203 に答える
3

It makes perfect sense to ensure your views are normalized to at least 1NF. Permitting duplicates for example has the disadvantage that the meaning of the view is made ambiguous and information may be misidentified by users. Incorrect data could occur if tables are updated based on such ambiguities.

E.F.Codd didn't necessarily agree though. In his RM version 2 book he proposes allowing views without keys - a big mistake I think. Codd's views don't actually permit duplicates but they do allow every column to be nullable and therefore don't have keys and aren't in 1NF.

A string value containing a comma-delimitted list is not itself a violation of 1NF. A string value is a scalar like any other value, whatever it contains. Most SQL DBMSs don't permit multi-valued attributes.

于 2011-04-27T12:10:35.230 に答える
1

Chris Dateによると、ビューは完全に正規化する必要があります。

どの関係を基本関係にするか、どのビューを作成するかは任意です。簡単な例として、従業員がいて、すべての従業員を含む基本関係があり、東海岸の従業員と西海岸の従業員が2つのビューである場合があります。または、東海岸と西海岸の従業員を2つの基本的な関係として持ち、それらすべての結合をビューとして導き出すこともできます。それは完全に恣意的です。

クリス・デイトへのDBMSインタビュー-1994年10月

于 2012-01-26T11:39:43.990 に答える
1

これはルールではないと思いますが、もしそうなら-常にルールに従うべきではありません。

于 2009-06-26T13:23:48.887 に答える
0

ビュー(マテリアライズ/インデックス付きビューでない限り)は、保存されたクエリに他なりません。ビューには複数のテーブルを含めることができ、同じテーブルへの自己結合などを行うことができます。

于 2009-06-26T13:24:12.473 に答える
-2

いいえ - 正規化ルールは、データの表示ではなく、データの永続性に適用されます。たとえば、ビュー内の行が重複すると、1NF が壊れてしまいますが、これは明らかに過度に制限的です。

詳細については、「第 1 正規形」を参照してください。

于 2009-06-26T13:40:46.747 に答える