SQL Server - 在列中存储多个十进制值?

时间:2010-05-19 13:44:11

标签: sql-server tsql

我知道在列中存储多个值。不是个好主意。

它违反了第一个正常形式---它表示没有多值属性。规范化期间......

我正在使用SQL Server 2005

我有一个表需要存储测量的下限和超限限制,将其视为最小和最大速度限制...只有问题只是hundread的2%我需要上限。我只会有下限数据。

我正在考虑将这两个值存储在一个列中(稀疏列在2008年引入,所以不适合我)

有办法......?不确定XML ..

3 个答案:

答案 0 :(得分:2)

你必须为此存储疯狂的行数。 1TB磁盘的价格现在是60美元!

两个浮点数占用8个字节; XML字符串将使用其中的多个来存储一个浮点数。因此,即使XML只存储一列而不是两列,它仍然会占用更多空间。

只需使用可以为空的列。

答案 1 :(得分:2)

要回答您的问题,您可以将其存储为具有您知道如何解析的特定格式的字符串(例如“low:high”)。

但是......这真的不是一个好主意。

处理98%的具有NULL值的行为上限是完全正常的恕我直言。保持清洁,以后你不会后悔。

答案 2 :(得分:1)

即便如此,我同意Andomar的看法。使用两个柱,下限和上限。如果任何一个值可能未知,请将这些列设为可为空。

或者,指定默认的任意最小值和最大值,并使用这些值而不是空值。 (这样做意味着你永远不必乱用三元逻辑,例如必须用ISNULL或COALESCE包装所有内容。)

定义架构后,可以使用一些技巧来减少存储空间(例如压缩和sparce列)。