我正在用 ruby/rails 设计一个词汇测验应用程序。我有可以工作的基本模型/关联设置,但我担心可扩展性。应用程序中会有一定数量的单词。为简单起见,假设为 100。用户将能够继续提出一个问题,该问题将通过查看他们之前提出的问题而生成。该问题将为定义提供一个单词和 4 个选项(一个是定义,其他三个定义是随机选择的)。
这是我目前建立模型和关联的方式;
class User < ActiveRecord::Base
has_many :user_questions
end
class UserQuestion < ActiveRecord::Base
belongs_to :user
belongs_to :vocab_word
end
class VocabWord < ActiveRecord::base
has_many :user_question
end
假设我要保留这个基本模型,我应该使用以下哪种方法?
- 为每个用户设置一定数量的 UserQuestion 对象 (100),并使用计算列来存储用户在特定单词上的表现的统计信息。(例如,用户 502 尝试了 3 次“干旱”这个词并且正确回答了 2 次)。
- 对于每个问题尝试,创建一个新的 UserQuestion 对象。(例如,用户 502 试图猜测“干旱”但不正确)
这些方法中的任何一种都可以扩展吗?如果应用程序有 100 万用户,第一个策略将在 user_questions 中有 1 亿行。第二个可能不止于此。