Структура для "Рабочие дни и часы"

Name

Новичок
Структура для "Рабочие дни и часы"

Как бы спроектировать таблицы пограмотнее

есть
employee_id
office_id
7 дней недели
и рабочие часы

каждый employee может работать в разных офисах в разные дни
определеное количество часов (с - до -)

сейчас структура такая (без учета рабочих часов)

id
employee_id
office_id
num_day (1-7)
work_day(yes,no)

что то кажеться не очень рационально
или млжет не морочит голову просто добавить еще пару полей
start_hour / end_hour


Any ideas?
 

Dallas

Guest
Да хоть массив в blob'е хранить, в котором два эл. - начало и конец. А вообще если через массив делать, то можно в него мног очего запихнуть...
А work_day можно и не хранить в таблице... если на заданный день нет рабочих часов, то в скрипте можно проверять - таким образом БД будет рациональней.
 

Falc

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

employee_id
office_id
begin_work
time_work
 

Demiurg

Guest
>каждый employee может работать в разных офисах в разные дни
>определеное количество часов (с - до -)
приведи пример данных, а то что то не очень понятно.

Dallas
ты что подразумеваешь под рациональностью БД ?
 

Name

Новичок
> А work_day можно и не хранить в таблице... если на заданный день нет рабочих часов, то в скрипте можно проверять - таким образом БД будет рациональней.

Можно и не хранить только при update придеться удалять, вставлять ряды а может еще какой нибудь ключ понадобиться
(выходной, отпуск)

> приведи пример данных, а то что то не очень понятно.
Код:
| id | employee_id | office_id | day_num | work_day |
|    | 1           | 1         | 1        | y        |
|    | 1           | 1         | 2        | y        |
|    | 1           | 1         | 3        | y        |
|    | 1           | 1         | 4        | n        |
|    | 1           | 1         | 5        | y        |
|    | 1           | 1         | 6        | y        |
|    | 1           | 1         | 7        | y        |
|    | 2           | 1         | 1        | y        |
|    | 2           | 1         | 2        | y        |
|    | 2           | 2         | 1        | y        |
|    | 2           | 2         | 2        | y        |
 

Name

Новичок
> а может еще какой нибудь ключ понадобиться
(выходной, отпуск)
Вообще то для этого точно нужна еще одна таблица
 

Name

Новичок
Falc
А я не говорил что не нравиться
чем лучше time_work чем time_end
 

Falc

Новичок
Name
Как правило с такой схемой проще работать, например если нужно посчитать сколько часов в неделю работает сотрудник.
 

Demiurg

Guest
>> work_day - это работает или нет ?
>Да

а зачем тогда он нужен ? есть запись - работает, нет записи - отдыхает .
 

Name

Новичок
> а зачем тогда он нужен ? есть запись - работает, нет записи - отдыхает
Вообще не я эту таблицу сочинял, мне надо добавить "track hours"
наверное конечо парвильно убрать "work_day"
только вот при редактирование надо будет удалить
все записи WHERE employee_id =
а потом вставить новые (самый простой способ)
что ТЕОРЕТИЧЕСКИ может привести к перезаполнению (id - autoincrement)
(чур не смеяться)

А что это нормально не использовать id в таблице
или не не очень хороший тон
 

Falc

Новичок
Name
Можно сделать id побольше если есть сомнеия в пепеполнении. Кстати в таблице вовсе не обязан быть первичный ключ, не говоря уж про поле id.

В твоем случаа первичный ключ будет:
employee_id | office_id | day_num
 
Сверху