在完全规范化的数据库中,何时应该使用复合索引与连接表?

时间:2013-09-07 20:02:03

标签: sql ruby-on-rails database postgresql indexing

所以上下文是我是一个Rails开发者,我使用PostgreSQL。

作为一般规则,我何时应该使用复合索引而不是使用连接表?在做出决定时我应该考虑哪些事项?

现在,我倾向于只使用连接表来进行HABTM关系。

但是想要了解更多有关复合指数的信息。有性能优势吗?

有什么好处?

修改1

所以我早先犯了一个错误。我曾说'加入has_many关系表'。我的意思是说'HABTM关系'。我想我想弄清楚join_tables和复合索引是否可以互换?在我看来,如果我可以在一列中存储多个foreign_keys,为什么我需要一个连接表?

1 个答案:

答案 0 :(得分:1)

在完全规范化的数据库设计中,您永远不会在一列中存储多个值 - 它会破坏第一范式。

始终将连接表用于许多关系。

我认为你的意思不是复合索引 - 这是一个包含多个列的索引,你可以在支持多态对象的表的* _id和* _type列上使用它。

为了加入包含多个外键的列,您可能需要一个gem来支持它。我不相信activerecord会这样做。

你什么时候使用它?恕我直言我想不出一个有意义的优势。