0

ОК, вот сценарий. У меня есть таблицы, такие как ФИЛЬМЫ, КНИГИ, TV_SHOWS. Все эти таблицы могут иметь много жанров, и любой жанр может иметь много разных файлов из любой таблицы. Поэтому проблема, с которой я столкнулся, заключается в следующем:Множество для многих для жанра

В этом случае я отношусь к разделам MOVIE, TV_SHOWS и BOOKS TABLES.

Должен ли я делать MOVIES GENRE, BOOKS GENRE и TV_SHOWS GENRE таблицы, по одному для каждой таблицы? Или есть способ связать все таблицы с одной таблицей GENRE во многих отношениях стиля, не жертвуя унификацией таблицы GenreID IN THE GENRE?

Теперь я рассмотрел другие вопросы, которые касаются этого, и все они имеют громкое НЕТ. По-видимому, нет базы данных, которая может вместить этот стиль многих (многих) многих отношений. Но я пытаюсь выяснить, есть ли какая-либо альтернатива этому, или я должен просто сделать несколько таблиц GENRE?

Единственное, что я могу думать, что это может сработать, - это иметь столбец GenreID в каждой таблице категорий. А затем у многих есть много отношений с таблицей GENRE для каждой из таблиц категорий. Все таблицы категорий будут связаны с помощью таблицы соединений CATEGORY_GENRE, которая имеет составной первичный ключ, сделанный из внешних столбцов GenreID, из всех таблиц категорий и первичного ключа GenreID из таблицы GENRE. Единственная проблема заключается в том, что я не думаю, что одна сторона отношений многих и многих может быть связана с внешним ключом, обе стороны отношений должны быть связаны их первичными.

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

К сожалению Я думаю, что единственный способ сделать это - сделать несколько таблиц GENRE, но я просто хочу получить некоторые мнения, прежде чем я продолжу и сделаю это.

+1

Можете ли вы объяснить, какие категории означает в вашем примере, пожалуйста? –

+0

@BobSalmon, пожалуйста, см. Мое редактирование. Категории - это таблицы MOVIE, TV_SHOWS и BOOKS TABLES. – Christopher

ответ

1

Вы должны рассмотреть вопрос об использовании полиморфных ассоциаций, в частности, объединение таблицы между вашими различными «СМИ» (books, tv_shows и movies) и ваш genres столом. Эта таблица соединений media_genres должна описывать как genre_id, так и media_id, а также media_type (например, «книга», «tv_show», «movie»).

Вот некоторые альтернативные подходы: https://stackoverflow.com/a/441111/3390061

+0

Это потрясающая ссылка nathanallen. Я ценю это много, потому что я не нашел этот пост с ключевыми словами, которые я использовал. Я думаю, что попробую подход с одной таблицей жанра, у которой есть столбец для каждой таблицы категорий, который разрешает null. Тогда по крайней мере один столбец будет иметь внешний ключ. – Christopher