Database design 如何在不损失单位重要性的情况下存储长度、内存、重量等数据,并能够比较两个值?

Database design 如何在不损失单位重要性的情况下存储长度、内存、重量等数据,并能够比较两个值?,database-design,schema,data-warehouse,Database Design,Schema,Data Warehouse,假设我必须填充类似于内存大小的数据库字段,在这些字段中,应该保存一个带有单位的数值。 如果这是我在项目中某个特定位置需要单独处理的唯一字段,那么就有可能对验证用户输入的数据所需的逻辑进行硬编码。但事实并非如此,即使考虑在源代码中嵌入1MB=1000KB之类的信息,这听起来也是非常不切实际和愚蠢的。 我需要在产品中保留这些信息,以便能够比较两个不同实体的内存大小字段 问题:在系统中使用一个单元存储标量数据的理想方式是什么,这样在不将该单元降级为无意义字符串的情况下,该单元就可以存储?并可用于比较操

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

问题:在系统中使用一个单元存储标量数据的理想方式是什么,这样在不将该单元降级为无意义字符串的情况下,该单元就可以存储?并可用于比较操作?

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

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

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

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


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

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

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

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


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

我在这里为类似的东西写了一个答案

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


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

我在这里写了一个类似的答案

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


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

我不明白你的问题。您是否在询问如何验证用户输入,或对某些值使用哪种数据类型,或其他问题?通常,当您存储一个数字时,您知道单位,并且通常列名反映了这一点,例如
FileSizeInBytes
DurationInSeconds
。当然,任何使用该数据的代码都必须知道单元是什么以及如何使用它。在同一列中使用完全不同的单位存储值是需要避免的。我不理解你的问题。您是否在询问如何验证用户输入,或对某些值使用哪种数据类型,或其他问题?通常,当您存储一个数字时,您知道单位,并且通常列名反映了这一点,例如
FileSizeInBytes
DurationInSeconds
。当然,任何使用该数据的代码都必须知道单元是什么以及如何使用它。在同一列中使用完全不同的单位存储值是需要避免的。。。数以百万计的记录以电子表格/htmls的形式呈现,没有人有时间、精力或勇气进行清理。@AnuvratParashar好吧,如果你希望使数据易于机器处理,就需要对数据进行“清理”。无论是个人还是计算机程序都是另一回事…正如我说的,在用户界面上,有很多数据。。。数以百万计的记录以电子表格/htmls的形式呈现,没有人有时间、精力或勇气进行清理。@AnuvratParashar好吧,如果你希望使数据易于机器处理,就需要对数据进行“清理”。不管是人还是电脑程序都是另一回事。。。