введите неизвестное количество полей в mysql – лучшая структура для этого?

Мне нужно хранить данные, которые были отправлены из нескольких форм – забавный бит, так как эти формы будут созданы компоновщиком форм. Я планирую предоставить пользователям доступ, я не знаю, сколько полей будет в форме, или сколько полей пользователь будет отправлять. Я подумал о структуре таблицы, подобной следующей (сама форма сохраняется как php для include):

| FormId | FormType | InputID | InputType | LongText | Text | Date | 

FormId относится к другой таблице, хранящей местоположение файла формы и т. Д. Для включения (например, ниже), Идентификатор ввода относится к вводу на странице.

 | FormId | FormType | PathToForm | DateCompleted |...etc 

ввод «a» из формыId 1 может выглядеть так:

 <input id="a" name="a" type="text" value="example"/> 

тогда как ввод «a» из formId 2 может выглядеть так:

 <textarea name="a" id="a"></textarea> 

Что я могу записать в таблицу следующим образом:

 | FormId | FormType | InputID | InputType | LongText | Text | Date | -------------------------------------------------------------------------- | 1 | 1 | a | text | NULL | example | NULL | | 2 | 2 | a | textarea | example | NULL | NULL | 

Количество «входов» для каждой формы потенциально неограниченно – входы на разных шаблонах форм могут быть разных «типов» каждый раз.

Мой вопрос (наконец!) – это лучший способ, которым я могу это сделать? Я знаю, что сохранение вывода формы в каждой строке не совсем идеально, но без наличия сотен таблиц и, не теряя возможности извлекать данные с пользой, когда мне это понадобится в будущем (через «FormType») не уверен в каком-либо другом способе структурирования. На самом деле это не похоже на что-то подобное, извините, если это звучит глупо!

Related of "введите неизвестное количество полей в mysql – лучшая структура для этого?"

В этой ситуации есть что-то в mysql 5.7. Тип JSON .

Что вы можете сделать, это преобразовать форму в ассоциативный массив, а затем сохранить это в поле JSON.

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