2011-05-02 75 views
1

在使用mysql数据库的rails 3应用程序中,我创建了一个学术测试。这里是测试特性。在rails 3应用程序中的mysql数据库结构替代方案

  • 选择题
  • 93由所选择的答案相关的整数仅仅问题
  • 学生补考几次变化回答
  • 在重拍之前的答案将重新加载页面,更改,然后再次存储。
  • 每页有10个问题
  • 当每个页面完成后,应保存响应。这将提供一次测试的便利,而不必一次完成。
  • 除了“下一页”按钮,会出现一个“前一页”按钮

我对这几个问题:

如果我有这将存储每个答案一个数据库记录student_id,question_id和答案?或者......为每个拥有student_id的学生创建一个数据库记录,并为每个问题的答案提供所有的字段?

问题不会是静态的。根据我们的结果,我们计划修改这些问题。我们将从测试中删除一些问题,但保留统计研究的问题和答案。这意味着我们将用新的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