我正在开发一个应用程序,它在一定程度上是员工的计时器。这并不是太复杂,但我想确保第一次我的方向是正确的。我目前有这样的表结构:
id - int
employee_id - int (fk)
timestamp - mysql timestamp
event_code - int (1 for clock in, 0 for clock out)如果他们的最后一次活动是“打卡”,他们只会看到“打卡”按钮,反之亦然。
我的问题是,我们需要运行一个报告,显示一个员工在一个月内工作了多少小时,以及本财年(自本年度6月1日以来)的总小时数。
似乎我可以将打卡和打卡存储在同一条记录中,甚至可以计算两个事件之间的工作分钟数,并将其存储在名为" worked“的列中。然后,我只需要获得该员工的所有列的总和,就可以知道总共有多少时间。
我应该保持现有的结构,每对时钟进出事件移动到一行上,或者有没有更好的方法,我完全错过了?
我知道人为错误也是时钟的一个大问题,因为人们经常忘记打卡或打卡,我不确定哪种结构可以更容易地处理这一问题。
是一个好的选择,还是我应该使用MySQL时间戳?
感谢您的建议/指导。
富足
发布于 2012-11-25 02:10:27
我会选择两张桌子:
正如你所提到的,关键是计算一个员工工作了多少小时是很复杂的。员工可能会抱怨他们的工作时间比你的计划报告的时间更长。在这种情况下,您希望能够访问所有事件的原始日志,而不会丢失信息,这样您就可以准确地查看和调试所发生的事情。但是这种原始格式在SQL中很慢,而且很难使用,因此为了报告的目的,您还需要第二个表,这样您就可以快速生成每周、每月或每年的报告。
UNIX是一个好的选择,还是我应该使用
时间戳?
timestamp很好,因为有很多MySQL函数可以很好地使用Timestamp。您可能还想考虑使用与timestamp非常相似的datetime。
与相关的
https://stackoverflow.com/questions/13544023
复制相似问题