@IceJOKER
Web/Android developer

Не поможете придумать структуру бд(mysql)?

Нужно придумать грамотную реализацию структуры афиши кинотеатров.
Есть таблица `cinemas` - список кинотеатров
Таблица `films` - фильмы

Нужно как то связать их с учетом сеансов и даты.
Никак не могу придумать как правильнее всего составить архитектуру базы.
В тупик заводит времена сеансов и даты(как-то не хочется для каждого дня по новой добавлять фильм с новым сеансом, а хочется просто отдельно добавлять фильмы, отдельно кинотеатры и т.д. , чтоб можно было все эти данные связать и уже повторно использовать).

Надеюсь доходчиво объяснил, хотя с трудом удается(

Вот к примеру https://afisha.yandex.ru/msk/events/?category=cinema позволяет как отдельно выбрать фильм, кинотеатр, дату и я не думаю что там для каждого дня/сеанса данные дублируются
  • Вопрос задан
  • 3298 просмотров
Решения вопроса 1
DVerkh
@DVerkh
Full Stack веб-разработчик
Всё предельно просто. Товарищи правы.
В итоге у Вас должно получиться 3 основных таблицы: кинотеатры, фильмы, сеансы. Остальные данные пока что откинем, они нам не нужны.

Нам нужно, чтобы все эти данные были взаимосвязаны, а взаимосвязаны они должны быть как раз с помощью сеансов.

Кинотеатры (cinemas): id, name, ... .
Фильмы (films): id, name, ... .
Сеансы: id, cinema_id, film_id, ... .

В таблице с сеансами в столбцах cinema_id и film_id указываем id кинотеатра и фильма соответственно.

В итоге мы получаем, что и фильмы, и кинотеатры, и сеансы живут своей жизнью, врознь. Если мы сделаем отдельную таблицу для дней, под которые уже будут создаваться сеансы, то почти ничего не выиграем в производительности, хотя всё зависит от выборок.
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
AMar4enko
@AMar4enko
Сделайте таблицу сеансов (id, date_time, film_id, cinema_id, hall_id)
date_time - дата и время начала сеанса
hall_id - зал кинотеатра
Ответ написан
Комментировать
deadbyelpy
@deadbyelpy
веб-шмеб
попробую передать идею не расписывая совсем. примерно такие таблицы:
кинотеатры (id, name, ...), сеансы (id, name, time, id кинотеатра),
фильмы (id, name, category), фильмы - кинотетры (id, id фильма, id кинотеатра)
актеры (id, name), актеры фильмы (id, id фильма, id актера)
еще можно: скидки (время, дата, что угодно), скидки - кинотеатры - фильмы (id, id скидки, id кинот. id фильма(если есть) ), награды фильмов(id, id фильма), награды актеров ну и так далее
Ответ написан
@romashka_sky
Связующая таблица Фильм-Сеанс-Дата-Кинотеатр, но, возможно, я вас неправильно понял
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы