создайте другую таблицу, назовите ее 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