我正在观看一个截屏视频,作者说在连接表上有一个主键不好,但没有解释原因。
示例中的连接表在 Rails 迁移中定义了两列,作者为每一列添加了索引,但没有主键。
为什么在这个例子中有一个主键不好?
create_table :categories_posts, :id => false do |t|
t.column :category_id, :integer, :null => false
t.column :post_id, :integer, :null => false
end
add_index :categories_posts, :category_id
add_index :categories_posts, :post_id
编辑:正如我向 Cletus 提到的,我可以理解自动编号字段作为主键的潜在用途,即使对于连接表也是如此。但是在我上面列出的示例中,作者明确避免在“create table”语句中使用语法“:id => false”创建自动编号字段。通常,Rails 会自动将自动编号 id 字段添加到像这样在迁移中创建的表中,这将成为主键。但是对于这个join table,作者特意阻止了。我不确定他为什么决定采用这种方法。