Это не другое, я должен использовать вопрос HABTM или HMT. Честный. Тем не менее, я собираюсь спросить, будут ли люди использовать HABTM или HMT в следующей ситуации.
- У меня есть модель "Книга".
- Хочу добавить модель "Автор". Автор имеет много книг. Книга имеет множество авторов.
- Хочу добавить модель "Тема". Тема имеет много книг. Книга имеет множество тем.
Я уже знаю разницу между двумя ассоциациями, знаю о таблицах объединения и знаю (в общем) преимущества каждой системы ассоциации.
Ясно, что здесь я могу установить два отношения HABTM.
Однако меня поразило, что я также могу быть остроумным и поместить свои foreign_ids в таблицу моделей «Книги», объявив авторов и темы как «has_many: авторы / темы,: через =>: книги».
У меня вопрос, думают ли люди, что это чрезмерная абстракция структуры базы данных, учитывая, что первичные отношения между BOOKS и AUTHORS, а также BOOKS и TOPICS и не являются прямыми отношениями между AUTHOR и TOPIC?
Другими словами, казалось, что, хотя я покончу с двумя (дополнительными) таблицами соединений и использую более гибкие отношения HMT, я могу разбавить точку моей базы данных, которая должна была хранить КНИГИ, которые затем связывают АВТОРАМ И ТЕМАМ.
Я подумал, что это довольно интересный вопрос.
Кроме того, все другие примеры использования HMT в Интернете, которые я мог найти, использовали таблицу «сквозного» как относительно незначительную часть базы данных. Например
- использовать его в качестве «сквозной» таблицы для хранения оценок СТУДЕНТОВ, прошедших ИСПЫТАНИЯ;
- хранить информацию о журнальных подписках ПОДПИСЧИКОВ, подписавшихся на ЖУРНАЛЫ.
Я никогда не видел пример, где таблица "сквозной" хранит первичную информацию. Похоже, что это больше для хранения вспомогательной информации о двух основных таблицах, к которым он присоединяется.