альтернативы структуры базы данных mysql в приложении rails 3

#mysql #ruby-on-rails-3

#mysql #ruby-on-rails-3

Вопрос:

В приложении rails 3, использующем базу данных mysql, я создаю академический тест. Вот характеристики теста.

  • множественный выбор
  • 93 вопроса, состоящие исключительно из целых чисел, связанных с выбранным ответом
  • Учащиеся будут пересдавать тест несколько раз и менять ответы
  • При повторной проверке предыдущие ответы будут перезагружены на страницу, изменены, а затем сохранены снова.
  • На странице будет по 10 вопросов
  • После завершения каждой страницы ответы должны быть сохранены. Это обеспечит удобство теста, который не обязательно выполнять за один присест.
  • В дополнение к кнопке «следующая страница», будет кнопка «предыдущая страница»

у меня есть несколько вопросов по этому поводу:

Должен ли я иметь одну запись базы данных для каждого ответа, в которой будут храниться student_id, question_id и ответ? Или… есть ли одна запись базы данных для каждого учащегося, которая содержит student_id и все поля для ответа на каждый вопрос?

Вопросы не будут статичными. На основе наших результатов мы планируем изменить вопросы. Мы исключим некоторые вопросы из теста, но оставим вопросы и ответы для статистических исследований. Это означает, что мы создадим новые вопросы с новыми идентификаторами. Мы должны быть осторожны при сопоставлении текущих вопросов с соответствующими ответами. Мне кажется, самым надежным способом было бы жестко закодировать каждую страницу, а не перебирать взад и вперед массив вопросов и данных. Вы согласны или не согласны?

Спасибо.

Ответ №1:

  1. У меня определенно была бы одна запись базы данных для каждого ответа. Таким образом, не имеет значения, добавляете вы вопросы или удаляете их. Ответы по-прежнему будут связаны с правильным пользователем и вопросом.

  2. Я не понимаю, почему ваши страницы должны быть статичными. У вас могла бы быть модель вопросов, в которой есть поле, указывающее, активен вопрос или нет. Вы могли бы даже сделать это для получения возможных ответов. Затем просто отобразите вопросы и ответы, которые активны динамически.

Я бы смоделировал это следующим образом:

 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