#html #data-structures #orm #relationship #denormalization
#HTML #структуры данных #orm #взаимосвязь #денормализация
Вопрос:
Как организовать информацию (в модели MVC), чтобы представить этот реальный пример:
Опрос — может содержать несколько вопросов и несколько человек, которые на них ответят
Вопрос — только один ответ — да или нет
PersonAnswer — тот, который отвечает на вопрос
Пример отображения:
Моя реализация на данный момент такова:
DB
Опрос — Вопрос — один ко многим
Вопрос — Персональный ответ — один ко многим
код контроллера: — псевдокод
- Опрос.Вопросы поиска
- Выполните цикл для каждого вопроса и найдите все ответы
- результатом является map — Survey = [Вопрос1: список ответов1, Вопрос2: Список ответов2]
- При циклическом просмотре HTML-кода на карте я могу отображать информацию
Проблемы моего подхода:
- имена пользователей заголовка должны быть вычислены
- необходима сортировка списков, иначе ответы будут смешанными
- Как правильно управлять, если пользователь не ответил на вопрос — должен ли я сохранить его в базе данных?
Обновление: Я использую java и mysql.
Ответ №1:
Мой подход к этому вопросу сначала касался бы базы данных:
В моем случае я бы сделал это так:
Have a table of
users->represents db users
surveyitems->with item(questions) and id(probaby autoincrement integer pkey),
surveycheks->representing the users and their checks having({
id(pkey),
checkid(foreign_key ->to surveyitems table id)
yeschecked(representing the yes)
nochecked(representi)ng the nos
})
Тогда в ваших представлениях, например, при использовании yii php framework
use gii tool to generate models and crud //here you can use your own
logic of saving data to db
On your survey form
1. load all surveys from table surveyitems with id and items()// display item
2. Have radio buttons with values of id(from survey items);
3.. when saving loop through all checked yes or nos and store them in surveycheks
Я надеюсь, вы поняли идею