课程设计报告课程设计题目:人力资源管理系统数据库的设计与实现专业:信息工程专业班级:1222301学号:201220230122姓名:曾广明指导教师:吴建东黄笑娟2013年1月17日2一、实验题目:人力资源管理系统数据库的设计与实现二、实验时间及地点:1、时间:1月6号至9号。2、地点:东华理工大学核工楼303。三、实验目的:通过本次课程设计让学生能够综合运用所学的关系数据库原理知识解决人力资源管理系统数据库的设计与实现的实际问题,进一步掌握数据库原理的相关理论和数据库的设计实现过程,进一步提高学生的分析问题和解决问题的能力以及学生的动手能力。四、课程设计要求:1.进行系统功能需求分析2.数据库设计分析阶段,进行详细的数据库需求分析,进行概念数据库的设计,画出数据库的E-R图(局部和整体E-R图)3.设计出详细的逻辑数据库结构,将各个实体和联系转化为相应的二维表即关系模式,指定各个关系的主关键字和外部关键字,并对各个关系的约束加以限定4.通过企业管理器或是查询分析器实现各个二维关系(建议最好用SQL代码实现),要求建立相关的索引5.根据系统功能需求设计相应的查询视图6.要求根据系统功能需求建立存储过程7.根据功能需求建立相应的触发器以保证数据的一致性8.通过建立用户和权限分配实现数据库一定的安全性,考虑数据库的备份与恢复(此内容选作)五、实现思路:描述:设计一个人力资源管理系统(至少包括员工、部门、职称三个表)。实现下列功能:1.员工人事信息维护(包括信息录入,修改和删除等);2.部门信息维护(包括信息录入,修改,删除);1.职称信息维护;2.按职称统计人员数量3.按部门查询人员信息32、处理对象:1.员工基本信息(employee):包括员工工号,姓名,性别,年龄,学历,住址,电话,出生年月2.公司部门综合信息(department):包括部门编号,部门名称,员工工号3.公司人员职称信息(position):包括员工工号,员工职位,所属部门3、概念设计模型:1、局部E-R图:各实体关系E-R图:员工局部E-R图:员工电话员工号姓名名性别年龄出生年月住址学历员工所属部门员工当任职称4工资局部E-R图:部门局部E-R图:职称职位null员工号所属部门部门员工号部门名称部门号52、整体E-R图:3、系统流程图:用户显示查询结果发出查询内容判断查询内容在员工基本信息中处理在员工职称信息中处理存储修改数据发出修改信息判断修改内容在员工基本信息中处理在员工职称信息中处理员工电话员工号姓名名性别年龄出生年月住址学历职称职位所属部门门员工号null部门员工号职位部门号当任所属64、关系模式:员工:employee(eno,ename,sex,age,edu,address,tel,birth)职称;position(eno,pjob,pdepartment)员工工号,员工职位,所属部门部门:department(eno,dno,position)六、实验过程:1、表的建立:(1)、员工表的建立:createtableemployee(enochar(20)notnullconstraintenamePRIMARYKEY,--主键约束enamechar(10)NOTNULL,sexchar(2)NOTNULL,ageintNOTNULL,educhar(10),addresschar(50),telchar(20),birthdatetimeNOTNULL,)(2)职称表的建立:7Createtableposition(enochar(20)notnullPRIMARYKEYforeignkeyreferencesemployee(eno),----主键和外键约束pjobchar(8)notnull,pdepartmentchar(10),)(3)、部门表的建立:createtabledepartment(enochar(20)notnullPRIMARYKEYforeignkeyreferencesemployee(eno),dnochar(20)NOTNULL,positionchar(20)8)2、视图的建立:(1)、员工及部门信息视图:createviewview_employeeasselectemployee.enoas员工号,enameas姓名,sexas性别,ageas年龄,eduas学历,addressas住址,telas联系电话,birthas出生年月,positionas职位,dnoas部门号fromemployee,departmentwhereemployee.eno=department.eno92、创建索引:createuniqueclusteredindexix_enoonemployee(enodesc)createuniqueclusteredindexix_snoonsalary(enodesc)createuniqueclusteredindexix_dnoondepartment(enodesc)4、存储过程的建立:(1)、插入员工信息:createprocinput_employee(@员工号char(20),@姓名char(20),@性别char(2),@年龄int,@学历char(10),@住址char(50),@电话char(20),@生日datetime,)as10insertintoemployeevalues(@员工号,@姓名,@性别,@年龄,@学历,@住址,@电话,@生日)(2)、插入职称信息:createprocinput_position(@员工号char(20),@职位char(10),@所属部门char(20))asinsertintopositionvalues(@员工号,@职位,@所属部门)11(3)、插入部门信息:createprocinput_department(@员工号char(20),@部门号char(20),@职务char(20))asinsertintodepartmentvalues(@员工号,@部门号,@职务)12(4)、更改员工信息:createprocedureupdate_employee(@员工号char(5),@姓名char(20),@性别char(2),@年龄int,@学历char(10),@住址char(50),@电话char(20),@生日datetime)asifEXISTS(select*fromemployeewhereeno=@员工号)BEGINupdateemployeesetename=@姓名,sex=@性别,age=@年龄,edu=@学历,address=@住址,tel=@电话,birth=@生日where@员工号=employee.enoENDelseprint'没有找到该员工,请核对是否存在'13(5)、更改部门信息:createprocupdate_department(@员工号char(20),@部门号char(20),@职务char(20))asifEXISTS(select*fromdepartmentwhereeno=@员工号)BEGINupdatedepartmentsetdno=@部门号,position=@职务where@员工号=department.enoENDelseprint'没有找到该员工,请核对是否存在'14(7)、删除员工所有信息:createproceduredelete_info(@员工号char(20))asdeletefromemployeewhereeno=@员工号deletefromsalarywhereeno=@员工号deletefromdepartmentwhereeno=@员工号5、触发器的建立:6、创建一个触发器,向employee中插入一条记录,自动显示employee表中的记录createtriggerChuFaonemployeeforinsertasselect*15fromemployee6、系统调试与结果:(1)、简单查询、(2)使用多表查询鼬的职位(3)使用子查询,查询与鼬相同学历的人的名字,性别,年龄16(4)将employee表中的员工年龄全部加一岁(5)按职称统计人员数量(6)在employee中添加一条记录(95008,长门,男,25,博士,china,6533344,1994-2-1)17七、实验总结通过本次实验,加深的了对关系数据库的原理及应用的认识:1.主键是多张二维表之间联系的关键。找对主键,能使表及存储过程,触发器的建立变得更加简单和规范。2.在删除表的同时,也相应删除了先前绑定的触发器。3.做好前期准备工作,能让建表等工作更容易。在需要做赋值等运算时,声明几个变量会使代码简单许多。八、心得体会:通过本次人力资源管理系统数据库课程设计,让我了解了很多知识上的不足。锻炼了上机操作的能力。明白了建一个数据库系统是一个非常复杂的问题,要考虑许多问题,一定要想的周全。拓展了我的知识,收获颇丰!