我希望在数据库中存储身高数据,最终会以英制/美制(例如6英尺4英寸)的形式显示。目前我使用的是MySQL数据库(计划迁移到PostgreSQL)。我想知道哪种单位适合这种存储方式,应该使用哪种列类型?我认为厘米/公制系统和一些数字列类型比较合适,但如果有人能提供更多见解就更好了。
我认为这主要取决于对数据进行哪些操作。如果只是存储和检索以供显示,那么将其存储为文本。如果需要进行像平均值和范围之类的计算,则在将其缩减到基本度量单位(例如英寸或百分之一英寸)后将其存储为数字类型。整数或浮点类型的选择再次取决于您需要执行的计算。
将数据库转换为公制单位,然后再将其转换回英制单位以进行输出的唯一原因是,如果您需要公制单位用于其他原因,并且比生成英制输出更重要/频繁。否则,您只会在两个方向上引入舍入误差。
使用int数据类型将其存储为厘米。注意1厘米=0.39370078740157477英寸
就我个人而言,我看不出为什么任何数据库在存储公制单位和英制单位方面会比其他数据库更好。在处理测量存储问题时,我认为有两种主要的思路。一种是以最小合理单位存储并将其用作一切的基础(即所有单位均为克和厘米)。另一种方法是如果使用混合单位,则存储单位与比例,但这可能会使设置变得比必要更加复杂。
如果不存在比基本单位更高分辨率的测量可能性,则可以使用int或long存储值。
如果您只会显示英制单位,那么存储公制单位可能没有什么好处。您可以使用int
来存储英寸数,这样可以避免麻烦。如果您需要更高的分辨率,则可以选择以下两种方法:
int
来存储(例如)英寸的十分之一由于您只需存储“数百/数千人的身高”,因此存储问题极不可能成为一个问题。
这听起来可能有些奇怪,但如果英制度量衡是默认的话,这种方法可能适用于您。然后我会将长度存储为CHAR(2)的十六进制值。例如6英尺11英寸变成了6B,该列是可排序的,并且您不会遇到在存储公制长度时可能发生的四舍五入问题。