如何存储可以在数据库中具有其他状态的数值?

时间:2010-04-13 20:09:28

标签: database

我需要在数据库中存储一组从电子表格导入的数字。

有时候一个数字只是一个数字。但在其他时候,价值可能是“缺失”,“不适用”或空白,这些都代表不同的东西。

将这些数字存储在数据库中的好方法是什么?最初我只需要考虑N / A.因此我在导入它时将其设为-1(这仅在数字永远不会显示为负数时才有效)。我可以使用其他负数来表示其他状态。然而,这对我来说似乎很笨拙。

我应该将数字存储为字符串然后在使用时应用转换吗? 我应该创建一个匹配表来存储每个值的不同状态吗?

4 个答案:

答案 0 :(得分:4)

您需要两个字段 - 状态和数字

答案 1 :(得分:2)

从一开始就使用-1是一个糟糕的设计:你本应该使用NULL,此时你可以添加一个辅助列来存储{{1}的原因代码价值就在那里。

答案 2 :(得分:1)

我同意需要两个字段的状态和号码(所以我同意KM和Scott)

原因包括如果你有电子表格中的任何数字(包括你的-1和NULL),那么像SUM和average这样的聚合函数将无法给出正确的答案。

有一个额外的字段来提供其值包含缺失的状态,N / A和数字,当您有一个数字时,您可以查询这些状态。

使用NULL不是我在这里使用的,因为它不会区分缺失值和N / A值

答案 3 :(得分:0)

不要存储为字符串并在使用时进行转换,这是最糟糕的,因为每次(永远)使用数据都需要花费资源进行转换。

存储两个字段:

NumberValue   number
NumberStatus  char(1)  -"M"=missing, "N"=n/a, "B"=blank, "V"=have a numeric value