Хорошая схема БД для единиц измерения с php + zend? - PullRequest
2 голосов
/ 16 декабря 2010

Я работаю над веб-приложением, в котором хранится много данных измерений.

Эти меры имеют разные типы, такие как температура, расход, вес, концентрация ...

Я сейчас пытаюсьреализовать диспетчер единиц измерения , позволяющий пользователям приложения выбирать, какую единицу измерения они хотят для каждой меры.

Данные представлены в нескольких таблицах:

Таблица 1: весИзмерение1 длинаМерию1 ТемператураМерность1

Таблица2: весМерза2 длинаМизер2 FlowMeasure2

Таблица3: flowMeasure3

Пользователи смогут независимо выбирать единицы измерения для каждой меры,Таким образом, выбор не будет метрический / имперский .

Все данные будут сохраняться в единице СИ или производной СИ в Базе данных.Поскольку я использую PHP для своего приложения, я решил использовать Zend_Measure для обработки преобразования (задав этот вопрос ).


Как определить единицу измерения каждого измерения в моей базе данных?

Как управлять настройками пользовательских единиц измерения?


Это лучшее решениечто у меня есть:

Я создам свойство таблица:

свойство: property_id имя единица столбца

  • property_id - уникальное увеличенное число (PK)
  • name - удобочитаемое имя (необязательно)
  • столбец - это объединение имени таблицы и имени столбца (ограничение Unique).Например: table2_lengthMeasure2
  • unit - это константа Zend, определяющая единицу свойства в базе данных.Например: SQUARE_METER, KILOGRAM_PER_HOUR, ... более подробная информация доступна в Zend Framework API .

. Я создам user_property_unit таблицудля управления пользовательскими настройками:

user_property_unit: user_id property_id unit

  • unit - это константа Zend, определяющая единицу измерения свойствакогда он будет отображаться в пользовательском интерфейсе для пользователя.Например, это может быть SQUARE_METER в столбце единиц в таблице property и SQUARE_FOOT в столбце единиц в user_property_unit

Проблемы, которые я вижу с этим решением:

  • Использование конкатата table name + column name мне кажется неправильным ...
  • Если я изменю имя одного из моих столбцов, оно не будет отражено в propertyТаблица.

Спасибо за вашу помощь !!


ОБНОВЛЕНИЕ Есть ли кто-нибудь, почему может помочь мне даже с некоторыми советами?

1 Ответ

1 голос
/ 28 декабря 2010

Вы хотите иметь отдельную таблицу для PROPERTIES и отдельную таблицу связывания TABLECOLUMNPROPERTY, которая делает конкретное свойство атрибутом столбца.

      PROPERTIES
      propid
      name
      unitid      FK references UNITS table


     TCP
     (tablename,columnname) composite PK
     propid


     UNITS
     unitid
     etc etc
...