使用php + zend的测量单元的良好数据库架构?

时间:2010-12-16 17:34:49

标签: php sql database zend-framework units-of-measurement

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

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

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

数据在多个表中:

  

表1:weightMeasure1 lengthMeasure1 TemperatureMeasure1

     

表2:weightMeasure2 lengthMeasure2 FlowMeasure2

     

表3:flowMeasure3

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

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


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

如何管理用户单位偏好?


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

我将创建一个属性表:

  

property:property_id name column unit

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

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

  

user_property_unit:user_id property_id unit

  • unit 是Zend常量字符串,用于定义属性的单位,以便在用户的UI中显示该属性。例如,SQUARE_METER表的单位列中的propertySQUARE_FOOT
  • 的单位列中的user_property_unit可以是table name + column name

我在这个解决方案中遇到的问题是:

  • 使用property的concat对我来说似乎不对......
  • 如果我更改其中一个列的名称,则不会反映在{{1}}表格中。

感谢您的帮助!!


UPDATE  是否有任何一个为什么可以帮助我,甚至有一些提示?

1 个答案:

答案 0 :(得分:1)

您希望为PROPERTIES提供单独的表,并使用单独的链接表TABLECOLUMNPROPERTY,使特定属性成为列的属性。

      PROPERTIES
      propid
      name
      unitid      FK references UNITS table


     TCP
     (tablename,columnname) composite PK
     propid


     UNITS
     unitid
     etc etc