代码之家  ›  专栏  ›  技术社区  ›  jefflunt

还是多个属于?

  •  7
  • jefflunt  · 技术社区  · 14 年前

    我在自学Rails,作为一个测试项目,我正在模拟一个类似StackOverflow的简单问答应用程序。

    在我的简化版中,我有:

    • 问题
    • 答案
    • 用户(问题和答案的作者)
    我知道答案属于问题。
    • 用户和问题之间的正确关系是什么?
    • 用户和答案之间的正确关系是什么?

    在我看来,问题和答案并不真正“属于”用户,而是“拥有一个用户”(作者)。但这似乎也不正确,因为这样用户将“属于问题”和“属于回答”。

    这三门课的答案是哈伯特吗?

    很多人都被这种关系所困扰,不是吗?:)

    2 回复  |  直到 14 年前
        1
  •  7
  •   vonconrad    14 年前

    这三门课的答案是哈伯特吗?

    不,在这些关系中,你不需要哈伯特。

    • 用户和问题之间的正确关系是什么?
    • 用户和答案之间的正确关系是什么?

    在这两种情况下,它都是一对多关系:用户有许多问题,用户有许多答案。

    从逻辑的角度考虑: 一个问题不能由多个用户编写,一个答案不能由多个用户编写。 因此,这不是一种多对多的关系。

    在这种情况下,应该这样设置类:

    class User < ActiveRecord::Base
      has_many   :questions
      has_many   :answers
    end
    
    class Question < ActiveRecord::Base
      belongs_to :user
      has_many   :answers
    end
    
    class Answer < ActiveRecord::Base
      belongs_to :user
      belongs_to :question
    end
    

    另一方面,如果你有一个类似stackoverflow的标签系统,你需要一个habtm关系。一个问题可以有多个标签,而一个标签可以有多个问题。作为一个主要的例子,您的文章有三个标签(RubyonRails、HabTM、外键关系),而RubyonRails标签目前有8546个问题。

        2
  •  0
  •   Chuck Vose    14 年前

    属于是一个奇怪的名字。弄清楚你有很多关系,把属于你的放在另一边,不要担心它的语义。