5

寻找关于存储和转换已知值(即米到英尺)的一般设计模式原则。一直在谷歌搜索没有运气,所以我一定错过了一些东西。

假设单个表中有许多具有各种 UOM 的字段,最佳实践是什么?目前,许多字段都是隐含的,我们正在考虑对其进行标准化。我们希望让用户可以自由地输入他们的 UOM,但其他​​人可以在他们喜欢的 UOM 中查看。

我应该存储“输入的值”并转换为一些常见的原语(用户输入英尺,然后将其转换为米并存储)?我应该将此输入的英尺值存储为审计备份吗?

我不是某些数据库表的唯一消费者,其他应用程序总是在知道值+UOM 与原始用户输入值的情况下进行转换是否更好。

是否对我可能遗漏的精度有严重的转换影响。米>英尺>米对于业务应用程序的转换应该足够可靠(转换可以到小数点后第 17 位,但显示和输入的值限制为小数点后 2-4 位)

任何其他想法或链接指向我正确的方向,所以我没有重新发明一个已知问题的解决方案?

请注意,我并没有设想一些具有运算符重载的宏大解决方案,而是更多在普通 Joe Developer 可以维护的实际应用程序中起作用的解决方案。

4

4 回答 4

2

如果您想要一个遵循 UOM 的模式,JSR-275 (java) 解决了这个问题。一个流行的实现 JSR-275 的库是JScience

至于值的存储,我只会为valuemeasurement type(例如米/英尺等)创建一个永远不会改变的列。然后可以根据要求轻松完成转换。

于 2011-03-15T07:42:36.587 回答
1

查看分析模式一书。另外,查看数量模式

于 2013-07-21T23:12:10.913 回答
0

查看此用于度量单位的 Java API:http ://www.unitsofmeasurement.org/

于 2012-03-31T04:50:02.630 回答
0

一种选择是使用数据库中的转换表。这将让您的用户以他们想要的任何方式输入度量(度量 + uom 代码),您可以在退出时动态转换它。

我前段时间回答了一个类似的问题,叫做SQL 自定义单位转换

于 2011-03-15T07:44:30.460 回答