php - 使用 php + zend 测量单位的良好数据库模式?

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

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

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

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

数据在多个表中:

Table1 : weightMeasure1 lengthMeasure1 TemperatureMeasure1

Table2 : weightMeasure2 lengthMeasure2 FlowMeasure2

Table3 : flowMeasure3

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

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


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

如何管理用户单元偏好?


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

我将创建一个属性表:

property : property_id name column unit

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

我将创建一个user_property_unit 表来管理用户偏好:

user_property_unit : user_id property_id unit

  • unit 是 Zend 常量字符串,定义属性在用户界面中显示时的单位。例如,它可以是 property 表的单位列中的 SQUARE_METERuser_property_unit 的单位列中的 SQUARE_FOOT >

我发现此解决方案存在的问题是:

  • 使用 table name + column name 的 concat 对我来说似乎不合适......
  • 如果我更改其中一个列的名称,它不会反射(reflect)在 property 表中。

感谢您的帮助!!


更新 有没有人甚至可以提供一些提示来帮助我?

最佳答案

您想要一个单独的 PROPERTIES 表和一个单独的链接表 TABLECOLUMNPROPERTY,使特定属性成为列的属性。

      PROPERTIES
      propid
      name
      unitid      FK references UNITS table


     TCP
     (tablename,columnname) composite PK
     propid


     UNITS
     unitid
     etc etc

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

相关文章:

mysql - 获取最后更新的行

php - htmlspecialchars 是否足以防止对用单引号括起来的变量进行 SQL 注入(inject)?

sql - 基于另一列的 PostgreSQL 序列

php - SQL : INSERT if no exist and UPDATE if exist

python - 将数据库用作 Custom_Storage 和 Libtorrent (Python)

javascript - 如何动态更新字段而不刷新且不占用服务器?

php - 从 WooCommerce 中的当前产品类别获取同级术语 ID 列表

mysql - laravel 两个相同的 ownTo() 关系,一个返回数组,另一个返回字符串

php - Laravel 干预图像不起作用

php - 从 mysql 数据库获取日期到 PHP 的下拉框中