存储变体UOM的最佳实践

时间:2012-12-11 09:35:02

标签: database design-patterns database-design

我正在构建一个应用程序,它将存储大量的"标记"关于人(体重,身高,血压等),并且由于用户对测量单位的测量单位都有不同的期望,我需要在智能中解决UOM的问题。办法。我想知道的是,如何就如何最好地存储这些信息达成共识。我考虑的示例如下(在每种情况下,假设前端捕获标记和与捕获相关联的UOM):

  1. 指标转换。转换为公制等效值并存储原始UOM,但仅存储度量标准(原始测量值不会丢失,尽管转换中可能会出现一些小数精度)
  2. 同时存储。存储标记,捕获UOM,然后转换为指标并存储它。这样可以轻松地实现#like; like-like-like" SQL查询度量数量,同时完美地保留了原始标记的精度,但显然存储密集程度更高。我认为插入成本略高,因为需要完成对指标的转换(但我猜这是无关紧要的)。
  3. 对我而言,除了可能产生的刺耳的用户体验之外,精确度损失并不重要。想象一下,如果用户输入160磅,然后将其报告为159.99lbs;这将是非常令人不安的,并会导致人们不相信系统。我怀疑在大多数转换中虽然我能够返回相同的数字而不需要过多地增加DB中的精度。这种感觉只是我阳光明媚的乐观主义,而不是我测试过的东西。

1 个答案:

答案 0 :(得分:1)

存储两者感觉都是个坏主意。您必须确保这些值保持一致并且违反DRY(don't repeat yourself)原则。

您对存储空间和演示文稿感到困惑。如果您要存储重量,那么您应该存储为一个表示,然后以用户所需的任何表示形式出现(例如千克,吨,吨,克,石头,磅,盎司等)。

可以存储单位以及幅度(例如10公斤,4石头等),但这会使比较成问题,例如对小于2盎司的实体的SQL查询必须执行转换。我认为在演示时执行UOM转换是一种一致且直观的解决方案。