我需要在数据库中存储一组从电子表格导入的数字。
有时候一个数字只是一个数字。但在其他时候,价值可能是“缺失”,“不适用”或空白,这些都代表不同的东西。
将这些数字存储在数据库中的好方法是什么?最初我只需要考虑N / A.因此我在导入它时将其设为-1(这仅在数字永远不会显示为负数时才有效)。我可以使用其他负数来表示其他状态。然而,这对我来说似乎很笨拙。
我应该将数字存储为字符串然后在使用时应用转换吗? 我应该创建一个匹配表来存储每个值的不同状态吗?
答案 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