Я занимаюсь разработкой уникального приложения, которое использует базу данных MySQL, и мне нужно несколько советов по моей стратегии схемы базы данных, прежде чем я начну ее реализовывать.
(Примечание: это абстрактное описание того, что я делаю, само приложение, которое я создаю, очень похоже по структуре, но не состоит из реальных компонентов, которые я назвал ниже.)
Я создаю приложение, которое будет состоять из:
1. Менеджеры номеров
2. Комнаты
3. Гости
Каждый менеджер комнаты может выбрать любое количество комнат для управления, и гости могут зарегистрироваться, чтобы находиться в комнатах, которыми управляет менеджер комнаты. Гости могут также выбрать других гостей, чтобы быть частью их «окружения» в комнате. Я набросал схему таблиц, которые я собираюсь использовать для реализации базы данных этой системы:
![enter image description here](https://i.stack.imgur.com/ghghQ.png)
Еще одна важная вещь, которую стоит отметить, это то, что этот процесс будет повторяться раз в неделю. Менеджеры выберут комнаты для управления, и гости подпишутся, чтобы быть в этих комнатах, и приведут окружение других гостей. Поэтому со временем размеры таблиц manager_rooms, guest_reservations и guest_entourage будут увеличиваться быстрее всего. Я хочу дать менеджерам возможность видеть всех гостей, которые зарегистрировались, чтобы быть в их комнатах вместе с окружением этого гостя, так что это означает, что мне придется запрашивать таблицы guest_reservations и guest_entourage (предположительно, с помощью операции соединения).
Мой вопрос: является ли эта стратегия в целом хорошей и будет ли она вызывать проблемы по мере ее масштабирования и роста? Я использую MySQL с таблицами InnoDB и ограничениями внешнего ключа + индексы btree, где это было бы уместно. Есть указатели? Подсказки? меры предосторожности? Спасибо!
EDIT2:
Я буду делать так, чтобы для таблицы 'manager_rooms' в качестве ключа использовалась уникальная комбинация менеджеров, номеров и дат. date с использованием поля MySQL DATE.