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