Как бы вы хранили время работы?

Есть организации у каждой есть время открытия (08:00) и закрытия (18:00) и есть 7 дней недели - в каждый из них время теоретически может быть разным, хотя обычно различается только для ПТ, СБ, ВС.
Итого 14 значений. Поиск по ним не производится.
Вопрос: как организовать такие данные в БД?
Делать 14 полей для каждой организации? Это сильно утяжелит запрос да и имеет ли смысл раз поиска нет? Сериализция/десериализация? Нарушает принцип 1 ячейка - одни данные.
  • Вопрос задан
  • 231 просмотр
Решения вопроса 2
modestguy
@modestguy
full-stack web developer
Ну для гибкости я бы порекомендовал так:
1) Первая таблица: id, time (где тайм - от 0 до 24, id - pk)
2) Вторая таблица: id, day (где id - pk, day - от 0 до 7)
3) Кросс-таблица (расписание)
id, day_id, start_time_id, end_time_id, organization_id

Если поиска нет и масштабирование и вообще добавления обеда к примеру не наблюдается) тогда можете и сериализацию сделать.
Ответ написан
sim3x
@sim3x
Не забудь про праздники, перерывы, "каждый первый понедельник месяца санитарный день"

Если поиск действительно не нужен, то стоит присмотреться к json-у
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы