OA系统中请假模块的数据库表该怎么设计

OA系统中请假模块的数据库表该怎么设计,第1张

请假你可以建立一个独立的表单,在表单中设置一个字段和员工表里员工编号进行关联,然后这样你可以在检索和计算时和员工表建立关系,至于和其他什么表建立关系我觉得没有必要,因为请假无非就是和工资有关,只要请假表里的字段有时间的始末就可以做出计算了。建议:id name number reason start end department hou day 这样吧请假的基本信息表达进去即可,不必要太麻烦,一个事项由一个表完成是最佳方法。

员工表:员工信息(员工ID、姓名、性别等),关联角色(角色ID)

角色表:角色分类(角色ID、角色名)

请假申请表:请假流水号、员工ID、申请日期、假期开始日期、假期天数、当前状态(申请-》一审-》2审-》批准/未批准)

请假流程表:请假流水号、审批人,审批日期,审批结果

如果功能在强点的话,可以加上审批限制日期,超限制没进行审批,自动标为为批准、自己可以在进行扩展

没说什么数据库,sqlserver为例

创建测试表

create table test

(姓名 varchar(10),

事由 varchar(10),

开始时间 datetime,

结束时间 datetime)

insert into test values ('张三','事假','2014-07-21','2014-07-23')

insert into test values ('李四','事假','2014-07-22','2014-07-24')

insert into test values ('王武','病假','2014-07-23','2014-07-24')

执行

select t.时间,

sum(case when t.事由='病假' then 1 else 0 end) 病假,

sum(case when t.事由='事假' then 1 else 0 end) 事假

from

(select a.姓名,a.事由,a.开始时间+b.number 时间

from test a,

(select number from master..spt_values 

where type='P' and number<=(select max(DATEDIFF(DAY,开始时间,结束时间)) from test)) b

where DATEDIFF(DAY,a.开始时间,a.结束时间)>=b.number) t

group by t.时间

结果


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10081358.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存