Хранение расписания в базе данных - PullRequest
1 голос
/ 09 июля 2010

Как эффективно хранить рутину или расписание в Базе данных. Так как у меня 20 комнат, и в этих комнатах 8-10,10-12, ... таким образом проводятся занятия. Как я могу хранить этот вид график в базе данных эффективным способом?

Ответы [ 4 ]

2 голосов
/ 09 июля 2010
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

Теперь вы можете прикрепить определенное время к определенной комнате.Иметь начало / конец в специфичном для базы данных формате позволяет вам преобразовать его в другое отображение времени.

1 голос
/ 09 июля 2010

Это зависит от ваших требований, например, отчетности, Leagal и так далее.

Для ознакомления с этой проблемой см. Разработка ориентированных на время приложений баз данных в SQL (Snodgrass) и Временные шаблоны (Fowler)

Это можно сделать и с базами данных графов, см. Пример neo4j Версионные графики на основе времени

0 голосов
/ 09 июля 2010

Один стол для номеров с их свойствами.
Один стол для заказов с их свойствами.

Простая нормализация.

0 голосов
/ 09 июля 2010

У меня будет две таблицы: Rooms и RoomSchedule.

RoomSchedule (ID первичного ключа, RoomID int / внешний ключ для комнат /, From int, To int)

Это позволит вам в дальнейшем легко проверять наличие и конфликты, а также создавать отчеты.

...