2010-04-13 48 views
1

我需要將一組數字存儲在從電子表格導入的數據庫中。如何存儲可以在數據庫中具有其他狀態的數值?

有時一個數字只是一個數字。但在其他時候,價值可能是「缺失」,「N/A」或空白,這些都代表不同的事情。

什麼是將這些數字存儲在數據庫中的好方法?本來我只需要考慮N/A。所以我把它做成了-1,因爲我輸入了它們(這隻有在數字永遠不會變成負數的情況下才有效)。我可以使用其他負數來表示其他狀態。但是,這對我來說似乎很笨重。

我應該將數字存儲爲字符串,然後在使用時應用轉換嗎? 我應該創建一個存儲每個值的不同狀態的匹配表嗎?

回答

4

您需要兩個字段 - 狀態和數量

+0

貌似共識是,我需要兩列。所以這個Q不是特定於Scott的,而是所有的:如果我有20列,那麼我是否需要20個額外的狀態列,總共40列?這似乎太多了。這就是爲什麼我原本以爲有一個單獨的表來存儲狀態會更清潔。有什麼想法嗎? – 2010-04-14 15:29:21

+0

這些數字應該在一個單獨的表中,就好像狀態不是數字一樣,數字字段中沒有任何內容 – Mark 2010-04-15 14:25:10

2

使用-1從一開始就是一個不好的設計:你應該一直使用NULL,並在這一點上,你可以添加輔助列來存儲爲什麼狀態碼一個NULL價值在那裏。

0

不存儲爲字符串並轉換使用,這是最糟糕的,因爲您將不得不花費資源來轉換每次(永遠)您使用數據。

存儲兩個領域:

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

我就需要兩個領域的地位和數量一致(所以我KM和斯科特同意)

的原因包括,如果你有什麼,但在電子表格中的數字(這包括-1和NULL),那麼像SUM和average這樣的聚合函數將不會給出正確的答案。

有一個額外的字段來給出其值包括缺少的狀態,N/A和數字,當你有一個數字,讓你能夠查詢這些狀態。

使用NULL不是myuch這裏使用,因爲它不會丟失和N/A區分值

相關問題