Расписание SQL для сотрудника - PullRequest
1 голос
/ 25 апреля 2010

Мне нужно создать базу данных смены сотрудников. так что у меня пока есть 3 таблицы: employee, employee_shift и shift

Я полагаю, что для подсчета количества смен, которые сотрудник совершил в конце месяца, мой вопрос означает, что в месяце 30 дней, в некоторых 28 и 31 день.

это означает, что мне нужно создать в сменной таблице 31 различные варианты? по одному на каждый день месяца? чтобы рассчитать, какой сотрудник работал больше всего?

в моих деловых отношениях говорится, что на одного работника приходится 1 или 2 смены в день, поэтому мне нужно иметь 60 различных рядов вариаций? я прав или есть простой способ решить это

Ответы [ 3 ]

0 голосов
/ 25 апреля 2010

Я бы использовал три таблицы, подобные этой:

Employee - EmployeeId, EmployeeName etc.
ShiftRecords - ShiftRecordId, EmployeeId, InTime, OutTime
Shift - ShiftId, ShiftStartTime, ShiftEndTime

Если есть вероятность, что время смены будет разным, вы можете включить дату начала и дату окончания смены вместе со столбцом IsActive в таблицу смены.

0 голосов
/ 25 апреля 2010
  1. Вы не можете вставить данные в столбцы TimeStamp. Вместо этого используйте время.
  2. Вы не можете использовать Emp_Id и Shift_Id в качестве первичного ключа, так как это будет повторяться. Если вам действительно нужен первичный ключ, добавьте другой столбец, скажем, Shift_Record_Id.

Что касается создания сценария, он должен быть простым. Все, что вам нужно, это выяснить логику и прочитать о операторах выбора и доступных ключевых словах, которые мы можем использовать в нем.

0 голосов
/ 25 апреля 2010

Я бы также придерживался трех таблиц: Employee, Shifts и Employee_InOut. В последней таблице будут столбцы для даты, времени и времени. Вовремя и вне времени будет ключом, чтобы узнать, какую смену делает сотрудник. Так что я могу просто сосчитать количество смен и подробности смены сотрудника за месяц. Это будет просто.

...