如果我在轨道上使用ruby的活动记录,我真的需要创建中间SQL表吗?

时间:2015-12-31 16:33:16

标签: sql ruby-on-rails rails-activerecord

我读了一本书,而我从我所见过的,我甚至无法想到一个案例,证明使用中间SQL表来理解ID,因为我认为大学是好的数据库设计应该有...模型指定那种关系。我来自原始的SQL世界,现在我发现了活跃的记录,我不再认为需要在桌面上关联id。我错了吗?如果我是,请告诉我为什么要继续创建那些中间SQL表...

1 个答案:

答案 0 :(得分:1)

中间表 - 例如那些只包含外键的表 - 对于多对多关联是必需的。例如,如果学生和班级之间存在关系,其中学生可以属于多个班级,班级可以有多个学生,那么您将需要这样的联接表。

这是关系数据库体系结构中固有的,并且不会通过向混合添加ActiveRecord来更改。 ActiveRecord可以在编写查询时轻松忽略这些中间表,但在构建查询时需要包含它们。

考虑如何将许多学生与没有连接表的学生联系起来的课程。每个学生记录必须包含多个包含不同类的外键的列,或者具有相同数据的多个学生记录,但是需要一个类的不同外键。第一种方法将关联数量限制为外键列数。第二种方法是通过将相同的数据存储在多个记录中来破坏数据库的规范化。

通过创建联接表,学生< - >只需将记录添加到连接表即可记录类关联。可以创建任意数量的这些关联(直到db表大小限制),并且不需要重复数据。