0

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

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

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

4

2 回答 2

3

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

如果您有两列并存储了数值和单位,那么数据库将更难查询。例如,查询“谁拥有超过 10 gigs 的存储空间”将涉及内联计算来处理所有可能的单位。与以标准单位表示的列相比,这将证明难以索引。

如果用户输入以千兆字节为单位的数字,您可能不希望将它们显示为大量字节。这是一个用户界面问题——你会写一些东西来以最有用的单位显示字节数。

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

于 2013-04-03T23:02:13.263 回答
0

我在这里为类似的东西写了一个答案自定义单位转换

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

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

于 2013-04-07T10:27:11.987 回答