企业人力资源管理系统数据库的设计与实现-大学毕业设计.doc
企业人力资源管理系统 数据库的设计与实现数学学院 信息与计算科学(软件服务外包)摘 要:随着当今时代高新技术的日益蓬勃发展,系统化、信息化、规范化、科学化管理在各企业竞争中的作用日益突出。特别是在人力资源管理当中,一个高质量、易操作、可维护的人力资源管理系统大大地提高了企业的核心竞争力。这不但给企业带来了经济上的效益,还大量地减少了人力物力上的开支。其中,数据库支撑着整个系统的根基,成为了科学研究和决策管理的重要技术手段。可以这样说,是否规范化地数据库设计直接决定了整个管理系统的质量。所以,我们应该更加注重于对它的设计与实现环节的分析与把握。关键词:数据库;规范化设计;企业人力资源管理系统Abstract:With the booming development of advanced technology, systematization、informatization and standardization play a very essential role in the competitions among companies. Especially in Human resource management, A human resource management system that is high-quality、easy-operated and maintainable can improve the key competitive power, which can not only brings companies a lot of profit, but also cuts the cost And the databases supporting the whole system become the important means of scientific research and decision-making management. Indeed, the quality of the management system is straightly decided by the standardized design of the databases. So, we should pay more attention to its design and how to analyze and control it.Key words: Database; Standardized Design; EHRMS1 引言1.1 设计背景当今我国社会处于一个知识与经济全球化相结合的时代,产品的各个业务流程都离不开人的参与,员工素质已成为企业生存与发展的基础。越来越多的企业开始推动人力资源管理的变革,期望借助良好的人力资源管理为企业营造良好的人才发展环境,从而能有效地挖掘并放大人力资源的潜在价值,提升企业的竞争力。那么一个高质量的人力资源管理系统软件对于企业来说无疑是个很不错的管理工具,它以其廉价的开发成本、可移植的应用平台、易维护的软件管理等优势获得了企业界的普遍认可和推广。1.2 设计目的企业人力资源管理系统重中之重在于数据库,设计数据库系统的目的是使数据库中的数据相互关联且具有最小冗余度,可共享,具有较高数据独立性。此外,数据库系统还必须提供所存储信息的安全性、完整性和稳定性保证。如果数据将被多用户共享,那么系统还必须设法避免可能产生的异常结果且能在多用户下仍保持足够的响应能力,海量的存储能力,极强的数据处理能力。它还需要有完善的管理开发工具和应用编程接口,完备的数据库驱动程序,以及运行速度的要求等。企业人力资源管理是数据库系统中比较具有代表性的应用,主要用于存储部门、员工、招聘、培训、薪资、奖惩等信息,以及系统管理等。1.3 设计思路本系统是为"基于SSH框架的企业人力资源管理系统的设计与实现"设计的数据库。阐述了系统需求分析、E-R模型设计(概要设计)、ER模型向关系模型的转化(逻辑设计)、表结构和表间的关系、物理设计、运行与维护设计等。而在模块功能的实现中对于有关数据的操作采用Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。2 需求分析2.1 系统分析首先,通过调查企业机构情况,了解该企业的部门组成情况、各部门的职责等,为分析信息流做准备。其次,调查各部门的业务活动情况,包括了解各部门输入和使用什么数据、如何加工和处理这些数据、输出什么信息、输出到什么部门、输出格式如何等。在上述工作的基础上,协助用户明确对新系统的各种要求,包括信息存储要求,信息处理要求、安全性和完整性要求等。再次,通过研究分析目前正在使用的系统,导出系统的逻辑模型,确定总的功能要求,所以企业人力资源管理系统主要分为部门管理、员工管理、招聘管理、培训管理、薪资管理、奖惩管理、系统管理这七大功能。部门管理主要实现增、删、查部门信息,查询时可以看到该部门下的员工人数和部门职责等信息;员工管理主要实现增、删、改、查人员信息,其中查看员工的详细信息显得尤为重要;招聘管理主要实现增、删、改、查招聘信息,其中查分别录用员工查询和非录用人员查询。培训管理、薪资管理、奖惩管理这三个功能相对来说比较简单,主要是对于各自一些基本信息的管理;系统管理主要是对用户数据信息的管理,实现正常登录和安全退出。对于以上的分析,可以简要地用下面的系统流程图加以说明理解。如图2-1。图2-1 系统流程图2.2 数据流图(DFD图)数据流图表达了数据和处理过程的关系。根据企业人力资源管理系统的系统流程图,可以描述企业人力资源管理系统的数据流程图,如图2-2所示。(1) 顶层数据流图(2) 零层数据流图图2-2 数据流图(DFD)2.3 数据字典数据字典是需求分析阶段的另一个工具,它用于对系统中的各类数据进行详尽的描述,其目的是对数据流程图中的各个元素做出详细的说明,是对各类数据描述的集合,通常包括数据项、数据结构、数据流、数据存储和处理过程五大部分。因此,根据数据字典的描述定义,本企业人力资源管理系统的数据字典列举如下表:表2.3.1 数据项数据项目数据项含义别名数据类型取值范围取值含义id唯一标识每一个用户ID用户编号int<11>0 4294967295顺序编号account标识每一个用户名用户名varchar(20)password标识每一个密码用户密码varchar(30)level标识每一个级别用户级别varchar(10)0或11表示超级用户、2表示普通用户dt_id唯一标识每一个部门ID部门编号int<11>0 4294967295顺序编号dt_name标识每一个部门名部门名称varchar(10)dt_createtime标识每一个创建时间创建时间varchar(20)YYYYMMYYYY年MM月dt_bz标识每一项职责职责varchar(150)dt_number标识每一项人数人数int0 4294967295dt_extra标识每一个备注备注varchar(200)em_id标识每一个员工ID员工编号int<11>0 4294967295前5位表示部门编号,紧随后两位代表职务,剩下的代表排名em_name标识每一个员工姓名员工姓名varchar(10)em_sex标识每一个员工性别性别varchar(5)男或女em_xl标识每一个员工学历学历varchar(10)em_bz标识每一个员工职务职务varchar(30)em_statute标识每一个员工状态人员状态varchar(10)录用或非录用em_createtime标识每一个员工参加工作时间参加工作时间varchar(50)YYYYMMYYYY年MM月em_picture标识每一个员工相片图片BLOBem_future标识每一个员工前景行业前景varchar(50)em_hobby标识每一个人技术特长技术特长varchar(50)表2.3.2 数据结构数据结构名含义说明组成部门是部门管理子系统的主体数据结构,定义了一个部门的有关信息序号、部门名称、创建时间、部门人数、职责、备注等等员工是员工管理子系统的主体数据结构,定义了一个员工的有关信息员工编号、姓名、性别、部门、职务、学历、参加工作时间、人员状态(在职/兼职/离职)、图片(正装照/身份证扫描/学历证书扫描),除此之外,还可以选择定义行业背景、技术特长等等招聘是招聘管理子系统的主体数据结构,定义了一个招聘的有关信息编号、姓名、性别、应聘职务、学历、工作经验等培训是培训管理子系统的主体数据结构,定义了一个培训的有关信息编号、培训人、培训主题、培训时间、培训地点等奖惩是奖惩管理子系统的主体数据结构,定义了一个奖惩的有关信息编号、奖惩主题、奖惩类型、奖惩金额、奖励时间等薪资是薪资管理子系统的主体数据结构,定义了一个薪资的有关信息员工编号、员工姓名、当前月份、基本工资、加班费、工龄费、考勤费、旷工费、保险费、实发工资等系统是系统管理子系统的主体数据结构,定义了一个系统的有关信息序号、账号、密码等表2.3.3 数据流数据流名说明数据流来源数据流去向组成平均流量高峰期流量员工录用企业招聘员工应聘者的报名待录用存储表姓名、性别、年龄、出生日期、应聘职位、所学专业、工作经验、文化程度、联系电话、毕业院校、家庭地址、登记时间、是否录用、个人简介每年100个每年200个员工培训企业对员工的培训企业现有状态为录用的所有员工培训员工信息存储表培训人、培训主题、培训宗旨、培训时间、培训地点、参加人员、备注信息每月5个每月10个表2.3.4 数据存储数据存储说明流入的数据流流出的数据流组成数据量存取方式录用已录用员工信息表录用表录用表录用表100000个记录顺序存储培训已参加培训的员工信息表培训表培训表培训表100000个记录顺序存储表2.3.5 处理过程处理过程名说明输入数据流输出数据流处理录用已录用员工信息表录用表录用表记录录用编号、员工编号、录用日期等信息培训已参加培训的员工信息表培训表培训表记录培训编号、员工编号、培训日期、培训主题等信息3 概要结构设计3.1 数据抽象基于需求分析的基础之上,企业人力资源管理系统分为七大功能,因此可以相应地抽象出七大类,它们分别是部门、员工、应聘者、培训者、薪资类、奖惩者、系统管理类。然后分别列举各类的自身属性,例如,部门有部门编号、名称、人数、创建时间、职责、备注等属性;员工有员工编号、姓名、性别、职务、学历、技术特长、参加工作时间、行业背景、图片等属性;应聘者有应聘编号、姓名、性别、学历、工作经验、应聘职务等属性;培训者有培训编号、培训主题、培训地点、培训时间等属性;薪资有薪资编号、当前月份、基本工资、考勤费、工龄费、加班费、旷工费、保险费、实发工资等属性;奖惩者有奖惩编号、主题、类型、时间、金额等属性;系统管理类有用户账号、密码等属性。3.2 局部视图设计局部视图设计就是将上述的数据抽象结果用E-R图表示,实体用矩形框表示,属性用椭圆矩形框表示,实体和该实体的属性之间用线段连接起来。这种方法可以形象直观地表示出概念模型。例如下图3-2表示的部门视图。图3-2 部门E-R图3.3 视图集成视图集成很显然就是在上述基础之上,将多个零散的局部视图以某种规则集成一个总的视图。这种规则是实体间的联系,在图中用菱形表示,它分为三种1:1,1:N,M:N。通过这种由局部到整体的集成方法可以有效地解决项目工作量大的困难,如果一次性画出总的视图,这是一件相当困难的事,即使能够画出,也需要花费很大的脑力去构思和设计,有时候结果还可能是不正确的。我们前面已经将系统分为七大类,那么类与类之间少不了联系,如一个部门下会有多个员工,而对于任何一个员工,他只能属于某一个部门,这种联系显然是1:N。再如员工和薪资的联系,一个员工的薪资是唯一的,不可能有多份工资,一份工资列表一般情况下是对应于一位员工。再如员工和培训的联系,一个员工一般情况下可以参加多次培训,一次培训也可以由多个员工同时参加,这与我们实际生活当中是相符合的,所以综合以上的集成规则,系统E-R图3-3如下。图3-3 系统E-R图4 逻辑结构设计4.1 模型转换为了能够建立起最终的物理模型,需要进行数据库的逻辑结构设计。数据库的逻辑结构设计主要任务就是将概要结构设计的概念模型通过一定的转换规则转换成某一数据库管理系统所支持的关系模型,这就是所谓的模型转换。其实质就是将E-R图的实体集、属性及联系转换为相应的关系模式。其中一个实体集转换成关系模式的一个关系,实体集的属性就是关系的属性,实体集的标识符就是关系的键,实体集间的联系转换规则比较复杂,在这里将分类讨论。一、对于一个1:1联系可以转换为数据库中一个独立的关系,也可以与任意一端实体集所对应的关系合并。前者中,与该联系相连的各实体的标识符及联系本身的属性均转换成关系的属性,且每个实体的键均是该关系的候选键;后者中,在合并的关系中需要增加的属性为联系本身的属性和联系相关的另一个实体集的键。本系统中员工和薪资关系是1:1的联系,所以有3种方案可供选择(注:关系模式中下划线的属性为键)。方案1:员工(员工编号、姓名、性别、职务、学历、技术特长、参加工作时间、行业背景、图片),薪资(薪资编号、当前月份、基本工资、考勤费、工龄费、加班费、旷工费、保险费、实发工资),支付(员工编号、薪资编号)。方案2: 员工(员工编号、姓名、性别、职务、学历、技术特长、参加工作时间、行业背景、图片、薪资编号),薪资(薪资编号、当前月份、基本工资、考勤费、工龄费、加班费、旷工费、保险费、实发工资)。方案3: 薪资(薪资编号、当前月份、基本工资、考勤费、工龄费、加班费、旷工费、保险费、实发工资、员工编号),员工(员工编号、姓名、性别、职务、学历、技术特长、参加工作时间、行业背景、图片)。二、对于一个1:n联系可以转换为数据库中一个独立的关系,也可以与n端实体集所对应的关系合并。前者中,与该联系相连的各实体的标识符及联系本身的属性均转换成关系的属性,且每个实体的键均是该关系的候选键;后者中,在合并的关系中需要增加的属性为联系本身的属性和1端实体集的键。本系统中部门和应聘者关系是1:n的联系,所以有2种方案可供选择(注:关系模式中下划线的属性为键)。方案1:部门(部门编号、名称、人数、创建时间、职责、备注),应聘者(应聘编号、姓名、性别、学历、工作经验、应聘职务),招聘(部门编号、应聘编号)。方案2: 部门(部门编号、名称、人数、创建时间、职责、备注),应聘者(应聘编号、姓名、性别、学历、工作经验、应聘职务、部门编号)。三、对于一个m:n联系可以转换为数据库中一个独立的关系。与该联系相连的各实体集的键以及联系本身的属性转换为关系的属性。本系统中员工和培训关系是m:n的联系,所以方案如下,员工(员工编号、姓名、性别、职务、学历、技术特长、参加工作时间、行业背景、图片),培训(培训编号、培训主题、培训地点、培训时间),参加(员工编号、培训编号)。4.2 模型优化模型优化的主要任务是根据逻辑设计的准则、数据的语义约束、规范化理论等对关系模型进行适当的调整和优化,形成合理的全局逻辑结构。部门和应聘者、员工之间的关系都为1:n,故可以将部门实体集端分别合并到其他两个表中去。员工和奖惩也是1:n,故将员工实体集端合并到奖惩。员工和薪资是1:1,那么为了减少系统复杂度,将员工实体集端合并到薪资。员工和培训是m:n,只能分成一个独立的关系来处理。那么单单通过逻辑设计的准则来规范模型是远远不够的,这里还需要运用到数据库的规范化理论来加以验证。数据库的规范化理论判断如下图4-2。图4-2 数据表规范化判定流程图所以对本系统的所有关系模型优化后如下(注:下划线表示主键,双下划线表示外键,波浪线表示既是主键又是外键):部门(部门编号、名称、人数、创建时间、职责、备注)员工(员工编号、姓名、性别、职务、学历、技术特长、参加工作时间、行业背景、图片、部门编号)应聘者(应聘编号、姓名、性别、学历、工作经验、应聘职务、部门编号)奖惩(奖惩编号、主题、类型、时间、金额、员工编号)薪资(薪资编号、当前月份、基本工资、考勤费、工龄费、加班费、旷工费、保险费、实发工资、员工编号)培训(培训编号、培训主题、培训地点、培训时间)参加(员工编号、培训编号)用户(用户编号、账号、密码)5 数据库的实施和维护5.1 数据库加载5.1.1 建立数据库结构建立数据库结构的过程就是将物理数据库设计的结果用SQL语句在DBMS上建立起数据库结构的过程。本系统采用MySQL数据库,建立语句如下:create database db_personmanager;use db_personmanager;create table tb_department(id int(11) primary key not null auto_increment,dt_name varchar(10),dt_number int(11),dt_createTime varchar(20),dt_bz varchar(150);create table tb_employee(id int(11) primary key not null auto_increment,em_name varchar(10),em_sex varchar(2),em_age int(11),em_IDCard varchar(30),em_born varchar(50),em_nation varchar(10),em_marriage varchar(10),em_visage varchar(10),em_ancestralHome varchar(30),em_tel varchar(50),em_address varchar(50),em_afterSchool varchar(50),em_speciality varchar(50),em_culture varchar(10),em_startime varchar(30),em_typeWork varchar(10),em_creatime varchar(50),em_createName varchar(30),em_bz varchar(50),em_departmentId int(11),foreign key(em_departmentId) references tb_department(id);create table tb_invitejob(id int(11) primary key not null auto_increment, name varchar(10),sex varchar(2),afterschool varchar(50),experience varchar(50),job varchar(50),em_departmentId int(11),foreign key(em_departmentId) references tb_department(id);create table tb_cj(id int(11) primary key not null auto_increment, cj_title varchar(50),cj_type varchar(10),cj_content text,cj_time varchar(50),cj_money varchar(50),em_employeeId int(11),foreign key(em_employeeId) references tb_employee(id);create table tb_pay(id int(11) primary key not null auto_increment, pay_month varchar(50), pay_baseMoney int(11),pay_check float,pay_age int(11),pay_overtime int(11),pay_absent int(11),pay_safety float,pay_infact float,em_employeeId int(11),foreign key(em_employeeId) references tb_employee(id);create table tb_train(id int(11) primary key not null auto_increment, tn_title varchar(50),tn_address varchar(50),tn_time varchar(50);create table train_join(em_employeeId int(11) not null,em_trainId int(11) not null,primary key(em_employeeId,em_trainId), foreign key(em_employeeId) references tb_employee(id), foreign key(em_trainId) references tb_train(id);create table tb_manager(id int(11) primary key not null auto_increment,account varchar(20),password varchar(30);5.1.2 加载数据由于数据库的数据量很大,通过手动加载每条数据的工作量相当之大,因此我们可以通过数据录入软件(第三方辅助软件)来快速建立数据初始化。这里我用到了SQLyog_Enterprise_7.14。5.2 数据库的运行与维护数据库试运行合格后,数据库开发工作就基本完成,即可投入正式运行了。但是,由于应用环境在不断变化,数据库运行过程中物理存储也会不断变化,对数据库设计进行评价、调整、修改等维护工作是一个长期的任务,也是设计工作的继续和提高。在数据库运行阶段,对数据库经常性的维护工作主要是由DBA完成的,它包括:1、数据库的转储和恢复。2、数据库的安全性、完整性控制。3、数据库性能的监督、分析和改造。4、数据库的重组织与重构造。由于数据库应用环境发生变化,增加了新的应用或新的实体,取消了某些应用,有的实体与实体间的联系也发生了变化等,使原有的数据库设计不能满足新的需求,需要调整数据库的模式和内模式。例如,在表中增加或删除某些数据项,改变数据项的类型,增加或删除某个表,改变数据库的容量,增加或删除某些索引等。当然数据库的重构也是有限的,只能做部分修改。如果应用变化太大,重构也无济于事,说明此数据库应用系统的生命周期己经结束,应该设计新的数据库应用系统了。6 结束语该企业人力资源管理系统的数据库设计与实现严格按照设计与实现步骤来进行,对于每一环节的分析、设计和优化都必须保质保量地完成。在所有环节中,重难点就是对于如何将概念模型转换成数据库的关系模型。其中的转换规则显得尤为重要,如果分析的不够透彻往往会导致数据的冗余存储,独立性不高,降低了数据库的存储效率和执行响应效率。对于规范化理论,需要我们能够熟练运用到具体项目的设计中去,指导我们设计出高质量的数据库并能够有效地维护它。参考文献:1 付明柏.对高校人力资源信息管理系统的数据库设计J.福建:福建电脑报,2009.139-140.2 余凯成,程文文,陈维政.人力资源管理M.大连:大连理工大学出版社,2001.15-17.3 张洪斌编著.例释Java2企业版(J2EE)程序设计M.北京:中国铁道出版社,2002.6-10.4 鲁晓东,杨健编著.JSP软件工程案例精解M.北京:电子工业出版社,2005.121-151.5 聂建霞.高校人力资源信息数据库的开发与建设J.广州:华南师范大学农业图书情报学刊,2003.25-31.6 张念,陈薇.基于UML的面向对象数据库设计思想及在HR系统中的应用J.湖北:计算机软件与应用期刊,2009.139-140.7 张念春.UML模型向关系数据库的映射方法初探J.北京:计算机工程与应用,2002. 212-214.8 王成良,柳玲,徐玲.数据库技术与应用M.北京:清华大学出版社,2011.237-259.第 16 页(共 16 页)