ragnar_ok
@ragnar_ok

Как сохранять ответы пользователей на открытые вопросы анкеты (заранее не подготовленные)?

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

5d498b3422c39783121428.png
  • Вопрос задан
  • 95 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы