Задать вопрос
EnChikiben
@EnChikiben

Проектирование БД

Доброе утро!

Подскажите как лучше спроектировать таблицу хранящую время работы компании? С максимальной функциональностью…

Думал сделать 6 столбиков

id
id_company
day — день недели
time_start — время начала
time_stop — время окончания
type — тип (обед или нет)

при выборке сортировать по времени и вроде должно что то получиться

Спасибо.
  • Вопрос задан
  • 4213 просмотров
Подписаться 2 Оценить Комментировать
Решения вопроса 1
id
id_company
time_start — время начала
time_stop — время окончания
time_start_dinner — время начала обеда (перерыва)
time_stop_dinner — время окончания обеда
time_last — время окончания сокращённого дня.
type — поле типа дня.
Типы следующие:
— Выходной,
— Будний с перерывом,
— Будний без перерыва,
— Понедельник,
— …
— Воскресенье.
— Сокращённый день

Примерно так. На все случаи жизни.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
gennad
@gennad
====intervals====
id
company_id: INT
start: DATETIME
end: DATETIME
type_id: Foreign key to events

====events====
id: PK
type_name: CHAR
is_work_time: BOOLEAN


Запрос будет примерно такой:
SELECT TIMEDIFF(end, start) as diff FROM intervals SORT BY diff;
Ответ написан
Комментировать
@rPman
Что с этими данными делать то собираетесь?

Нужны как минимум 2 списка — 'рабочие дни' + 'выходные' (или вернее 'не рабочие' и обед этим образом пометить), формат времени удобнее по типу crontab (по полю на уровень времени), тогда запросы вида — какая компания работает во время обеда другой компании будут сравнительно простыми.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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