首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >员工时钟的MySQL数据库结构

员工时钟的MySQL数据库结构
EN

Stack Overflow用户
提问于 2012-11-25 02:06:20
回答 1查看 1.9K关注 0票数 4

我正在开发一个应用程序,它在一定程度上是员工的计时器。这并不是太复杂,但我想确保第一次我的方向是正确的。我目前有这样的表结构:

代码语言:javascript
复制
id - int
employee_id - int (fk)
timestamp - mysql timestamp
event_code - int (1 for clock in, 0 for clock out)

如果他们的最后一次活动是“打卡”,他们只会看到“打卡”按钮,反之亦然。

我的问题是,我们需要运行一个报告,显示一个员工在一个月内工作了多少小时,以及本财年(自本年度6月1日以来)的总小时数。

似乎我可以将打卡和打卡存储在同一条记录中,甚至可以计算两个事件之间的工作分钟数,并将其存储在名为" worked“的列中。然后,我只需要获得该员工的所有列的总和,就可以知道总共有多少时间。

我应该保持现有的结构,每对时钟进出事件移动到一行上,或者有没有更好的方法,我完全错过了?

我知道人为错误也是时钟的一个大问题,因为人们经常忘记打卡或打卡,我不确定哪种结构可以更容易地处理这一问题。

是一个好的选择,还是我应该使用MySQL时间戳?

感谢您的建议/指导。

富足

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-25 02:10:27

我会选择两张桌子:

  1. 一个表格应该是简单的记录发生了什么事件的日志,就像你现有的设计一样。
  2. 第二个表格包含计算出的工作时间。有一些列表示登录和注销时间,可能还有第三列表示它们之间的时间差precalculated.

正如你所提到的,关键是计算一个员工工作了多少小时是很复杂的。员工可能会抱怨他们的工作时间比你的计划报告的时间更长。在这种情况下,您希望能够访问所有事件的原始日志,而不会丢失信息,这样您就可以准确地查看和调试所发生的事情。但是这种原始格式在SQL中很慢,而且很难使用,因此为了报告的目的,您还需要第二个表,这样您就可以快速生成每周、每月或每年的报告。

UNIX是一个好的选择,还是我应该使用

时间戳?

timestamp很好,因为有很多MySQL函数可以很好地使用Timestamp。您可能还想考虑使用与timestamp非常相似的datetime

相关的

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13544023

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档