Во-первых, я прошел здесь десятки вопросов, связанных с моим, но не смог найти то, что искал, поэтому снова задаю, казалось бы, дублирующий вопрос.
У меня есть требование дляАнкета из примерно 30 фиксированных вопросов для всех пользователей, которые могут иметь,
- Параметры одиночного выбора (Текст или Текст с изображениями)
- Варианты множественного выбора (Текст или Текст с изображениями)
- Свободный текст
- Поля даты
Нет правильного или неправильного ответа, так как вопросы обслуживают предпочтения пользователя. Я работал над схемой Postgres, которая выглядит примерно так:
- Таблица вопросов -
id int
question varchar
description varchar
type varchar -> single select/multi select or free text with no options
createdAt timestamp
updatedAt timestamp
- Параметры -
questionId int -> foreign key to questions.id
type varchar -> text or text with image
text varchar
image varchar
createdAt timestamp
updatedAt timestamp
--- Ответы ---
questionId int -> foreign ref to questions.id
option int -> foreign ref to options.id
value varchar -> free text in case a question didn't have options
options ? -> array of option ids?
userId int -> foreign ref to users.id
createdAt timestamp
updatedAt timestamp
Теперь я не уверен, как лучше сохранить параметры в таблице ответов в случае множественного выбора. Сохранить массив идентификаторов опций? но это сделало бы меня неспособным даже иметь внешний ключ ref в таблице параметров и могло бы затруднить запрос, так как мне нужно было иметь возможность запрашивать пары вопрос-ответ для всех вопросов отдельным пользователем, этот массив не помог бы мнеЗаполните варианты, которые он выбрал. Пожалуйста, помогите мне найти лучший способ сохранить это.