0

私は、多くの人々によって時間をかけて開発された DB を使用しています。コストまたは価格に関連するフィールドに関しては、多くの矛盾があります。これらの列が NULL であるテーブルもあれば、NOT NULL であるテーブルもあります。テーブルとコードを特定の基準に更新することを考えています。

NULLを許可する唯一の利点は、値が設定されていない(NULL)か、値が空白に設定されている(0.00)かの違いです。列が NOT NULL の場合、すべてのレコードのデフォルトが 0.00 になり、ユーザーがどのレコードを 0.00 に設定したかを判別できなくなります。一方、ユーザーがシステムでコストまたは価格を 0.00 に設定しても意味がありません。

あなたの意見では、これに関するベストプラクティスは何ですか?

4

2 に答える 2

5

NULL は「不明」を意味します。「0.00」が価格/コストでない場合は、NULL にする必要があります。0.00 のものもあります (CD を購入すると無料の T シャツがもらえる場合など)。テーブルの「ZeroMeansNotKnown」「フラグ」に設定しないでください。それはリスコードです。

于 2013-05-01T15:12:33.623 に答える
0

これは管理の観点からはうまくいくかもしれませんが、フロントエンド アプリケーションからデータベースにクエリを実行する人はどうでしょうか? たとえば、ユーザーがコストが「0」のすべてのアイテムの検索をフィルター処理したい場合、NULL を考慮していません (ユーザーとしては考慮しない可能性が高いです)。

管理の観点から、null 列と値列の両方をクエリすることで、範囲全体をカバーするようにクエリを設定できます。

空の場合:

NULLIF(RTRIM(field), '') IS NOT NULL

null の場合:

NULLIF(RTRIM(field), NULL) IS NULL   --or simply 'IS NULL'

デフォルト値:

(COALESCE(field, '0.0') 
于 2013-05-01T15:23:10.700 に答える