#mysql #ruby-on-rails-3
#mysql #ruby-on-rails-3
Вопрос:
В приложении rails 3, использующем базу данных mysql, я создаю академический тест. Вот характеристики теста.
- множественный выбор
- 93 вопроса, состоящие исключительно из целых чисел, связанных с выбранным ответом
- Учащиеся будут пересдавать тест несколько раз и менять ответы
- При повторной проверке предыдущие ответы будут перезагружены на страницу, изменены, а затем сохранены снова.
- На странице будет по 10 вопросов
- После завершения каждой страницы ответы должны быть сохранены. Это обеспечит удобство теста, который не обязательно выполнять за один присест.
- В дополнение к кнопке «следующая страница», будет кнопка «предыдущая страница»
у меня есть несколько вопросов по этому поводу:
Должен ли я иметь одну запись базы данных для каждого ответа, в которой будут храниться student_id, question_id и ответ? Или… есть ли одна запись базы данных для каждого учащегося, которая содержит student_id и все поля для ответа на каждый вопрос?
Вопросы не будут статичными. На основе наших результатов мы планируем изменить вопросы. Мы исключим некоторые вопросы из теста, но оставим вопросы и ответы для статистических исследований. Это означает, что мы создадим новые вопросы с новыми идентификаторами. Мы должны быть осторожны при сопоставлении текущих вопросов с соответствующими ответами. Мне кажется, самым надежным способом было бы жестко закодировать каждую страницу, а не перебирать взад и вперед массив вопросов и данных. Вы согласны или не согласны?
Спасибо.
Ответ №1:
-
У меня определенно была бы одна запись базы данных для каждого ответа. Таким образом, не имеет значения, добавляете вы вопросы или удаляете их. Ответы по-прежнему будут связаны с правильным пользователем и вопросом.
-
Я не понимаю, почему ваши страницы должны быть статичными. У вас могла бы быть модель вопросов, в которой есть поле, указывающее, активен вопрос или нет. Вы могли бы даже сделать это для получения возможных ответов. Затем просто отобразите вопросы и ответы, которые активны динамически.
Я бы смоделировал это следующим образом:
class User < ActiveRecord::Base
has_many :user_answers
end
class Question < ActiveRecord::Base
has_many :user_answers
has_many :answers
end
class Answer < ActiveRecord::Base
has_many :user_answers
belongs_to :question
end
class UserAnswer < ActiveRecord::Base
belongs_to :user
belongs_to :question
belongs_to :answer
end