我想在公司数据库中存储公制单位 - 我应该使用哪种数据类型?

时间:2011-03-29 05:05:19

标签: mysql database-design postgresql

我想存储最终显示在Imperial / US(例如6英尺4)的数据库中的高度,该数据库当前是MySQL(我计划迁移到PostgreSQL)。

我想知道哪种单元对这种类型的存储有好处,我应该使用哪种列类型?我在考虑厘米/公制系统和一些数字列类型,但如果有人可以提供洞察力,那就太棒了。

6 个答案:

答案 0 :(得分:1)

我认为这主要取决于对数据进行的操作。如果要将其存储并检索以供显示,则将其存储为文本。如果您需要进行平均值和范围等计算,请在缩小到基本测量单位(例如,英寸或百分之一英寸)后将其存储为数字类型。整数或浮点类型的选择又取决于您需要执行的计算。

在数据库中转换为公制然后再返回到英制单位以输出的唯一原因是,如果由于某些其他原因需要公制,并且比在英制中生成输出更重要/更频繁。否则你所做的就是在两个方向上引入舍入误差。

答案 1 :(得分:1)

使用int数据类型将其存储为厘米。注1cm = 0.39370078740157477in

答案 2 :(得分:1)

如果它们是连续数量,则将它们作为浮标存储在米中,并在报告中转换为米,米+厘米,英尺,弗隆。

如果它们是您不希望出现舍入错误的固定单位,例如产品尺寸,则将它们存储为最小公制细分ml,mm,mg等中的int并再次转换输出

答案 3 :(得分:0)

关闭我的头脑,我无法理解为什么任何数据库都会比任何其他数据库更好地存储公制单位和帝国单位。在解决存储测量的问题时,我看到了两个主要的思想流派。存放在最小的合理单位中,并将其作为一切的基础(即一切都以克和厘米为单位)。如果你使用混合单位,另一种方法是使用比例存储单位,但这可能会使设置更加复杂。

如果不可能以高于基本单位的分辨率进行测量,则可以使用int或long来存储该值。

答案 4 :(得分:0)

如果你只是要在帝国展览中展示,那么很可能没有理由存储在公制中。只需使用int来存储英寸数,您就可以省去麻烦。如果您需要更高的分辨率,请:

  • 使用int来存储(例如)十分之一英寸
  • 使用数字存储小数值

由于您只存储“数百/数千人的高度”,因此存储问题不太可能令人担心。

答案 5 :(得分:-2)

这可能听起来很尴尬,但如果帝国措施是默认的话,它可能适合你。 我将CHAR(2)中的长度存储为HEX值。 6英尺11英寸变为6B,该列是可排序的,并且您没有在存储公制长度时可能发生的舍入问题。