2

ここであまりにも明白な質問をしないことを願っています。計算カラムの非正規化時のトレードオフは何ですか?

私の現在のプロジェクトでは、SQL Server 2008を使用して比較的単純なデータベースを設計しています。テーブルの1つとして、「計算列」(永続化されていない)を導入することに決めました。その表現は単純に2つの他の数値列の積であり、その唯一の存在理由は便利です(私はウェブページにいくつかの一方向データバインディングを行っています)。

しかし、計算された列を使用すると、最初の正規形に違反することがわかりました。これは私に不思議に思った:ワットはトレードオフですか?私の計算カラムの唯一の理由が便利なのであれば、それは非正規化より重要ですか?

+4

明らかに、他の層で計算できるものを計算し、追加の列を返すことによってネットワークトラフィックをわずかに追加すると、データベースサーバーにわずかなCPUオーバーヘッドがあります。永続化されていない場合は、CUD操作のための追加のオーバーヘッドはなく、ディスク容量は必要ないため、追加のI/Oは発生しません。 –

+0

SQLテーブルが少なくとも1つのキーを持ち、一意の列名を持ち、すべての列がnull値ではない場合、SQLテーブルは1NFにあります。永続化されていないか、計算された列が1NFに違反しない – sqlvogel

答えて

1

"計算された列を使用すると、最初の正規形式に違反します":全くありません!保存されていないため、常に最新のデータで再計算されます。したがって、ビュー内に計算された列を持つような優れたソリューションです。

+0

計算された列が永続化されない限り、正規化には影響しません。 –

+0

@rewinder:それは私が信じるものです、はい! –

0

その発現は、単純に2つの他の数値列の積 あると存在のためにその 唯一の理由は、 便利(私はWebページにはいくつかの一方向 データバインディングをしています)です。

次に、計算をデータベースではなくSELECTステートメントに入れてください。

関連する問題