日期:2014-05-19  浏览次数:20424 次

要设计一个人事考勤的数据库,具体有些问题不清楚,大家帮忙看看
这样的数据库应该怎样设计:
具体的有:
班次
类型1(周1-周5)8:00-17:00 12:00-13:00休息
类型2(周1-周5)8:00-17:00;(周6) 8:00-12:00
类型3(周1-周5) 20:00-8:00 
其余时间算加班

只有上班打卡,下班不打卡,加班上班下班都打卡,中午打卡在12:30以后,12:00到13:00为无效数据

打卡的数据我以这样的形式存储的
cardid     theDateTime
100053       2006-12-10   07:56:20
100053       2006-12-10     12:36:20
.....

问题:我本来想设定一个工作日来记录正常上班的时间,但是有三种类型 上班时间都不一样,还有人集体调班的

分不够,可以在开贴给分




------解决方案--------------------
交流
做一个自定义函数先分出两大类(加班时间)(正常上班时间)
cardid theDateTime 是否加班时间
100053 2006-12-10 07:56:20 0
100053 2006-12-10 12:36:20 0

正常上班时间
做一个自定义函数可以根据(上班时间)(类型)得出下班时间
加班时间
对应一个Cardid应有偶数条记当,进行时间比较,
id time
1 1-1 10:00
1 1-1 12:00
1 1-1 15:00
1 1-1 17:00
可以得出
id timestart timeend
1 1-1 10:00 1-1 12:00
1 1-1 15:00 1-1 17:00
再联接组合。

------解决方案--------------------
建立一张配置表。关于一些参数的。这样在获取记录的时候可以读取参数计算结果
------解决方案--------------------
数据库存基本打卡记录就可以了吧

业务判断用程序来处理怕要好点
------解决方案--------------------
楼主应先排班.

你这种班次的规则不可能按打卡时间来自动识别班次的.

按排班类型再来匹配他的打卡时间来处理出勤情况.

最好是每个班次定义一个上下班的打卡期限.

最早有效,最晚有效...
这样好考虑他的迟到早退情况.