Как правильно спроектировать базу данных музыкальных наград?

Пытаюсь спроектировать базу данных музыкальных наград: линк.
Есть проблема с полями win и nominees. Как их нормализовать? Сразу говорю, книжки читал и остальные модули сайта я успешно нормализовал, но тут как-то не получается, а если получается, то много запросов к бд получается, что не есть гуд.
  • Вопрос задан
  • 3003 просмотра
Решения вопроса 1
fornit1917
@fornit1917
Множество победителей является подмножеством номинантов? Я бы тогда сделал таблицу номинантов:

* user_id
* nomination_id - айдишник номинации
* win - булево значение, выиграл или не выиграл.

Первичный ключ - пара user_id+nomination_id

И да, напоследок: если у вас все нормализовано, это еще не значит, что будет мало запросов и будет эффективно работать. Для эффективной работы с базой наоборот зачастую специально проводят денормализацию.
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Таблица `nominees` с полями `id_actor`, `id_award`, `is_win` - соответственно кто номинировался, на какую награду номинировался, выиграл ли. А запросы смотреть надо, обычно всё решается через JOIN'ы.
Ответ написан
Комментировать
Так если это сложно, может быть и не нужно их нормализовать? Часто наоборот делают денормализацию БД для повышения производительности приложения. А целостность данных гарантируется в моделях приложения.
Ответ написан
Комментировать
1) А нужна ли вообще таблица awards? Нельзя ли сделать объект типа Enumeration с забитыми константами?
2) По таблице nomination:
- type - тот же enum
- win - как я понимаю если это id, то int
- nominees - это и можно нормализовать со связью nomination.id
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы