我正在开发一款部分属于员工时钟的应用程序.这不是太复杂,但我想确保我第一次朝正确的方向前进.我目前有这个表结构:
id - int
employee_id - int (fk)
timestamp - mysql timestamp
event_code - int (1 for clock in, 0 for clock out)
如果他们的最后一次活动是“时钟进入”,我只能看到“时钟输出”按钮,反之亦然.
我的问题是,我们需要运行一份报告,显示员工一个月内工作的小时数以及当前会计年度(自当年6月1日起)的总小时数.
似乎我可以在同一记录中存储时钟,甚至可以计算两个事件之间的工作时间,并将其存储在名为“工作”的列中.然后,我只需要获得该员工所有列的总和,以了解总共有多少时间.
我应该保留我所拥有的结构,每对时钟进出事件移动到一排,还是有更好的方式让我完全失踪?
我知道人为错误对于时钟来说也是一个大问题,因为人们常常忘记输入或输出,我不确定哪种结构可以更容易处理.
MySQL时间戳是一个很好的选择还是我应该使用UNIX时间戳?
感谢您的任何建议/指示.
丰富
最佳答案 我会选择两张桌子:
>一个表应该是发生事件的简单日志,就像您现有的设计一样.
>第二个表包含计算的工作时间.有登录和退出时间的列,也许还有第三列,它们之间的时间差预先计算.
关键是,正如您所提到的,计算员工工作的小时数很复杂.员工可能会抱怨他们的工作时间比您的计划报告长.在这种情况下,您希望能够访问所有事件的原始日志而不会丢失信息,以便您可以查看和调试发生的事件.但是这种原始格式很慢并且难以在SQL中使用,因此出于报告目的,您还需要第二个表,以便您可以快速生成包含每周,每月或每年总和的报告.
Is MySQL Timestamp a good option or should I use UNIX Timestamp?
时间戳很好,因为有很多MySQL函数可以很好地处理时间戳.您可能还需要考虑使用与timestamp非常相似的datetime.
有关