指纹考勤机数据库设计
发布时间: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,表明规则生效,在考勤统计的时候应当作为限制条件。