【问题标题】:What table should the answer be stored in答案应该存储在哪个表中
【发布时间】:2013-07-29 08:01:40
【问题描述】:

该项目目前有3个表,一个users一个competitions和competitions_users。

这个想法是管理员可以创建比赛并且用户可以参加比赛。我有比赛存储所有比赛详细信息,用户存储用户详细信息,我的competitions_users 只是存储来自比赛和用户的外国ID,以便它们可以链接,许多用户可以有许多比赛。

当我希望用户回答问题时,问题就出现了,我无法将答案存储在竞赛表中,因为这会产生大量重复数据,对用户来说也是如此。我完全不确定在哪里存储它。我曾想过有一个名为 answers 的独立表格,但我不能确定如何将它与其他表格联系起来。

任何帮助将不胜感激

【问题讨论】:

    标签: ruby-on-rails foreign-keys


    【解决方案1】:

    我会说有一个answers 表是要走的路。

    我假设您将 ActiveRecord 用于您的模型,所以在我的脑海中,我会有类似的东西:

    class Answer < ActiveRecord::Base
        belongs_to :user
        belongs_to :competition
    end
    

    您可能需要更多涉及的内容来将答案链接到特定问题等,但这可能会给出大致的想法。


    以下是其他类可能会出现的情况:

    class Competition < ActiveRecord::Base
        has_and_belongs_to_many :users
        has_many :answers
        ...
    end
    
    class User < ActiveRecord::Base
        has_and_belongs_to_many :competitions
        has_many :answers
        ...
    end
    

    【讨论】:

    • 这正是我的 users_competitions 模型的样子,我应该用它来存储答案吗?还是将除外键之外的数据存储在为创建其他表之间的关系而构建的表中是错误的?
    • arg0:请参阅我的编辑,您可能应该使用为您创建连接表的has_and_belongs_to_many。检查guides
    • 总体而言,您可能希望将更多内容提取到他们自己的模型(以及他们自己的表)中。 Question 是一个不错的候选人。我一直在努力教自己不要害怕有很多桌子。 :)
    【解决方案2】:

    这完全取决于你。我会建议一个名为

    的单独表格

    答案:Question_ID(FK:competition.id),正确答案
    USER_ANSWER:USER_ID、COMP_ID、QUES_NUM、WRITE/WRONG、USERS_ANSWER

    为了简化,天空是极限。

    【讨论】:

    • 所以在这个解决方案中答案只能将competition_id视为外键,这里的user_id也应该是外键吗?因为如果用户 id 没有与比赛 id 一起被捕获,那么我认为有可能多次进入给定的比赛。
    • ANSWER Table 将保留竞赛中问题的正确答案。您可以保留问题编号和比赛编号。 USER_ANSWER 将具有来自所有表的外键。
    猜你喜欢
    • 2012-07-25
    • 2012-12-23
    • 2019-01-24
    • 1970-01-01
    • 2018-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多