Проектирую MySQL базу данных для хранения анкет и ответов пользователей на вопросы этих анкет. На основе данных из базы формируется JSON. Разрабатываем REST API.
Пользователь заполняет данные (
name,
email,
position,
tel...) и таким образом получает
user.id. Затем отвечает на вопросы (таблица
question) анкет (таблица
survey). В результате ответы пользователя сохраняются в таблице
answer.
Ответ пользователя может быть заранее подготовлен в таблице
options. А может быть не подготовлен. Поэтому кроме таблицы
answer_options, которая содержим выбранные пользователем варианты ответов (многие-к-многим) таблица
answer содержит поля:
-
text (ответ на вопрос как текст),
-
num (ответ на вопрос как число),
-
yn (ответ на вопрос как логический тип).
Таблица
input_types содержит тип элемента формы (например,
<input type="text"/>.
Таблица
insert_types содержит имя поля в таблице
answer (
yn,
text,
num или
options).
API выводит вопрос в таком виде:
{
"id": 1,
"label": "Годовой оборот компании?",
"placeholder": "Введите число",
"required": true,
"input_type": {
"name": "text"
},
"insert_type": {
"name": "num"
}
}
Фронт смотрит
insert_type и может отправить такой объект ответа на вопрос:
{
"user": 1,
"question": 1,
"num": 100
}
API читает объект и сохраняет в таблице
answer (свойство
num сохраняется в
answer.num)
Мне не нравится то, что фронту приходится смотреть
insert_type. Как принято сохранять ответы пользователей на открытые вопросы анкеты (заранее не подготовленные)?