如何存储长度,内存,重量等数据而不会失去单位的重要性,并能够比较两个值?

时间:2013-04-03 21:33:59

标签: database-design schema data-warehouse

假设我必须填充类似于内存大小的数据库字段,其中应该保存具有单位的数值。 有可能对验证用户输入的数据所需的逻辑进行硬编码,这是我在项目中单独在一个特定地点处理的唯一字段。但事实并非如此,即使考虑在源代码中嵌入1 MB = 1000 KB之类的信息,这听起来也是不切实际和愚蠢的。 我需要在产品中保留这些信息,以便能够比较两个不同实体的内存大小字段。

问题:将一个单元存储在系统中的标量数据的理想方法是什么,这样单元不会将单元降级到意义较小的字符串?并且可以用于比较操作吗?

编辑: 数据来自我无法控制的来源,例如由第三方导出的电子表格或从网页上删除的数据等。这些单位可能是任何东西。希望它能使问题清楚。

2 个答案:

答案 0 :(得分:3)

在这种情况下,我会将输入规范化为一致的单位。因此,在您的示例中,您将规范化为字节,或者可能是兆字节。

如果您有两列并且存储了数值和单位,则数据库将更难查询。例如,查询"谁拥有超过10演出的存储"将涉及内联计算以处理所有可能的单位。与以标准单位表示的列相比,这将难以索引。

如果用户输入千兆字节的数字,您可能不希望将它们显示为大量字节。这是一个用户界面问题 - 您可以编写一些内容来显示最有用单元中的字节数。

如果您严格需要使用与输入相同的单位显示值,则添加" displayUnits"列旁边的字节数。在用户界面中使用它。

答案 1 :(得分:0)

我在这里写了类似的答案Custom unit conversion

基本上,您希望存储“度量单位”以及度量。例如,值列中的值为“100”,unit_of_measure列中的值为“KB”。 如果您需要将此与具有“100”和“MB”的另一行进行比较,则需要先将它们转换为常用度量。这可以通过我在另一个答案中显示的转换表来完成。

如果可能的话,您应该在将数据插入表格之前努力规范化措施。从大多数角度来看,这样做更好。如果做不到这一点,我认为使用转换表是可行的方法。