Лучшая схема MySQL для приложения, которое требует динамически построенных форм? - PullRequest
3 голосов
/ 29 мая 2011

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

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

Данные могут быть текстовыми или числовыми, и они будут похожи на сетку - сравнивая различное оборудование, например:

Report #234 for Job Site 1

            EquipmentA  EquipmentB  EquipmentC
Condition   Fair        Good        Excellent
AZ425 Level 100 (ml)    84 (ml)     75 (ml)
Runtime     134 (hr)    400 (hr)    50 (hr)
Comment     Supply XX is running low.

============================

Report #3 for Job Site 2

            TankA       TankB
G00 Level   40%         10%     
Weight      500 (kg)    1000 (kg)   
pH          8.12        1.35
Visual Ins  Tank A has a crack near the bottom

Я планирую использовать CakePHP / MySQL

Какова будет лучшая схема MySQL для этой ситуации (или XML будет иметь больше смысла)?

Это то, с чем я работаю до сих пор:

Table 'Forms'
Cols: id, ref_number, job_site (fk), description, creation_date

Table 'Form_Controls'
Cols: id, form_id (fk), type (text, numeric, select), options (serialized data for dropdown list if a type 'select'), metric (hour, ml, kg, etc)

Table 'Form_Instance'
Cols: id, form_id (fk), technician (fk), creation_date

Table 'Form_Data'
Cols: id, control_id (fk), instance_id (fk), value, comparator (EquipmentA / EquipmentB, etc)

Является ли эта схема наиболее эффективной для этой ситуации?

Ответы [ 2 ]

2 голосов
/ 29 мая 2011

Похоже, шаблон Entity-Attribute-Value может пригодиться здесь.Это может быть легко смоделировано в БД, как MySQL

0 голосов
/ 29 мая 2011

Это звучит как то, где пара ключ-значение или ориентированное на документы хранилище данных может быть лучше.Есть множество так называемых баз данных NoSQL на выбор , но, возможно, MongoDB может быть хорошим местом для начала.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...