人事管理系统的数据库设计.doc
Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-date人事管理系统的数据库设计人事管理系统的数据库设计 东方学院实 验(实训)报 告项 目 名 称 人事管理系统数据库分析与设计 所属课程名称 数据库原理及应用 项 目 类 型 设计、综合型 实验(实训)日期 2010.11.242010.12.15 班 级 信息1班 学 号 0820400115 ,0820400116 姓 名 陈文军 潘炜剑 指导教师 严素蓉 人事管理系统的数据库设计1 需求分析1.1功能与信息要求 通过对现行人事管理系统的调查,明确了人事管理系统由档案管理、职务调动管理、奖惩管理、考勤管理、工资管理、请销假管理组成。 系统功能的主要描述如下。(1)员工档案管理1)对公司里所有员工进行统一编号;将每一位员工的信息保存在员工档案记录中。2)对新聘用的员工,将其信息加入到员工档案记录中;对于解聘的员工,将其信息从员工档案记录中删除。3)当员工的信息发生变动时,修改员工档案记录中相应的属性。(2)员工职务调动管理对公司里所有员工的职务记录进行统一编号;登记员工调动前后的具体职务,以及调动时间。(3)奖惩管理对公司里所有员工的奖惩记录进行统一编号;登记员工奖惩的原因,所受奖惩类型,奖惩时间。(4)考勤管理1)对员工上班刷卡的记录进行统一编号;登记员工上班时间、签到类型(准时、迟到)。2)对员工下班刷卡的记录进行统一编号;登记员工上班时间、签到类型(准时、早退)。(5)请销假管理1)对员工请假的记录进行统一编号;登记员工请假时间、请假类型。2)对员工销假的记录进行统一编号;登记员工销假时间、请假类型,检查是否超期。(6)工资管理1)对公司里所有员工的工资记录进行统一编号,建立工资记录表。(7)部门管理1)对公司所有的部门进行编号,建立部门记录。1.2 安全性与完整性要求安全与保密要求:此系统可以分为用户和管理员,用户可以浏览自己的个人信息,但不能修改自己的信息,凡要修改都需通过管理员去修改。管理员主要管理系统的各种信息。目标:在于开发一个功能使用、操作方便,简单明了的人事管理系统。再设计出功能强大的软件的同时,尽可能地减少对系统资源的占用,并且还要力求做到通过使用本系统,尽量使单位的人事管理工作系统化、自动化和规范化,从而达到提高企、事业单位管理效率的目的,同时也希望此次工程加强我们自身的小组协作意识,加深程序设计思想,同时要学习工程设计思想,再技术和软件工程思想上同时得到锻炼和提高。人事管理信息系统,在实际工作中得到了广泛的应用,它对企事业单位的人力资源进行有效的管理,提高了管理的效率。本系统的技术完备、成熟,经济效益合理,满足安全真实的企业人事管理信息系统要求。1规范企业管理,实现对全公司人事管理的实时监控。2实现对每名员工个人业绩的考核。3实现较完善的人事管理体系。4为企业领导决策提供依据。5系统符合实际生产需求,人机界面友好、操作简便。 1.3 系统数据流程图 经过详细的调查,弄清了系统现行的业务流程。在此基础上,构造出系统的逻辑模型,并通过数据流程图表示。人事管理系统的顶层数据流程图如图1所示。员工信息D1 员工档案P1档案管理员工D7 管理人员记录管理员情况P7安全管理管理员员工请销假P2请假管理D2 请假记录员工工资查询发工资P6工资管理D6 工资记录员工员工情况上级员工P3奖惩管理D3 奖惩记录员工P5调动管理D5 职务调动记录上级员工上下班刷卡P4出勤管理D4 出勤记录员工奖惩调动用户身份用户身份用户身份部门情况P8部门管理D8 部门记录上级图1注:图中虚线表示的数据流是员工信息。在人事管理系统顶层流程图中,“请假管理”和“出勤管理”两个处理框所表示的功能不是很具体,需对他们进一步细化。请假管理细化流程图如图2所示。D1 员工记录请假申请请假批复上级P2.1销假管理P2.2请假管理员工D1 员工记录图2出勤管理细化流程图如图3所示。D3出勤记录D1 员工记录员工P3.1下班管理P3.2上班管理员工上班刷卡下班刷卡图3最终,经过整理后得出细化后的系统数据流程图。如图4所示。D1 员工记录P1档案管理员工工资查询P4工资管理D4 工资记录员工员工情况上级员工P3奖惩管理D3 奖惩记录员工P5调动管理D5 职务调动记录上级D6 管理人员记录P6安全管理管理员奖惩情况调动情况用户身份请假申请请假批复上级P2.1销假管理P2.2请假管理员工D2请假记录D3 员工记录D7出勤记录D1员工记录员工员工P7.1上班管理P7.2下班管 理 下班刷卡上班刷卡用户身份用户身份员工销假申请奖惩批复调动批复管理员情况部门情况P8部门管理D8 部门记录上级图41.4 系统数据字典 人事管理系统数据流程图中,数据信息和处理过程还需要通过数据字典来描述。在本文的数据字典中,主要对数据流图中的数据流、数据存储和处理过程进行说明。(1)主要的数据流定义1)数据流名称:员工情况位置:员工P1。定义: 员工情况=姓名+性别+出生日期+民族+学历+职称 。数据流量:根据公司的员工具体录用情况来确定。说明:要对每一位被聘用的新员工进行唯一编号。2)数据流名称:奖惩情况位置:P3员工定义: 奖惩情况=员工流水号+奖惩类型+奖惩金额+奖惩年月日。数据流量:根据公司的具体情况来确定。说明:要对每一次的奖惩记录进行唯一编号。3)数据流名称:奖惩批复位置:上级P3定义: 奖惩批复=奖惩类型+批复部门号+批复原因+批复日期。数据流量:根据公司的具体情况来确定。说明:具体应用中,批复原因可以省略。4)数据流名称:调动情况位置:P5员工定义: 调动情况=员工号+调动前职务+调动后职务+调动日期。数据流量:根据公司的具体情况来确定。说明:员工号和调动日期可以唯一确定一个调动情况。5)数据流名称:调动批复位置:上级P5定义: 调动批复=批复部门号+批复原因+批复日期。数据流量:根据公司的具体情况来确定。说明:批复原因可以省略。6)数据流名称:上班刷卡位置:员工P7.1定义: 上班刷卡=员工号+上班刷卡时间+刷卡机号。数据流量:根据公司的具体规模情况来确定。说明:上班刷卡时间会汇入到出勤记录中。7)数据流名称:下班刷卡位置:员工P7.2定义: 下班刷卡=员工号+下班刷卡时间+刷卡机号。数据流量:根据公司的具体情况来确定。说明:下班刷卡时间会汇入到出勤记录中。8)数据流名称:工资查询位置:P4员工定义: 工资查询=员工号+基本工资+奖金+罚款+超始时间+截止时间+发薪日期。数据流量:根据公司的具体情况来确定。说明:根据员工号和发薪日期可以唯一确定一个工资记录。9)数据流名称:请假申请位置:员工P2.2定义: 请假申请=员工号+请假时间+请假天数。数据流量:根据公司的具体情况来确定。说明:员工号和请假时间可以唯一确定一个请假记录。10)数据流名称:请假批复位置:上级P2.2定义: 请假批复=审批人+批复结果。数据流量:根据公司的具体情况来确定。说明:批复结果的类型只能是(批准、拒绝)。11)数据流名称:销假申请位置:员工P2.1定义: 销假申请=员工号+销假时间 。数据流量:根据公司的具体情况来确定。说明:针对销假申请没用单独建立销假记录表,在这里将销假记录和请假记录进行了合并。因为在一般情况下,请假是不能够进行嵌套的。12)数据流名称:管理员情况位置:管理员P6定义: 用户身份=员工编号。数据流量:根据公司的具体情况来确定。说明:要对每一位管理员建立唯一的账号。13)数据流名称:用户身份位置:安全管理P1,P2.1,P2.2,P3,P4,P5,P7.1,P7.2定义: 用户身份= 非法用户 | 内部管理员 | 服务管理员数据流量:根据公司的具体情况来确定。说明:不同的用户身份对应不同的操作权限,对应着不同的安全级别。14)数据流名称:部门情况位置:上级部门情况定义: 部门情况=部门号+部门名称+领导人号数据流量:根据公司的具体情况来确定。说明:部门号是主码。(2)主要的数据存储定义 1)数据存储编号:员工记录 D1 输入:P1 输出:P1,P7.1,P7.2,P2.1,P2.2 数据结构:员工记录=姓名+性别+出生日期+民族+学历+职称 +员工编号。 数据量和存取频度:根据公司的具体规模情况来确定。 存取方式:联机处理;检索和更新;以随机检索为主。 说明:员工编号具有唯一性和非空性;性别只能是男或女;主码是员工编号。 2)数据存储编号:请假记录 D2 输入:P2.1,P2.2 输出:P2.1,P2.2 数据结构:请假记录=员工号+请假时间+请假天数+销假时间 。 数据量和存取频度:根据公司的具体规模情况来确定。 存取方式:联机处理;检索和更新;以更新操作为主。 说明:主码设为请假时间和员工号;员工号是外码,参照表是员工记录。 3)数据存储编号:奖惩记录 D3 输入:P3 输出:P3 数据结构:奖惩记录=员工流水号+奖惩类型+奖惩金额+奖惩时间+批复部门号+批复原因+批复日期。 数据量和存取频度:根据公司的具体规模情况来确定。 存取方式:联机处理;检索和更新;以更新操作为主。 说明:主码设为奖惩时间和员工号;员工号是外码,参照表是员工记录。 4)数据存储编号:工资记录 D4 输入:P4 输出:P4 数据结构:工资记录=员工号+基本工资+奖金+罚款+超始时间+截止时间+发薪日期。 数据量和存取频度:根据公司的具体规模情况来确定。 存取方式:联机处理;检索和更新;以更新操作为主。 说明:主码设为发薪日期和员工号;员工号是外码,参照表是员工记录。 5)数据存储编号:职务调动记录 D5 输入:P5 输出:P5 数据结构:职务调动记录=员工号+调动前职务+调动后职务+调动日期+批复部门号+批复原因+批复日 期。 数据量和存取频度:根据公司的具体规模情况来确定。 存取方式:联机处理;检索和更新;以更新操作为主。 说明:主码设为调动日期和员工号;员工号是外码,参照表是员工记录。 6)数据存储编号:管理人员记录 D6 输入:P6 输出:P6 数据结构:管理人员记录=用户密码+职工号+密码+管理员账号。 数据量和存取频度:根据公司的具体规模情况来确定。 存取方式:联机处理;检索和更新;以更新操作为主。 说明:主码设为管理员账号。 7)数据存储编号:出勤记录 D7 输入:P7.1,P7.2 输出:P7.1,P7.2 数据结构:出勤记录=员工号+上班刷卡时间+下班刷卡时间+刷卡日期。 数据量和存取频度:根据公司的具体规模情况来确定。 存取方式:联机处理;检索和更新;以更新操作为主。 说明:主码设为员工号和刷卡日期;员工号是外码,参照表是员工记录。 8)数据存储编号:部门记录 D8 输入:P8 输出:P8 数据结构:部门记录=部门号+部门名称+领导人号。 数据量和存取频度:根据公司的具体规模情况来确定。 存取方式:联机处理;检索和更新;以检索操作为主。 说明:主码设为部门号。(3)主要的处理过程1)处理过程编号:P1处理过程名:档案管理输入:用户身份,员工记录,员工情况输出:员工记录处理说明:根据员工的聘用、解聘建立或删除员工记录,以及在后续的过程中,以管理员身份对员工 的记录进行修改。2)处理过程编号:P2.1处理过程名:销假管理输入:销假申请,请假批复,用户身份,员工记录,销假记录输出:请假记录处理说明:根据员工的销假申请,把销假时间录入到相应的请假记录中。3)处理过程编号:P2.2处理过程名:请假管理输入:请假申请,请假批复,用户身份,员工记录,请假记录输出:请假记录处理说明:根据员工的请假申请和批复情况,进行请假表的登记。4)处理过程编号:P3处理过程名:奖惩管理输入:用户身份,奖惩批复,奖惩记录输出:奖惩记录,奖惩情况处理说明:根据奖惩批复的要求对员工进行相应的惩处,并对惩处进行记录。5)处理过程编号:P4处理过程名:工资管理输入:用户身份,工资记录输出:工资记录,工资查询处理说明:根据员工目前的工资情况,进行调薪的操作。6)处理过程编号:P5处理过程名:调动管理输入:调动批复,用户身份,职务调动记录输出:职务调动记录,调动情况处理说明:根据调动批复的内容,更改员工的职务信息,并对调动情况进行记录。7)处理过程编号:P6处理过程名:安全管理输入:管理员情况输出:D6, P1,P2.1,P2.2,P3,P4,P5,P7.1,P7.2处理说明:建立管理人员记录表;通过用户名和口令,确认用户身份,保证系统安全性。8)处理过程编号:P7.1处理过程名:上班管理输入:上班刷卡,用户身份,员工记录,出勤记录输出:出勤记录处理说明:根据输入的员工号信息,记录上班时间,并判断是否迟到。9)处理过程编号:P7.2处理过程名:下班管理输入:下班刷卡,用户身份,员工记录,出勤记录输出:出勤记录处理说明:根据输入的员工号信息,记录下班时间,并判断是否早退。10)处理过程编号:P8处理过程名:部门管理输入:部门情况,部门记录输出:部门记录处理说明:根据上级的调度,对现在公司的部门进行领导人的调换,或者是增加或删除某一部门。2 数据库结构设计 2.1 概念结构设计 根据系统需求分析,可以得出人事管理系统数据库的概念模型(信息模型),图5是用E-R图表示的人事管理系统的概念模型。最后,对设计出的数据模型进行规范化处理,使数据模型满足第三范式。2.2 逻辑结构设计 将人事管理系统的E-R图转换为关系数据库的数据模型,其关系模式为: 1)员工档案(员工编号+姓名+性别+出生日期+民族+学历+职称+部门号),其中员工编号为主码,部门 号为外码; 2)管理员记录(管理员账号,员工编号,密码,级别),其中管理员账号为主码,员工编号为外码; 3)请假记录(请假编号+员工编号+请假时间+请假天数+销假时间+审批领导号+批复结果) 请假编号为主码,其中员工编号外码。 4)奖惩记录(奖惩编号+员工编号+奖惩类型+奖惩金额+奖惩日期+批复部门号+批复原因+ 批复日期),奖惩编号为主码,其中员工编号和批复部门号为外码; 5)职务调动记录(调动编号+员工编号+调动前职务+调动后职务+调动日期+批复部门号+批复原因+批 复日期),调动编号为主码,其中员工编号和批复部门号为外码; 6)出勤记录(出勤编号+员工号+上班刷卡时间+下班刷卡时间+刷卡日期),出勤编号为主码,员工号为外码; 7)工资记录(工资编号+员工号+基本工资+奖金+罚款+起始时间+截止时间+发薪日期),工资编号为主码,员工号为外码。 8)部门记录(部门编号+名称+领导人号),部门编号为主码。 9)刷卡机记录(刷卡机号)。 将人事管理系统定名为“人事管理系统”。 各实体的分E-R图,如图A,B,C所示:员工编号员工职称姓名学历出生日期性别民族部门号 A)员工实体图部门部门编号领导人号名称B)部门实体图管理人员管理员账号级别员工账号密码C)管理人员实体图刷卡机刷卡号D)刷卡机实体图全局E-R图,如图E所示:部门请假员工调动奖惩刷卡机出勤工资管理人员担任N 1 N 1 N 1 N 1 N 1 1 1 E)各实体间的联系图2.3 数据库结构的详细设计 经过检查,此数据库的详细逻辑设计满足第3范式的要求。人事管理系统中各表的属性设计情况如下表1:表名属性名数据类型长度允许空主码或索引约束条件部门部门号Char4No主码部门名Char10No领导人号Char4No索引、外码值为职工编号管理人员管理员账号Char4No主码职工编号Char4No外码密码Char6No 输入时不显示级别Char4No“管理员”或“系统管理员”刷卡机刷卡机号Char4No主码员工员工编号Char4No主码姓名Char10No学历VarChar8No索引项性别Char2“男”或“女”出生日期Datetime索引项身份证号VarChar32No民族VarChar16职称VarChar10部门号Char4外码出勤号Char6No主码出勤员工编号Char4No外码上班日期DatetimeNo索引上班时间Datetime 下班时间DatetimeNo 刷卡机号Char4No外码工资编号Char6No主码工资员工编号Char4No外码基本工资MoneyNo索引罚款Money起始时间Datetime截止时间Datetime发薪日期DatetimeNo索引调动编号Char6No主码职务调动员工编号Char4No外码调动前职务VarChar10No索引项调动后职务VarChar10No调动部门号Char4外码 调动日期Datetime值为员工调动日期批复日期Datetime 值为领导批复日期调动原因VarChar50 奖惩编号Char6No 主码 奖惩记录员工编号Char4No外码奖惩类型Char4No索引项奖惩金额Money奖惩日期Datetime值为员工受奖惩日期批复部门号Char4外码批复日期DatetimeNo 值为领导批复日期奖惩原因VarChar50 请假编号Char6No主码请假记录员工编号Char5No外码请假时间DatetimeNo 值为假期开始日期销假时间DatetimeNo 值为假期结束日期请假天数int索引项 审批人编号Char4索引项值为职工编号表1 3 物理设计3.1数据库物理设计原理 数据库物理设计阶段的任务是根据具体计算机系统(DBMS和硬件等)的特点,为给定的数据库系统确定合理的存储结构和存取方法。所谓的“合理”主要有两个含义:一个是要使设计出的物理数据库占用较少的存储空间,另一个对数据库的操作具有尽可能高的速度。主要体现在后者。(1)建立索引:对表 部门 在属性列 领导人号 上建立非聚集索引,对表 员工 在属性列 出生日期 上建立非聚集索引,在属性列 学历 上建立非聚集索引对表 出勤 在属性列 上班日期 上建立非聚集索引对表 工资 在属性列 基本工资 上建立非聚集索引对表 职务调动 在属性列 调动前职务 上建立非聚集索引。对表 奖惩记录 在属性列 奖惩类型 上建立非聚集索引。对表 请假记录 在属性列“请假天数”上建立非聚集索引,在属性列“审批人编号” 上建立非聚集索引。(2)存储结构确定数据库的存储结构主要指确定数据的存放位置和存储结构,包括确定关系、索引、日志、备份等的存储安排及存储结构,以及确定系统存储参数的配置。 将日志文件和数据库对象(表、索引等)分别放在不同的磁盘,可以改进系统的性能,提高系统的安全性。所以,系统应将日志文件和数据文件存放在不同磁盘上。3.2数据库的建立 具体SQL代码如下: create table 部门 ( 部门号 Char(4) primary key, 部门名 Char(10) not null,领导人号 Char(4) not null, ) create table 管理人员 ( 管理员账号 char(4) primary key,职工编号 Char(4) not null,密码 Char(6) not null,级别 Char(4) check(级别 in ('管理员','系统管理员'),foreign key (职工编号) references 员工(员工编号) ) create table 刷卡机 ( 刷卡机号 Char(4) primary key ) create table 员工 ( 员工编号 Char(4) primary key, 姓名 Char(10) not null,性别 Char(2) check(性别 in('男','女'),出生日期 datetime,学历 VarChar(32) not null,身份证号 VarChar(32) not null,民族 VarChar(16) not null, 职称 Char(10),部门号 char(4), ) create table 出勤 (出勤号 Char(6) primary key,员工编号 Char(4) not null,上班日期 datetime not null,上班时间 datetime not null,下班时间 datetime not null,刷卡机号 Char(4), foreign key (刷卡机号) references 刷卡机(刷卡机号), foreign key (员工编号) references 员工(员工编号) ) create table 工资 (工资编号 Char(6) primary key,员工编号 Char(4) not null,基本工资 money not null,罚款 money,起始时间 Datetime,截止时间 Datetime,发薪日期 Datetime,foreign key (员工编号) references 员工(员工编号) ) create table 职务调动 (调动编号 Char(6) not null primary key,员工编号 Char(4) not null,调动前职务 Char(10),调动后职务 Char(10),调动部门号 Char(4) not null,调动日期 Datetime,批复日期 Datetime,调动原因 VarChar(50), foreign key (员工编号) references 员工(员工编号), foreign key (调动部门号) references 部门(部门号) ) create table 奖惩记录 (奖惩编号 Char(6) not null primary key,员工编号 Char(4) not null,奖惩类型 Char(4),奖惩金额 money,奖惩日期 Datetime,批复部门号 Char(4),批复日期 Datetime,奖惩原因 VarChar(50), foreign key (员工编号) references 员工(员工编号), foreign key (批复部门号) references 部门(部门号) ) create table 请假记录 (请假编号 Char(6) not null primary key,员工编号 Char(4) not null,请假时间 Datetime,销假时间 datetime,请假天数 int ,审批人编号 Char(4), foreign key (员工编号) references 员工(员工编号) ) /*索引的建立*/ create index 部门_领导人号_index on 部门(领导人号) create index 员工_学历_index on 员工(学历 ) create index 员工_出生日期_index on 员工(出生日期 ) create index 出勤_上班日期_index on 出勤(上班日期 ) create index 工资_基本工资_index on 工资(基本工资 ) create index 职务调动_调动前职务_index on 职务调动(调动前职务 ) create index 奖惩记录_奖惩类型_index on 奖惩记录(奖惩类型 ) create index 请假记录_请假天数_index on 请假记录(请假天数)3.3实验数据的输入为了验证所设计的数据库的性能,在SQL server 2000上建立的“人事管理系统”数据库,输入了少量的实验数据。关系图4数据库运行和维护4.1运行需求4.1.1硬件接口1) 服务器端:PIII400主频、256M内存、10G硬盘、10100M网卡以上配置2) 客户端:P166主频、32M内存、2G硬盘、10100M网卡以上配置3) 一台路由器4) 远程拨入设备4.1.2软件接口a) MicroSoft Windows NT Server 4.0 /Windows 2003/ Windows xp/ Windows 2007b) SQLserver2000数据库c) MicroSoft Office 2000/2003/20074.2系统维护设备的硬件故障可能造成本软件不能运行或不能正常进行输入、输出等后果,系统的资源不足及网络传输通道阻塞可能造成本软件不能正常运行,并有可能造成机器“死机”,上述故障的处理由用户自行解决。软件在运行过程中产生的数据库错误,将由系统自动记入错误日志,非数据传输引起的错误将由系统管理员或软件开发者解决。软件在运行过程中产生的其他错误,将根据情况由软件开发者或软件开发者协助系统管理员解决。5总结由于在数据库的设计初期,没有对人事管理系统进行准确地需求分析,导致后期设计过程中的数据库的概念设计阶段无法进行。因此,通过此次数据库课程设计使学生认识到了需求分析对于软件系统设计的重要性。也认识到规范化的设计流程对于后期的设计来说,是十分重要的。前面的设计是后面的铺垫,只有对前面的设计过程进行准确地分析,才能节省整个系统的开发时间。最后,通过此次数据库课程设计使学生初步理解了简单数据库的一般开发流程,以及数据流图和E-R图等专业图形地绘制。-