我正在开发一个存储大量测量数据的web应用程序。
这些措施有不同的类型,如温度,流量,重量,浓度…
我目前正在尝试实现一个度量单位管理器,让应用程序的用户为每个度量选择他们想要的单位。
数据在多个表中:
表1:重量测量1长度测量1温度测量1
表2:重量测量2长度测量2流量测量2
表3:流量测量3
用户将能够独立地为每个度量选择所需的单位。所以这不是公制/英制的选择。
所有数据将保存在数据库中的si或si派生单位中。因为我的应用程序使用的是php,所以我决定使用Zend_Measure来处理转换(在询问这个question之后)。
如何定义数据库中每个度量的单位?
如何管理用户单元首选项?
这是目前为止我得到的最好的解决方案:
我将创建一个属性表:
属性:属性ID名称列单位
属性ID是唯一的递增数字(pk)
名称是人类可读的名称(可选)
列是表名和列名(唯一约束)的连接。例如:table2_lengthMeasure2
unit是定义数据库中属性的单位的zend常量字符串。例如:SQUARE_METERKILOGRAM_PER_HOUR,…Zend Framework API中提供了更多详细信息。
我将创建一个用户属性单元表来管理用户首选项:
用户属性单位:用户id属性单位
unit是zend常量字符串,用于定义属性在用户界面中显示时的单位。例如,它可以是SQUARE_METER表的unit列中的property,也可以是SQUARE_FOOT表的unit列中的user_property_unit
我看到这个解决方案的问题是:
在我看来,使用table name + column name的concat是不对的…
如果我更改一个列的名称,它将不会反映在property表中。
谢谢你的帮助!啊!
更新
有没有人能帮我一些小技巧呢?

最佳答案

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

      PROPERTIES
      propid
      name
      unitid      FK references UNITS table


     TCP
     (tablename,columnname) composite PK
     propid


     UNITS
     unitid
     etc etc

关于php - 适用于php + zend的度量单位的良好DB模式?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4463667/

10-14 00:39