Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > СУБД, общие вопросы > Структура таблицы


Автор: Gold Dragon 14.7.2005, 11:07
Как организовать структуру таблицы "Режим работы предприятия"?

т.е. может быть такое

- понедельник - с 8 до 18
- вторник - с 8 до 18
- среда - с 8 до 18 - перевыв с 13-14
- четверг - с 8 до 18
- пятница - с 8 до 18 - перевыв с 13-14
- суббота - с 8 до 18
- воскресенье - выходной

и это нужно привязать с конкретному предприятию..

Автор: ТоляМБА 14.7.2005, 11:20
NameDay(string);BegWork(real);EndWork(real);BegBr(real);EndBr(real)
день недели;начало работы;конец работы;начало перерыва; конец перерыва.

Воскресенье можно вообще не вводить (зависит от конкретной задачи, опиши подробнее).

Автор: Gold Dragon 14.7.2005, 11:31
как ещё подробнее? Описание режима работы организаций

доп. условия
- выходной может быть любой день
- перерыва может не быть
- может работать круглосуточно
- во все дни один и тот же график

Автор: ТоляМБА 14.7.2005, 12:35
Цитата
выходной может быть любой день

А если человек по служебке вышел на работу, то что - не оплачивать? Тогда может ещё ввести колонку признака дня: выходной/рабочий (её можно сделать Boolean).
Цитата
перерыва может не быть

Ставь в полях BegBr;EndBr нули
Цитата
может работать круглосуточно

BegWork=0,00, EndWork=24,00

А про задачу: для чего нужна тебе эта таблица? Для учёта рабочего времени?
Напр вычислить продолжительность рабочего дня:
Код

select NameDay, (EndWork-BegWork) - (EndBr-BegBr)
from table1

Правда будут траблы если во вторую смену обед начинается в 23.30 а заканчивается в 00.30 smile
Но тгда можно изменить структуру: EndBr убрать вообще, а сделать LengthBr(real) - длина обеденного перерыва. Тогда считаться по другой формуле будет

Автор: Akina 14.7.2005, 12:55
Red Dragon
Для каких целей будет использоваться эта таблица? в зависимости от этого оптимальная структура различна... либо описывай полностью всю задачу приложения, которое использует эту таблицу, либо ничего вразумительного сказать нельзя.

Автор: Gold Dragon 14.7.2005, 14:03
это график работы заведения... пишу сайт про рестораны (бары, кафе).. вот и хочется всё это как-то в таблицу

Есть вариант всё в текстовое и не мудрить, но это не красиво.. Просто у некторых есть "с 10:00 и до последнего клиента", а у некоторых с двойным перерывом. И ни как не могу понять как это всё описать

Автор: Akina 14.7.2005, 16:39
Тогда опиши только интервалы:

ID (куда ж без него...)
IntervalStart
IntervalEnd
IntervalType

Причем интервалы - как подсети, мелкие перекрывают крупные, а время считается в часах от начала недели. Скажем, если "среда - с 8 до 18 - перерыв с 13-14", то

1 среда 56.00 66.00 работа
2 среда 61.00 62.00 обед

56.00 - это 2 дня по 24 часа (пн, вт) плюс 8 часов от среды. Поделить на 24 при выводе несложно...
При таком подходе можно описывать работу сквозь полночь (разрыв на 2 куса будет только в полночь с вс на пн)... работа "с 10:00 и до последнего клиента" опишется интервалом в 24 часа (скажем для понедельника это будет запись 10.00 34.00 работа), можно описывать работу с 2 и более перерывами (3 записи получится), можно описывать сменную работу (за сутки это будет 3 записи - по 1 для каждой смены)...

Подумай над таким подходом...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)