【问题标题】:Rails has_many :through --> Should I keep a primary key column?Rails has_many :through --> 我应该保留一个主键列吗?
【发布时间】:2012-12-11 04:05:32
【问题描述】:

我有 'author' 和 'book' 表,加入了 has_many :through table 'author_book'

据我所知,'author_book' 表上的 :id 主键字段没有任何意义......但在我提出这个想法之前,我只是想确认一下。那么,是否有任何理由将 'id' 列保留在 has_many :through 表中?

提前谢谢...

【问题讨论】:

  • 你必须确保为这些关系添加 2 个索引: add_index table_name, [ :author_id, :book_id ] add_index table_name, [ :book_id, :author_id ] 这确保你有能力去每个通过关系而不需要表扫描。从示例中这些表的名称中,您还可以在这些表中添加 ':unique => true' 以停止重复

标签: ruby-on-rails ruby database-design primary-key has-many-through


【解决方案1】:

保留它。稍后您会发现唯一标识符以最初不明显的方式得到了回报。
与其他敏捷开发原则不同,最好提前解决此类数据质量问题。

【讨论】:

  • 听起来很神秘。愿意分享“最初不明显的方式”吗?可能有实际例子。
【解决方案2】:

如果您有作者与书籍关系的独特之处,则需要id 通过AuthorBook 模型在此表中设置它。在这种情况下,这听起来不太可能,如果需要,您可以稍后添加。

【讨论】:

    【解决方案3】:

    如果是has_many through,表示author_book是一个活跃的记录模型,所以请留下id。但是如果你使用has_and_belongs_to_many连接表不需要id http://apidock.com/rails/ActiveRecord/Associations/ClassMethods/has_and_belongs_to_many

    【讨论】:

      猜你喜欢
      • 2011-08-11
      • 2011-05-23
      • 1970-01-01
      • 2019-03-04
      • 1970-01-01
      • 2014-09-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-06
      相关资源
      最近更新 更多