Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我需要帮助修复我的小时间表表-关系数据库-SQL Server_Sql_Sql Server_Tsql - Fatal编程技术网

我需要帮助修复我的小时间表表-关系数据库-SQL Server

我需要帮助修复我的小时间表表-关系数据库-SQL Server,sql,sql-server,tsql,Sql,Sql Server,Tsql,我的时间表如下: CREATE TABLE TimeSheet ( timeSheetID employeeID setDate timeIn outToLunch returnFromLunch timeOut ); 员工将每天设置自己的时间表,我希望确保他/她不会作弊。我该怎么办 我是否应该创建一个列,在表发生插入/更新时获取系统的日期/时间,然后将创建的日期/时间与员工指定的时间进行比较?如果是,在这种情况下,我必须为ti

我的时间表如下:

CREATE TABLE TimeSheet
(
    timeSheetID 
    employeeID 
    setDate 
    timeIn 
    outToLunch 
    returnFromLunch
    timeOut
);
员工将每天设置自己的时间表,我希望确保他/她不会作弊。我该怎么办

我是否应该创建一个列,在表发生插入/更新时获取系统的日期/时间,然后将创建的日期/时间与员工指定的时间进行比较?如果是,在这种情况下,我必须为timeIn、OutToRunch、ReturnFrom午餐和timeOut创建日期/时间列。我不知道,你有什么建议


注意:我关心的是跟踪这4列timeIn、outToLunch、Returnfrom午餐和timeOut

如果您担心员工在工作时间上不诚实,那么安装一个手动打孔卡打卡系统,并像对待工厂车间工人一样对待他们


如果做不到这一点,一个带有日期时间戳的触发器将记录存档,这样您就可以看到时间表的每次更改都是在什么时候进行的,并且有可能发生欺诈。因此,您需要一个类似于
TimeSheetHistory
的表格,其中包含用于更改时间和用户进行更改的附加列(使用
GETDATE()
或类似方法填充,如果您使用Windows身份验证,则使用
SUSER\u SNAME()
或类似方法填充)。

当然您会关心这一点,这是大多数时间表应用程序的基本要求之一!任何人在提交时间表后,如果没有主管的否决,都不能更改自己的时间表。这是为了防止时间卡欺诈,因此是一个法律问题,不应被颠覆。获得apid加班的员工可以提交一份正确的时间表供主管批准,然后将其更改为在工资单运行前增加小时数,然后将其更改为其他时间。这是任何时间表应用程序必须具备的关键功能

首先,您需要有一个历史记录表来存储所有更改以及更改人的记录

接下来,您需要一个更新触发器,该触发器防止更新,除非时间表已重新打开


第三,您需要一个用于时间表状态的字段。插入/更新触发器将确保只有管理组中的人员才能将“已提交”状态更改为“重新提交”状态,并且在没有其他人员批准的情况下,任何人都不能将自己的时间表返回给。用我在审计机构工作时学到的术语来说,这是一种内部控制,因为大家都知道,两个人联合起来进行欺诈的可能性远远小于一个人。

单桌设计只允许员工休息一次(我猜午餐是没有报酬的)。如果不审计每一次记录变更,就很难发现欺诈行为。我认为类似于两张桌子的方法会更灵活、更安全

首先为每个事件创建时间表详细记录。i、 e.换档开始、断开开始、断开停止、换档结束。允许员工在输入的列中记录任何日期和时间。可能存在员工忘记打卡或下班的合法情况

在支付工资或任何其他需要审计的时间之前,通过将输入值与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()
);

所有时间表应用程序都必须关注时间表欺诈的可能性,这是一个法律问题。这取决于您的司法管辖区,也取决于应用程序的目的是为人们提供记录时间的地方,还是实际跟踪他们的时间。如果是后者,你提到的法律问题可能会起作用,那么也许一个让人们输入自己时间的系统不是答案,OP会转而寻找某种工具来监控用户PC上的活动。