Настраиваемые пользователем формы с php и mysql
Онлайн-приложение, которое мы создаем (php & mysql), требует, чтобы пользователи могли создавать свои собственные формы для сбора данных и записывать эти данные в базу данных, соблюдая существующие ORM.
Если формы "жестко запрограммированы", то мы просто установим таблицы db для хранения нормализованных данных сами, однако, поскольку наши пользователи определяют поля формы, содержащиеся в формах, мы не уверены, каков наилучший способ приступить к реализации эта функциональность.
Нужно ли думать о каком-то метаданных или уровне абстракции данных для нашей БД? Google не слишком помог, так как мы не уверены, как нам это сделать.
Любые указатели в правильном направлении будут с благодарностью!
2 ответа
Многие системы управления контентом решают эту проблему по-разному.
Например, в Drupal пользователи могут создавать свой собственный пользовательский контент (с пользовательскими формами) через модуль CCK. Модуль определяет различные типы полей, которые пользователь может создать, а затем создает таблицы с конкретными типами данных для хранения данных.
Несколько советов:
Определите свои типы полей. Подумайте о предоставлении пользователям выбора различных типов полей (например, поле выбора, строка, радио).
Создание таблиц для пользовательских полей. Каждый тип поля будет иметь определенный тип данных SQL. Определите таблицу, используя эти типы данных. Например, поле выбора может быть сопоставлено с перечислением, а элемент ввода текста может быть сопоставлен со столбцом varchar.
Добавить данные в новые таблицы - используйте новые таблицы для хранения данных в несколько нормализованном виде.
Очевидно, есть много разных подходов, но это всего лишь несколько предложений.
Я думаю, что нашел решение своей проблемы, поэтому для всех тех, кто сталкивается с подобной проблемой, взгляните на следующие статьи:
http://www.adaniels.nl/articles/an-alternative-way-of-eav-modeling/
http://weblogs.sqlteam.com/davidm/articles/12117.aspx
Надеюсь это поможет.