2010-08-27 52 views
0

在您的数据库和/或代码中。关于如何处理空值的最佳做法

您是否避免了空值或者您是否明确地编程以在逻辑中处理它们?

如何处理空值的最佳做法是什么?

+1

这取决于你订阅哪个哲学。有些人不允许在数据库中存在空值。我更喜欢在任何地方使用它们。 – 2010-08-27 09:48:07

+1

这取决于。我倾向于使用NULL作为“这部分数据未知或未指定”。 (你能标记社区Wiki的问题吗?没有“最好”的答案可能) – Piskvor 2010-08-27 09:50:16

+0

问一个更具体的问题可能会更好。这太笼统了,它取决于你需要做什么以及你编写什么样的软件。 – 2010-08-27 10:06:57

回答

1

零值的一个基本问题是,它们的解释没有单一的普遍接受的含义,因此使用空值的结果经常不一致并且与预期意义不同。

通常,空值必须隐藏或从最终用户中抽象出来。因此,如果开发人员决定将空值放入数据库中,他通常还必须确定如何在稍后再次删除它。

由于这些原因,完全避免使用空值或最大限度地减少它们的使用是有意义的。

如果您确实允许使用空值,那么您应该仔细定义这些空值的含义并对其进行正确处理,并确保您的代码正确处理它们。如果你不使用空值,那么你通常不需要这样做 - 尽管你可能想要设计你的代码,以至于即使数据库中不存在空值也不会生成空值。

1

空是“不可避免的与任何现有的SQL引擎”和“数据管理的瘟疫和霍乱一体化”。

使用SQL时,关键是要记住,您的SQL表确实处于“物理设计”级别,您希望只保留同一对象的不同属性p1,p2,p3的单个记录,由一些标识符I识别为单行(I,p1,p2,p3)。即使其中一些属性碰巧“未知”。 (我没有提到“N/A”,这个特殊含义暴露了设计缺陷)

但是,SQL级别与您的应用程序(/用户)可能想要的“逻辑级别”来处理,因为那个“逻辑层次”包含三个单独的种事实断言:“我有属性p1”,“我有属性p2”和“我有属性p3”。在的水平,你不想被这三个中的任何一个都未知的事实所困扰。

相关问题