设为首页 | 成都一卡通
当前位置: 首页 > 新闻资讯 > 公司新闻 >
公司新闻
指纹考勤机数据库设计
发布时间:2014-06-27 来源:未知
数据库(Database)是按照数据结构组织起来并存储起来的数据的集合,另一种说法它就是数据的仓库。随着网络和计算机技术的快速发展,数据库技术在各个方面都得到了广泛的发展和应用。本指纹识别考勤系统将用 MySQL 作为数据库。
4.4.1  数据库选择
本系统服务端的数据存储服务选择了 MySQL,因为它集聚了体积小、速度快、总体拥有成本低、开放源码、兼容性较好、能提供多个应用程序的编程接口(API)等诸多先天优势,不失为一个较好的关系型数据库[35]。与此同时,MySQL还提供了简单有效地安全机制,数据库管理员,MySQL 设置的授权表,确保了相对的安全性[36]。
除此之外,MySQL 还具有较高的灵活性和可用性。灵活性表现在 MySQL Cluster 含有灵活的分布式体系结构,通过灵活配置可为用户提供合适的性能、扩展和容错水平的需求。同时,它的容错架构,确保了关键人物可以有较高的可用性,它能通过利用联合检查站和执行日志,确保系统在一个稳定安全的状态下恢复。
4.4.2  设计原则
数据库的设计必须遵循其原则,因为它是否合理设计将直接对指纹识别考勤系统的运行状况产生巨大的影响。因此,数据库设计在本课题中占据很重要的位置。
数据库的五条设计原则如下:
一致性原则
完整性原则
安全性原则
可伸缩性原则
合理使用索引 
4.4.3  表结构
本 系 统 的 数 据 为 db_attendance , 它 由 用 户 表 ( tbl_user ) 、 指 纹 表(tbl_fingerprint)、请假记录表(tbl_vacation)、加班记录表(tbl_overtime)、考勤记录表(tbl_record)、考勤分析表(tbl_analyse)、考勤规则表(tbl_regulation)构成。
考勤系统中的涉及到表的属性以及表与表之间的关联关系通过E-R图来表示出来,详见下图 4-7 所示。E-R 图之后会对每个表进行详细的解释,包括各个表以及表中字段的意义。
1、  用户表
用户表(tbl_user)的结构如下表 4-2 所示,其中 id 和 user 为索引,id 是数据库自增编号以下所有的表的 id 都是自增的且是索引。各个字段的意义都在备注中有解释,下面所有表也一样。对一些特殊的字段做必要的解释。 
user:用户名,为方便查询,给 user 也建立了的索引
passwd:密码,其存储内容为密码的 md5 校验后的值
group 用户组,level 权限等级,group 和 level 共同决定该用户的功能权限。
表 4-2  用户表结构
字段变量  数据类型  数据长度  是否允许空  备注
id  Int(自动编号)  11  否  ID(主键)
user  Var Char  50  否  用户名
passwd  Var Char  50  否  密码
group  Int  4  否  用户组
level  Int  4  否  权限等级
name  Var Char  20  否  姓名
sex  Int  4  否  性别
birth  Var Char  30  是  出生年月
join  Date  -  否  进入公司时间
schedule  Int  4  否  所属班次
phone  Var Char  20  是  联系电话
2、  指纹表
指纹表(tbl_fingerprint)的结构如下表 4-3 所示,它主要用于记录注册的指纹和指纹匹配过程中用到的数据。 其中 id 和 userId 为索引。一个用户对应一个指纹数据,指纹数据 data存储类型为 blob,是一个可以存储二进制文件的容器,是二进制大对象。系统中
用它来存储压缩后的指纹数据。 指纹表与用户表有关联关系,指纹表中的userId对应于用户表中的id进行关联。
表 4-3  指纹表结构
字段变量  数据类型  数据长度  是否允许空 备注
id  Int(自动编号)  11  否  ID(主键)
userId  Int  11  否  tbl_user 表对应的 id
data  Blob  -  否  指纹数据
time  Date  -  否  指纹注册时间 
3、  请假记录表
请假记录表(tbl_vacation)的结构如下表 4-4 所示,其中 id 和 userId 为索引。applyTime 为请假申请时间,type 为请假的类别,如带薪年假、病假、产假、丧假等。请假起始时间、请假时长和请假原因都是每一位请假申请人需要填写的项目。审批情况是一选择项,当请假申请人提出请假申请后,该值是 0 表示未审批,之后审批流程到了审批人,审批人同意本次申请后,会改写审批情况这个值,并置为 1。 请假记录表与用户表有关联关系,请假记录表中的userId对应于用户表中的id 进行关联。
表 4-4  请假记录表结构
字段变量  数据类型  数据长度  是否允许空 备注
id  Int(自动编号)  11  否  请假流水编号(主键)
userId  Int  11  否  tbl_user 表对应的 id
applyTime  Date  -  否  请假申请时间
type  Int  4  否  请假类型
beginTime  Date  -  否  起始时间
endTime  Date  -  否  结束时间
hour  Dobule  4  否  请假时长
reason  Var Char  300  否  请假原因
approve  Int  4  否  审批情况
approveTime  Date  -  否  审批时间
4、  加班记录表
加班记录表(tbl_overtime)的结构如下表 4-5 所示,其中 id 和 userId 为索引,applyTime 是加班申请的时间,type 为加班的类型,如平常加班、周末加班和节假日加班等,在设定了加班审批栏目的同时还记录加班原因、加班的起始时间以及每次加班的具体时长。 加班记录表与用户表有关联关系,加班记录表中的userId对应于用户表中的id 进行关联。
表 4-5  加班记录表结构
字段变量  数据类型  数据长度  是否允许空 备注
id  Int (自动编号)  11  否  加班流水 ID(主键)
userId  Int  11  否  tbl_user 表对应的 id
applyTime  Date  -  否  加班申请时间
type  Int  4  否  加班类型
reason  Var Char  300  否  加班原因
avail  Int  4  否  加班审批
beginTime  Date  -  否  起始时间
endTime  Date  -  否  结束时间
hour  Dobule  4  否  加班时长
5、  考勤记录表
考勤记录表(tbl_record)的结构如下表 4-6 所示,它主要用于记录员工日常的考勤记录,该表的值是由考勤模块对考勤的指纹识别出结果的记录。beginTime 和 endTime 是记录考勤的起始时间和下班时间,而 hour 则表示的是工作的时间长度。
表 4-6  考勤记录表结构
字段变量  数据类型  数据长度  是否允许空  备注
id  Int(自动编号)  11  否  Id 流水编号(主键)
userId  Int  11  否  tbl_user表对应的id
beginTime  Date  -  否  考勤签到时间
endTime  Date  -  否  考勤退勤时间
hour  Double  4  否  工时
6、  考勤分析表
考勤分析表(tbl_analyse)的结构如下表 4-7 所示,它主要用于分析并记录员工每天的考勤结果,该表是每天凌晨结分析前一天的考勤记录,利用考勤规则的设定,为每位员工生成一掉考勤分析记录,该记录有如下信息。 在考勤分析表中,笔者设计了用户姓名、考勤日期、记录情况、考勤的具体原因分析和数值情况。 
表 4-7  考勤分析表结构
字段变量  数据类型  数据长度  是否允许空  备注
id  Int (自动编号)  11  否  ID(主键)
userId  Int  4  否  用户 Id
userName  Var Char  50  否  用户名字
date  Date  -  否  考勤日期
time  Date  -  否  记录生成时间
resultType  Int  4  否
分析结果类型(如正常,迟到,早退,加班,请假等)
resultValue  Int  4  否
分析结果值(如迟到多少,早退多长,加班多长,请假多久)
7、  考勤规则表
考勤规则表(tbl_regulation)的结构如下表 4-8 所示,表格中的 id 是索引,它用于约束规则表在考勤统计分析的时候作为约束的条件来检测分析考勤结果。type 表示规则的类型,具体含义间表中的备注,value 为规则的实际值,不同类型的规则值的表述不尽相同。而 stats 表示规则的状态,如果 state=1,表明规则生效,在考勤统计的时候应当作为限制条件。