0

我正在使用一个由许多人随着时间的推移开发的数据库。与成本或价格相关的字段存在许多不一致之处;在某些表中,这些列是 NULL,而在其他表中,它们不是 NULL。我正在考虑将表格和代码更新到某个标准。

我看到允许 NULL 的唯一优点是未设置值 (NULL) 或设置为空白 (0.00) 的值之间存在差异。如果该列不为 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 和 value 列来设置查询以覆盖整个范围:

如果为空:

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

如果为空:

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

默认值:

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