Rails急切地只用1个数据加载关系表

时间:2011-07-28 19:05:41

标签: ruby-on-rails database ruby-on-rails-3 database-design

作为我问题的简化,假设我有一个歌曲和艺术家表:

songs
-----
id
name
artist_id

artists
-------
id
name

我大部分时间都在查询歌曲,而且我总是需要附上艺术家名字。将另一列添加到名为artist_name的歌曲中是否有意义,这样我就不需要做.includes(:artist)渴望加载?

我认为我目前的设计是典型设计,但最有效的设计是什么,或者在轨道中处理这种情况的最佳方法是什么?

2 个答案:

答案 0 :(得分:0)

Song.find(2, :include => :artist)

答案 1 :(得分:0)

回答我自己的问题:

似乎数据库非规范化只在重读应用程序中才有意义,而且应首先对其进行广泛描述。

一些选项:

  1. 将包含添加到歌曲的默认范围
  2. 对艺术家名称进行非规范化并使用模型挂钩来确保数据完整性