1) Даты премьер фильмов (мировая, в США, России и Украине - это по минимуму)
2) Даты сеансов
3) Время сеансов
Задача:
1) Выводить даты премьер как статическую информацию отдельной строкой + делать выборку (фильтр во фронт-енде) фильмов по датам премьер (по неделям, по месяцам, годам).
2) Выводить даты сеансов как статику + делать выборку (фильтр во фронт-енде).
3) Выводить время сеансов как статику + делать выборку (фильтр во фронт-енде)
4) Выводить в названии, или отдельной строкой + делать выборку (фильтр во фронт-енде) фильмов по годам производства (class Movie -> production_year).
На данный момент, после правок полей, модель выглядит в сокращенном виде так:
class Country(models.Model): name short_name class Profit(models.Model): weeks weekend_profit weekend_ppl total_profit total_ppl premier_date movie = models.ForeignKey(Movie) country = models.ForeignKey(Country, null=True) # null == world ############################################# class Cinema(models.Model): movie = models.ManyToManyField(Movie, through='MoviesTimetable') city name street phone class Movie(models.Model): # новое поле production_year name length genre description class MoviesTimetable(models.Model): movie = models.ForeignKey(Movie) cinema = models.ForeignKey(Cinemas) dates times
- Даты премьер (class Profit -> premier_date) и даты сеансов (class MoviesTimetable -> dates) пересекаются (могут иметь одинаковое значение), значит зачем выводить в 2х разных местах (для премьер и для сеансов) одни и те же даты, если все даты можно запихнуть в 1 таблицу и подключаться к ней через FK (или через m2m. Тут у меня путаница, ведь каждая дата может быть использована любым сеансом, и эта же дата может быть использована, как дата премьеры любого фильма).
- Время для сеансов само по себе имеет иной формат, отличительный от формата DateField и DateTimeField, по этому я его и подумал запихнуть в отдельное поле TimeField. Вообще запихнуть время в отдельную таблицу я решил по той причине, что время сеансов на протяжении года\годов в разных кинотеатрах для разных сеансов повторяется, и предположил “может будет лучше, когда будет сформирована отдельная таблица, в которой будет около 50 вариантов времени для сеансов, и обращаться к этой таблице через FK и не дублировать в таблице расписаний одни и те же времена”.
- Для class Movie -> production_year я думал сделать или IntegerField иди FK и вынести года в отдельную таблицу.
Нормализацию я понял как “убираем дубли из каждой таблицы”. Но после фразы “дата и время уже базовые типы данных, не надо их отдельно выносить в таблицы” я понял, что нормализацию я не так понял. Пошел перечитывать теорию.