Мне нужна помощь в исправлении моей таблицы малых расписаний - реляционная БД - SQL Server - PullRequest
2 голосов
/ 29 апреля 2010

У меня есть таблица расписания как:

CREATE TABLE TimeSheet
(
    timeSheetID 
    employeeID 
    setDate 
    timeIn 
    outToLunch 
    returnFromLunch
    timeOut
);

Сотрудник ежедневно устанавливает расписание, и я хочу убедиться, что он / она не изменяет. Что мне делать?

Должен ли я создать столбец, который получает дату / время системы, когда вставка / обновление происходит с таблицей, а затем сравнить созданную дату / время с указанным сотрудником временем - если это так, в этом случае мне придется создать дату / столбец времени для timeIn, outToLunch, returnFromLunch и timeOut. Я не знаю, что вы предлагаете?

Примечание: меня беспокоит отслеживание этих 4 столбцов timeIn, outToLunch, returnFromLunch и timeOut

Ответы [ 3 ]

1 голос
/ 30 апреля 2010

Конструкция одного стола позволяет сотруднику только один перерыв (я предполагаю, что обед не оплачивается). И было бы трудно обнаружить мошенничество, за исключением проверки каждого изменения записи. Я думаю, что-то вроде подхода за двумя столами было бы более гибким и более безопасным.

Начните с создания записи TimeSheetDetail для каждого события. то есть начало смены, начало остановки, остановка остановки, конец смены. Разрешить сотруднику записывать любую дату и время в столбце «Введено». Могут быть законные случаи, когда служащий забывает входить или выходить.

Было бы очень легко обнаружить мошенничество, сравнив значение Entered со значением AddedOn до расчета заработной платы или в любое другое время, когда требуется аудит Вы даже можете обнаружить мелкое мошенничество, когда сотрудник постоянно округляется в большую или меньшую сторону в свою пользу каждый день. Десять минут каждый день в течение года составляют дополнительную неделю.

Эту конструкцию можно защитить, не допуская обновления или удаления записей.

CREATE TABLE TimeSheet
(
    TimeSheetId
    EmployeeId
    AddedOn      //populate using GETDATE()
    AddedBy      //populate using SUSER_SNAME()
);

CREATE TABLE TimeSheetDetail
(
    TimeSheetDetailId  
    TimeSheetId        
    Type               //Shift Start, Shift End, Break Start, Break End
    Entered           
    AddedOn            //populate using GETDATE()
    AddedBy            //populate using SUSER_SNAME()
);
1 голос
/ 29 апреля 2010

Если вас беспокоит нечестность сотрудников в отношении их рабочего времени, установите ручную систему ввода / вывода часов с перфокартами и относитесь к ним как к работникам цеха.

Если этого не сделать, триггер, который архивирует измененную запись с отметкой даты и времени на ней, позволит вам увидеть, в какое время было внесено каждое изменение в расписание, и могут ли быть случаи мошенничества. Поэтому вам понадобится что-то вроде таблицы TimeSheetHistory с дополнительными столбцами для времени изменения и внесения изменений пользователем (заполняется с помощью GETDATE() или аналогичного, и SUSER_SNAME() или аналогичного, если вы используете проверку подлинности Windows).

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

Конечно, вы обеспокоены этим, это одно из основных требований для большинства приложений табеля рабочего времени! Никто не должен иметь возможность изменять свои собственные табели рабочего времени после их отправки без переопределения руководителя. Это сделано для предотвращения мошенничества с тайм-картами и, таким образом, является юридическим вопросом и не должно быть подорвано. Сотрудники, получающие сверхурочные сверхурочные, могут представить правильный график для утверждения супервизором, затем изменить его на добавление часов непосредственно перед выполнением расчета и затем изменить его в противном случае. Это критическая функция, которая должна быть у любого приложения расписания.

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

Далее вам необходим триггер обновления, который запрещает обновления, если расписание не было вновь открыто.

В-третьих, вам нужно поле для статуса расписания. Триггер вставки / обновления гарантирует, что только люди в группе управления могут изменить представленный статус на повторно введенный статус, и что никто не сможет вернуть свой собственный график без согласия другого лица. В терминах, которые я выучил, работая в аудиторском агентстве, это внутренний контроль, поскольку известно, что гораздо менее вероятно, что два человека объединятся для совершения мошенничества, чем один человек.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...