Проектирую 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
. Как принято сохранять ответы пользователей на открытые вопросы анкеты (заранее не подготовленные)?