关系数据库原理及应用人力资源管理系统数据库的设计与实现Word文件下载.docx
《关系数据库原理及应用人力资源管理系统数据库的设计与实现Word文件下载.docx》由会员分享,可在线阅读,更多相关《关系数据库原理及应用人力资源管理系统数据库的设计与实现Word文件下载.docx(20页珍藏版)》请在冰豆网上搜索。
系统涉及的数据有项。
见下表。
数据项目编号
数据项名
数据项含义
存储结构
别名
DI-1
addid
补贴编号
Char(5)
补贴号
DI-2
addmoney
补贴金额
Float
补贴
DI-3
basicid
基本工资编号
基本工资号
DI-4
basicsal
员工基本工资
基本工资
DI-5
dno
部门编号
部门号
DI-6
dname
部门名称
Char(10)
部门名
DI-7
eno
员工编号
员工号
DI-8
ename
员工姓名
姓名
DI-9
sex
员工性别
Char
(2)
性别
DI-10
age
员工年龄
Int
年龄
DI-11
edu
员工学历
学历
DI-12
address
员工家庭住址
Varchar(50)
住址
DI-13
员工电话
Char(20)
电话
DI-14
birth
员工出生年月
Datetime
生日
DI-15
pno
DI-16
pname
DI-17
salary
员工应发工资
应发工资
DI-18
realsal
员工实发工资
实发工资
DI-19
tax
员工上缴税率
税率
(2)数据结构
数据结构见下表:
数据结构编号
数据结构名
数据结构含义
组成
DS-1
employee
员工基本信息
eno,ename,sex,age,edu,
DS-2
position
职位信息
pno,pname
DS-3
department
部门信息
dno,dname
DS-4
员工工资信息
eno,salary,realsal,addid,
basicid,tax
DS-5
additional
补贴信息
addid,addmoney
DS-6
basicsalary
基本工资信息
basicid,basicsal
六、实验过程
1.概念设计阶段
I.概念模型设计
(1)根据不同对象,分别画出其E-R图。
各实体间关系的E-R图,如下图所示:
各实体间关系的E-R图
员工基本信息的E-R图,如下图所示:
员工基本信息的E-R图
工资信息的E-R图,如下图所示:
工资信息的E-R图
职务信息和部门信息的E-R图:
职务信息、部门信息的E-R图
补贴信息和基本工资信息的E-R图:
补贴信息、基本工资信息的E-R图
(2)各E-R图中每个实体的属性如下:
职位:
position(pno,pname)
部门:
department(dno,dname)
员工工资:
salary(eno,salary,realsal,addid,basicid,tax)
补贴:
additional(addid,addmoney)
基本工资:
basicsalary(basicid,basicsal)
(3)合并各E-R图,消除属性冲突,命名冲突,结构冲突等3类冲突,得到初步E-R图,再消除不必要的冗余,得到基本E-R图,如下所示:
人力资源管理基本E-R图
II.新系统流程
新系统流程图,如下图所示:
用户
显示查询结果
发出查询内容
判断查询内容
在员工基本信息中处理
在员工工资信息中处理
存储修改数据
发出修改信息
判断修改内容
2.逻辑设计阶段
I.将E-R图转换为关系模型
II.数据库模式定义
(1)员工(employee)基本信息表,用于记录员工的基本信息。
员工基本信息表
属性名
数据类型
取值范围
是否是主属性或外键
完整性
00000~99999
是
NOTNULL
否
男、女
0~100
NULL
1900-1-1~9999-12-31
(2)补贴(additional)信息表,记录不同等级的补贴钱数。
补贴信息表
0.0~99999
(3)基本工资(basicsalary)信息表,记录不同等级的基本工资钱数。
基本工资信息表
(4)部门(department)信息表,记录部门名称。
部门信息表
(5)职位(position)信息表,记录职位名称。
职位信息表
(6)员工工资(salary)信息表,记录员工的工资情况。
员工工资信息表
0.0~1
III.系统功能模块
人力资源管理系统
员工基本信息管理
员工工资信息管理
系统功能模块图
3.数据库实施阶段
I.建立数据库和数据表
Createdatabaseemployee_management;
(1)员工基本信息表的建立
createtableemployee
(
enochar(20)PRIMARYKEY,
pnamechar(10)NOTNULL,
sexchar
(2)NOTNULL,
ageintNOTNULL,
educhar(10),
addresschar(50),
birthdatetimeNOTNULL,
pnochar(20)NOTNULL,
dnochar(20)NOTNULL
)
(2)工资基本信息表的建立
createtablesalary(
salaryfloat,
realsalfloat,
addidchar(20)NOTNULL,
basicidchar(20)NOTNULL
(3)部门信息表的建立
createtabledepartment
dnochar(20)PRIMARYKEY,
dnamechar(20)NOTNULL,
(4)职务信息表的建立
createtableposition
pnochar(20)PRIMARYKEY,
pnamechar(20)NOTNULL,
(5)补贴表的建立
createtableadditional
addidchar(20)PRIMARYKEY,
addmoneyfloatNOTNULL
(6)基本工资表的建立
createtablebasicsalary
basicidchar(20)PRIMARYKEY,
basicsalfloatNOTNULL
II.建立视图
(1)员工信息视图:
createviewview_employee
as
fromemployee,position,department
whereemployee.pno=position.pnoandemployee.dno=department.dno
(2)工资信息视图:
createviewview_salary
selectemployee.pnameas姓名,salaryas应发工资,realsalas实发工资,addmoneyas补贴,basicsalas基本工资,taxas税
fromsalary,additional,basicsalary,employee
wheresalary.addid=additional.addidandbasicsalary.basicid=salary.basicidandemployee.eno=salary.eno
(3)全部信息视图:
createviewview_allinfo
fromsalary,additional,basicsalary,employee,position,department
whereemployee.pno=position.pnoandemployee.dno=department.dnoandsalary.addid=additional.addidandbasicsalary.basicid=salary.basicidandemployee.eno=salary.eno
III.数据入库
员工信息采取用Excel导入的方式录入数据。
这种录入方式方便快捷,适合大量数据的录入。
IV.创建各功能的存储过程
(1)存储过程:
插入员工信息
createprocedureinput_employee
@员工号char(20),
@姓名char(20),
@性别char
(2),
@年龄int,
@学历char(10),
@住址char(50),
@电话char(20),
@生日datetime,
@职位号char(20),
@部门号char(20)
insertintoemployeevalues(@员工号,@姓名,@性别,@年龄,@学历,@住址,@电话,@生日,@职位号,@部门号)
(2)存储过程:
插入工资信息
createprocedureinput_salary
@补贴号char(20),
@基本工资号char(20),
@税float
insertintosalaryvalues(@员工号,0,0,@补贴号,@基本工资号,@税)
(3)存储过程:
更新员工信息
createprocedureupdate_employee
@员工号char(5),
as
ifEXISTS(select*fromemployeewhereeno=@员工号)
BEGIN
updateemployee
where@员工号=employee.eno
END
else
print'
不存在的员工'
(4)存储过程:
更新工资信息
createprocedureupdate_salary
updatesalary
setaddid=@补贴号,basicid=@基本工资号,tax=@税
where@员工号=salary.eno
(5)存储过程:
指定员工号删除信息
createproceduredelete_info
@员工号char(5)
delete
fromemployee
whereeno=@员工号
fromsalary
V.创建触发器
(1)触发器:
计算应发工资和实发工资
createtriggersalcal
onsalaryforinsert,update
DECLARE@bscsalfloat
declare@additionalfloat
select@additional=addmoneyfromadditionalwhereaddidin(selectaddidfrominseted)
select@bscsal=basicsalfrombasicsalarywherebasicidin(selectbasicidfrominserted)
setrealsal=@additional+@bscsal
whereaddidin(selectaddidfrominserted)
VI.创建和绑定规则
(1)创建规则:
性别限定
createrulesex_rule
as@sex='
男'
or@sex='
女'
(2)创建规则:
年龄限定
createruleage_rule
as@age<
=99and@age>
=0
(3)创建规则:
工资限定
createrulesalary_rule
as@salary>
(4)绑定规则
sp_bindrulesex_rule,'
employee.sex'
sp_bindruleage_rule,'
employee.age'
sp_bindrulesalary_rule,'
additional.addmoney'
basicsalary.basicsal'
4.系统的调试和测试
I.查看各表的基本数据(借助视图查询)
(1)查看员工信息:
查看员工信息
(2)查看工资信息:
查看工资信息
II.检测各存储过程的功能
(1)验证存储过程:
input_salary(插入基本工资信息)
存储过程:
(2)验证存储过程:
input_employee(插入员工基本信息)
(3)验证存储过程:
update_employee(修改员工基本信息)
(4)验证存储过程:
update_salary(修改基本工资信息)
(5)验证存储过程:
delete_info(指定员工号删除员工信息)
七、实验总结
通过本次实验,加深的了对关系数据库的原理及应用的认识:
1.主键是多张二维表之间联系的关键。
找对主键,能使表及存储过程,触发器的建立变得更加简单和规范。
2.在建立表之前,应保证表至少符合第三范式,这样才不会出现数据的冗余。
3.在删除表的同时,也相应删除了先前绑定的触发器。
4.做好前期准备工作,能让建表等工作更容易。
5.在需要做赋值等运算时,声明几个变量会使代码简单许多。
八、心得体会
通过本次实验,加深了我对关系数据库原理的理解,锻炼了我的动手能力。
在实验的3天时间里,我做出了一个简易的人力资源管理系统,这也让我额外了解了一些人力资源管理方面的知识,扩展了我的知识面,使我在学习完数据库的理论知识后付诸实践。
理论和实际相结合,对数据库的使用更加熟练。