здравствуйте, помогите пожалуйста спроктировать таблицы в базе данных.
Проблема такова: представим себе такую ситуацию, когда надо загнать в бд фильмы и их жанры. как правильно скомпоновать таблицы? в моем понимании проблема в том, что у фильма может быть больше одного жанра (если 1 то все легко решается добавлением в таблицу с фильмами поля ид_жанра)
вижу 2 решения и оба кажутся некрасивыми и неправильными
Решение №1. создание 3-х таблиц
"фильмы" - с полями ид, имя фильма - в этой таблице будут фильмы, каждый с уникальным ид
"жанры"- с полями ид, имя жанра - в этой жанры с уникальным ид
"фильмы_жанры" - с полями ид, ид фильма, ид жанра
проблема в том, что эта таблица будет выглядеть так:
1 терминатор боевик
2 терминатор фантастика
если в среднем у фильма 2 жанра, а фильмов всего 5000 то в этой таблице будет 10к записей, из которых куча полей будут повторами
Решение №2. создание 2-х таблиц
жанры - с полями ид, имя жанра
фильмы - с полями ид, имя фильма, жанр фильма. и в поле жанр фильма добавлять через запятую ид жанров, чтобы потом вытаскивать из бд это значение, средствами пхп удалять запятую и получать уникальные ид жанров и потом с ними можно работать. пример строки таблицы:
1 терминатор 1,2
где 1,2 это уникальные ид жантров из таблицы жанров.
потом с помощью пхп получаем из этого значения 2 ид жанров, берем из бд их название и получаем фильм и его жанры. решение покрасивее первого, но что-то смущает.
Как правильно решить мою проблему? совсем не силен в проектировании бд, поэтому думаю что есть красивое и верное решение для этой проблемы
|