нормализация данных
Где вы заявляете:
«Шоу» должно содержать имя_ театра и название фильма.
Рассмотрим нормализацию ваших данных таким образом, чтобы информация, относящаяся к каждому отдельному объекту, содержалась в одной таблице, содержащей только один экземпляр такого объекта.
Например, информация, относящаяся к фильму (включая его название), будет храниться в таблице Movies
, а только в этой таблице. Информация, относящаяся к театру, будет храниться в таблице Theatres
и только в этой таблице.
В этом случае каждая запись в таблицах Movies
и Theatres
будет иметь уникальную ссылку с использованием отдельного поля первичного ключа (например, Movie_ID
и Theatre_ID
), для которого я бы порекомендовал использовать поле с длинным целым числом Autonumber.
С этого момента, когда вы ссылаетесь на фильм или театр в других таблицах, вы будете использовать только соответствующий ID и не будете передавать какую-либо другую информацию.
Это не только оптимизирует размер и производительность вашей базы данных (поскольку целые числа занимают значительно меньше памяти и может быть проиндексирован гораздо более эффективно, чем строки), но вам также нужно хранить данные только в одном месте: если имя фильм меняется, вам нужно всего лишь изменить данные в таблице Movies
, и это будет автоматически отражено любым запросом, который ссылается на эту таблицу.
Соединительные столы
Чтобы ответить на ваш вопрос о том, как представлять показ фильмов в нескольких кинотеатрах, причем в нескольких кинотеатрах также показывается один и тот же фильм: для этого отношения «многие ко многим» требуется использование соединительной таблицы , также известный как таблица транзакций , таблица мостов , таблица ссылок и многие другие имена, кроме.
Такая таблица обеспечивает соединение, на котором встречаются таблицы Movies
& Theatres
.
Принимая во внимание приведенный выше совет относительно нормализации данных, такая соединительная таблица должна включать только уникальный идентификатор для каждого фильма и театра, не название театра или название фильма.
Например, такая таблица может выглядеть так:
+------------+------------+----------+
| Showing_ID | Theatre_ID | Movie_ID |
+------------+------------+----------+
| 1 | 1 | 2 |
| 2 | 1 | 3 |
| 3 | 2 | 1 |
| ... | ... | ... |
+------------+------------+----------+