Как реализовать динамическую базу данных(MySQL)?
Или JSON (или т.п.) хранить.
То есть поле одно.
Но в нем вложенные поля в JSON/XML - в чем удобно.
Это работает нормально до тех пор пока тебе не нужен поиск по полям формы.
Другой вариант - работает гораздо медленнее, но идиоматически верно для реляционных СУБД, к коим относится и MySQL
Делается примерно так:
1. Таблица FieldTypes
ID Name
2. Таблица Requests
ID Somedata
3. Таблица Fields
IDType IDRequest Value
А связка будет такая
Request.ID = Fields.IDRequest and FieldType.ID = Fields.IDType
Шаблон должен иметь описание требуемых изменений в базе данных.
например для простейшего случая 1 форма = 1 таблица 1к1, каждое поле формы должно иметь информацию о типе и названии поля в базе данных (а форма соответственно содержит имя таблицы).
Отдельно описываем связи, например для справочников (где то должно быть описание имеющихся таблиц-справочников) - на форме это комбобокс, в таблице поле идентификатор с foreign key на таблицу-классификатор.
Чуть сложнее со связями 1-к-м, на форме это сложные списки (список при выделении элемента заполняется часть формы новыми данными из связанной таблицы), но это точно так же описывается прямо в шаблоне.
Точно знаю что существует несколько фреймворков для этого (например старенькая oracle forms уже тогда все это поддерживала), я их не изучал, но еще до их появления разрабатывал такую систему шаблонов и генератор, который полностью собирал базу данных, html-формы для просмотра, редактирования и поисковые формы.
Из заметных сложностей, если заранее не продумать, сложно реализовывать изменение уже существующей базы (удаление таблиц, связей, полей).
Еще проблемы создают любые отклонения от стандарта отображения форм, так как они выглядят очень однообразно, но в шаблоне можно продумать информацию о стилях (откуда брать html код для каждого элемента), порядке и местах размещения элементов на форме и прочее.