有字段 自动增长的id,卡号,上班时间,下班时间
如果某员工在上班时间段刷了一次,那请问sql语句insert中的下班时间该添加什么值啊,那
在下班时是该添加下班时间值呢,还是在上班时间的id上修改下班时间值呢?很是纠结啊,
只要你有意见或建议就请告诉我吧!
如果是我,数据库表会是这样:
id employeeid submittime
在这个数据表里只有打卡时间的概念,没有上班下班的概念。这样做的好处是数据库只记录了员工的原始行为,员工刷卡的时候只要无脑的insert就可以了。判断用户某天有没迟到/早退也很简单,把他当天的所有记录取出来在程序里搞就可以了,不需要去写很复杂的SQL语句。至于有人说每次打卡都查一条数据,会不会很浪费之类的话,你可以想像下:全球最大的公司能有多少员工,就算每个员工都很健忘每天打个好几次卡,能有多少数据。1W个人的公司,每个人每天打4次卡,每天才4W条数据,3年才到1000W,这个数量级数据库根本不需要太考虑优化。需要考察某人某月的迟到/早退次数,全部加载到内存中最多就100条记录,毫无压力。如果后面的打卡记录会覆盖之前的呃打卡记录,这么做也许不会让你的系统产生什么异常,但是严格来讲这样丢失了数据。我想象一个非常非常夸张的场景:你们公司建立了非常完善的员工行为分析系统,通过考勤记录你发现,员工A每天早上8点打卡,晚上6点打卡,但是经常发现员工A在晚上6点打卡之后,又多次在8点9点又打卡进入了公司,到深夜才离开。由此可以推测是不是他的项目经常有突发状况呢?员工B在早上8点前打卡之后的10几分钟内,又打了一次卡,这种情况多次发生。由此推测员工B是否比较健忘,或者有焦虑症(总是担心自己没打卡/担心出门没关门)?等等……当然这种可能跟你的系统毫无关系,我的意思是说你留着原始数据真的一点坏处都没有。
谢谢!辛苦了
逻辑麻烦点的直接写个存储过程,我觉得还是去修改好点,不然一个人上班过程中打多次卡你就插入多次记录啊? 数据看起来会很乱
上班时间的id上修改下班时间值
那么,在添加上班时间时添加的下班时间值是为""么?因为此时还没有下班时间值
@木兰香: 你先 寫一個上班時間。等下班的時候,再更新 一下這個記錄就好了。就加入下班時間了
@木兰香: 你允许字段为空不就ok了
@xu_happy_you: 是哦。
要是上班下班在一条记录里就不好区分哪些有人忘记下班刷卡或者故意早退不刷卡的问题了
@qinnan851: 你這個是管理的問題。你下班 沒有刷卡,下班時間就是空。忘記刷卡,可以加一個備註,或則說明理由,可以補刷。
这个和我以前做过的考勤项目差不多,完全在于对数据的逻辑分析。
原始数据只有卡号和刷卡时间。当然,依据某种规则可以分析出匹配的上班及下班时间。
http://www.cnblogs.com/lucika-china/archive/2010/10/25/1860466.html