【问题标题】:when to set a table without primary key on a join table何时在连接表上设置没有主键的表
【发布时间】:2011-01-22 21:53:22
【问题描述】:

嘿,我正在使用以下表格。我的表 course_enrollments 引用了 user_idcourse_id。合并的两列都设置为唯一的。

users
course_enrollments
courses

Rails 默认设置主键。我已经阅读了一些使用这种连接表而没有任何 pk 的人的文章。例如通过定义:id => false

适合这种连接表吗?注册或离开课程或搜索注册的人呢?感谢您的宝贵时间!

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 activerecord primary-key


    【解决方案1】:

    当您想使用has_and_belongs_to_many 时,您通常会在连接表的迁移中看到:id => false,因为Rails 真的不喜欢在这些上找到:id 主键。

    来自has_and_belongs_to_many docs

    连接表不应该有 主键或与相关的模型 它。

    【讨论】:

    • 啊,谢谢您的回复。但我不使用 has_and_belongs_to_many 关键字,而是使用has_many :courses, :through => :course_enrollments。不一样吗?那么我应该从我的联接表中删除我的 pk 吗?
    • 我想这取决于您的数据模型,但您应该没问题将 id 留在那里。例如,如果您遇到用户可以两次注册同一课程的情况,那么您将需要这些 ID。就个人而言,我喜欢拥有 id,并且我也更喜欢在可能的情况下使用 has_many :through。
    【解决方案2】:

    合并的两列都设置为唯一的

    因此,您的表已经有一个键。除非您需要其他属性,否则显然不需要为其创建另一个键。

    【讨论】:

      猜你喜欢
      • 2022-06-15
      • 2011-04-29
      • 1970-01-01
      • 2015-03-10
      • 1970-01-01
      • 2020-08-08
      • 2012-09-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多