Как эффективно хранить рутину или расписание в Базе данных. Так как у меня 20 комнат, и в этих комнатах 8-10,10-12, ... таким образом проводятся занятия. Как я могу хранить этот вид график в базе данных эффективным способом?
room -------------- id INT PK<------------ [more data like] | room INT/VARCHAR | seats INT | Foreign Key room_schedule | --------------- | id INT PK | room_id INT<---------- start DATETIME end DATETIME
Теперь вы можете прикрепить определенное время к определенной комнате.Иметь начало / конец в специфичном для базы данных формате позволяет вам преобразовать его в другое отображение времени.
Это зависит от ваших требований, например, отчетности, Leagal и так далее.
Для ознакомления с этой проблемой см. Разработка ориентированных на время приложений баз данных в SQL (Snodgrass) и Временные шаблоны (Fowler)
Это можно сделать и с базами данных графов, см. Пример neo4j Версионные графики на основе времени
Один стол для номеров с их свойствами. Один стол для заказов с их свойствами.
Простая нормализация.
У меня будет две таблицы: Rooms и RoomSchedule.
RoomSchedule (ID первичного ключа, RoomID int / внешний ключ для комнат /, From int, To int)
Это позволит вам в дальнейшем легко проверять наличие и конфликты, а также создавать отчеты.