Что более эффективно в этом случае - имеет много сквозных или много? - PullRequest
0 голосов
/ 15 февраля 2012

В моем приложении у меня есть 3 модели:

Пользователь, Страница, Фото

Фотографии принадлежат странице, а страница (у них есть только одна) принадлежит пользователю. Однако одна из моих навигационных ссылок будет для ссылки, показывающей все фотографии, которые отправил пользователь (будет использоваться часто), - что будет лучшим, наиболее эффективным объединением для использования или использования?

class User
  has_many :pages
  has_many :photos, :through => :pages
end

Таким образом, внешний ключ для user_id на страницах и один для pages_id на фотографиях (что будет означать, что я могу получить фотографии пользователя по адресу @ user.page.photos - или использовать «include», чтобы сделать его более эффективным - но так ли это еще лучше чем ниже?)

class User
  has_many :pages
  has_many :photos
end

То есть внешний ключ для user_id на страницах и один для pages_id и user_id на фотографиях. (Это будет означать, что я могу напрямую позвонить @ user.photos)

Спасибо за вашу помощь!

1 Ответ

0 голосов
/ 15 февраля 2012

Я думаю, что это будет наиболее эффективным для второго примера. Это потому, что вам не нужно присоединяться через промежуточную таблицу, чтобы найти фотографии для пользователя.

В таблице photos будут храниться внешние ключи page_id и user_id.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...