2

我正在开发一个存储大量测量数据的 Web 应用程序。

这些措施有不同的类型,如温度、流量、重量、浓度......

我目前正在尝试实现一个度量单位管理器,让应用程序的用户为每个度量选择他们想要的单位。

数据在多个表中:

表 1:重量测量 1 长度测量 1 温度测量 1

表2:weightMeasure2 lengthMeasure2 FlowMeasure2

表 3:流量测量 3

用户将能够为每个度量独立选择他们想要的单位。所以它不会是一个公制/英制的选择。

所有数据都将保存在数据库中的SI 或 SI 派生单位中。因为我在我的应用程序中使用PHP,所以我决定使用Zend_Measure来处理转换(在问了这个问题之后)。


如何在我的数据库中定义每个度量的单位?

如何管理用户单位偏好?


这是我迄今为止最好的解决方案:

我将创建一个属性表:

property : property_id 名称列单位

  • property_id是唯一的递增数字 (PK)
  • name是人类可读的名称(可选)
  • column是表名和列名的串联(唯一约束)。例如 :table2_lengthMeasure2
  • unit是定义数据库中属性单位的 Zend 常量字符串。例如:SQUARE_METER、、KILOGRAM_PER_HOUR... Zend Framework API中提供的更多详细信息。

我将创建一个user_property_unit表来管理用户首选项:

user_property_unit : user_id property_id 单位

  • unit是 Zend 常量字符串,用于定义属性在 UI 中显示给用户时的单位。例如,它可以SQUARE_METER在表格的单位列中,也可以在property表格SQUARE_FOOT的单位列中。user_property_unit

我在此解决方案中看到的问题是:

  • 使用 concattable name + column name对我来说似乎不合适......
  • 如果我更改其中一列的名称,它将不会反映在property表中。

感谢您的帮助!!


更新有没有人可以帮助我,即使有一些提示?

4

1 回答 1

1

您希望有一个单独的 PROPERTIES 表和一个单独的链接表 TABLECOLUMNPROPERTY,它使特定属性成为列的属性。

      PROPERTIES
      propid
      name
      unitid      FK references UNITS table


     TCP
     (tablename,columnname) composite PK
     propid


     UNITS
     unitid
     etc etc
于 2010-12-28T17:15:26.883 回答