为了账号安全,请及时绑定邮箱和手机立即绑定

员工刷卡的insert语句的书写

员工刷卡的insert语句的书写

白衣染霜花 2018-11-11 13:16:24
有字段 自动增长的id,卡号,上班时间,下班时间如果某员工在上班时间段刷了一次,那请问sql语句insert中的下班时间该添加什么值啊,那在下班时是该添加下班时间值呢,还是在上班时间的id上修改下班时间值呢?很是纠结啊,只要你有意见或建议就请告诉我吧!
查看完整描述

3 回答

?
Qyouu

TA贡献1786条经验 获得超11个赞

如果是我,数据库表会是这样:

id       employeeid        submittime

在这个数据表里只有打卡时间的概念,没有上班下班的概念。这样做的好处是数据库只记录了员工的原始行为,员工刷卡的时候只要无脑的insert就可以了。判断用户某天有没迟到/早退也很简单,把他当天的所有记录取出来在程序里搞就可以了,不需要去写很复杂的SQL语句。至于有人说每次打卡都查一条数据,会不会很浪费之类的话,你可以想像下:全球最大的公司能有多少员工,就算每个员工都很健忘每天打个好几次卡,能有多少数据。1W个人的公司,每个人每天打4次卡,每天才4W条数据,3年才到1000W,这个数量级数据库根本不需要太考虑优化。需要考察某人某月的迟到/早退次数,全部加载到内存中最多就100条记录,毫无压力。如果后面的打卡记录会覆盖之前的呃打卡记录,这么做也许不会让你的系统产生什么异常,但是严格来讲这样丢失了数据。我想象一个非常非常夸张的场景:你们公司建立了非常完善的员工行为分析系统,通过考勤记录你发现,员工A每天早上8点打卡,晚上6点打卡,但是经常发现员工A在晚上6点打卡之后,又多次在8点9点又打卡进入了公司,到深夜才离开。由此可以推测是不是他的项目经常有突发状况呢?员工B在早上8点前打卡之后的10几分钟内,又打了一次卡,这种情况多次发生。由此推测员工B是否比较健忘,或者有焦虑症(总是担心自己没打卡/担心出门没关门)?等等……当然这种可能跟你的系统毫无关系,我的意思是说你留着原始数据真的一点坏处都没有。


查看完整回答
反对 回复 2018-11-15
?
慕田峪7331174

TA贡献1828条经验 获得超13个赞

用逻辑去判断。数据库只是记录。

记录了上班时间。查询出来 下班的时候读取当天的上班时间值,比对下。有异常做异常的事情,没异常了保存下下班的时间。

程序是逻辑加算法。其实和数据库真没关系。


查看完整回答
反对 回复 2018-11-15
  • 3 回答
  • 0 关注
  • 777 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信