Ответ 1
создайте другую таблицу, назовите ее schedules
, добавьте внешний ключ в первичный ключ таблицы shops
, поле Day of week
, time_open
, time_closed
.
Данные должны выглядеть примерно так:
shop_id day_of_week time_open time_closed
1 1 09:00 12:00
1 1 16:00 19:00
1 2 09:00 12:00
1 2 16:00 19:00
1 3 09:00 12:00
1 3 16:00 19:00
1 6 10:00 14:00
2 1 09:00 12:00
2 1 13:00 18:00
Это даст вам возможность строить любые графики, с таким количеством окон, сколько вы хотите, с каким количеством исключений вам нужно. Он универсален, ограничивается только тем, что он ожидает, что недели будут одинаковыми. Никакие праздники не учитываются, а также нечетные/четные графики, которые кто-то может использовать.
Edit:
С вопросом Жюльена, о рабочем времени ночного бизнеса, мне пришло в голову, что предыдущее решение далеко не лучшее. Вы не можете открыть бар в 20:00, закрыть в 06:00 и сравнить, если текущее время (02:45) находится внутри этого интервала, потому что его не будет. Поэтому было бы удобнее регистрировать не время закрытия, а общее рабочее время, в удобной единице измерения (например, минуты).
shop_id day_of_week time_open working_time
1 1 09:00 180
1 1 16:00 180
1 2 09:00 180
1 2 16:00 180
1 3 09:00 180
1 3 16:00 180
1 6 10:00 240
2 1 09:00 180
2 1 13:00 300