goodwin74
@goodwin74

Какую сделать структуру базы с графиком работы сотрудников?

Вообщем сабж. Не могу все продумать, как выстроить правильную структуру базы сотрудников с графиком их работы. Допустим каждый сотрудник может указать с Пн по Вс время работы (с XX:XX до ХХ:XX) на каждый день недели индивидуально, и точно так же обед тоже индивидуально на каждый день. Получается нужно делать структуру такой, чтобы потом, легко можно было сделать запрос, кто сможет работать С 13:00 и ДО 16:00 во вторник например. Единственное что приходит на ум это просто создать 14 полей, по два поля на каждый день недели С и ДО и туда вписывать timestamp от начала дня т.е. 00:00 т.е. если с 9:00 до 16:00 понедельник то ~ mon_beg = 32400 & mon_end = 57600 и при помощи WHERE проверять вхождение интервала. Но у меня такое чувство, что это как то геморройно и возможно есть другие идеи или уже методы, для подобных случаев более грамотные.
Буду рад если кто что подскажет на эту тему. Спасибо!
  • Вопрос задан
  • 259 просмотров
Решения вопроса 1
Denormalization
@Denormalization
Я бы сделал так:
Таблица содержит 4 поля: user_id, day(Enum), from(int), to(int)
Пользователь создает по полю на каждый день недели, в котором может указать С и ДО какого часа он работает.

Т.е получится так:
user_id | day | from | to
1 | 1 | 10 | 12
1 | 2 | 9 | 16
2 | 1 | 8 | 15

Плюс в том, что можно создавать несколько строк, на каждый день недели:
user_id | day | from | to
1 | 1 | 10 | 12
1 | 1 | 14 | 20

Тем самым можно указать несколько интервалов.

Выборка простая:
select * from days where day = {current_day} and from >= {from_hour} and to <= {to_hour}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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