数据库人力资源管理系统Word文档下载推荐.docx
《数据库人力资源管理系统Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《数据库人力资源管理系统Word文档下载推荐.docx(13页珍藏版)》请在冰豆网上搜索。
![数据库人力资源管理系统Word文档下载推荐.docx](https://file1.bdocx.com/fileroot1/2023-1/2/5f22a0a3-065e-47e5-a95d-f522b5a8d349/5f22a0a3-065e-47e5-a95d-f522b5a8d3491.gif)
并创建存储过程进行查询
◎创建视图,通过视图来查询
二、ER图
总经理与经理的属性ER图与员工相同
员工的职务属性通过员工编号体现,规则见“职务表”
三、关系模式
系统中的实体有:
为简化关系模式,将总经理、经理、员工的信息集中到一个表。
关系模式如下:
职务表(职务名称、职务编号、基本工资、基本奖金)
部门表(部门编号、部门名称、经理编号、办公电话)
员工表(员工编号、员工姓名、部白兔牌暗疮膏门编号、职务、出生日期、年龄、入职日期、性别、学历、电话)
考核表(员工编号、本月出勤次、本月业绩、本月考核)
工资表(员工编号、基本工资、基本奖金、计算工资、所得税、本月实发工资)
四、物理设计
职务表结构
属性名
数据类型
说明
职务名称
char(6)
主键
职务编号
char
(2)
notnull
基本工资
int
基本奖金
说明:
职务表为基本表,直接输入数据。
其中,职务编号A、B、C分别为总经理、经理、员工的员工编号的首字母(如,经理B01,员工C03)
部门表结构
部门编号
部门名称
经理编号
char(4)
经理电话
char(12)
部门表为基本表,直接输入数据。
员工表结构
员工编号
主键;
检查约束
员工姓名
外键
职务
职务规则
性别
notnull;
性别规则
出生日期
datetime
年龄
入职日期
学历
学历规则;
默认约束
电话
1、员工表与部门表有外键联系,部门编号是部门表的主键;
直接输入数据
2、员工编号是主键,并有检查约束,确认输入的员工编号合理。
具体是员工编号的首字母与职务对应的编号一致,如,总经理编号为AXX,经理BXX,员工CXX
3、职务与规则“职务_rule”绑定,取值范围(“总经理”“'
经理”“员工”)
4、公式:
年龄=year(getdate())-year(出生日期)
5、性别与规则“性别_rule”绑定,取值范围(“男”“'
女”)
6、学历与规则“学历_rule”绑定,取值范围(“博士”“'
硕士”“学士”),默认值学士
考核表结构
本月出勤次
默认值
本月业绩
本月考核
1、考核表与员工表有外键联系;
用表约束定义联合主键
2、本月考核为计算列,公式本月考核=本月业绩*本月出勤次。
创建存储过程“insert考核表”实现输入数据,
3、本月出勤次与默认“default本月出勤次”绑定,默认值为30
工资表结构
计算工资
所得税
本月实发工资
2、后三列为计算列,公式:
计算工资=基本工资+本月考核*基本奖金/50
所得税=计算工资*0.05
本月实发工资=计算工资-所得税
其中,本月考核是考核表中该员工对应的考核
创建存储过程“insert工资表”实现输入数据
五、系统实现
--创建数据库"
人力资源管理系统DB"
createdatabase人力资源管理系统DB
on
(name=人力资源管理系统DB_dat,
filename='
e:
\人力资源管理系统DB_dat.mdf'
size=5120kb,
maxsize=kb,
filegrowth=1024kb
)
logon
(name='
人力资源管理系统DB_log'
\人力资源管理系统DB_log.ldf'
size=1024kb,
use人力资源管理系统DB
--创建表
createtable职务表
(职务名称char(6)notnullprimarykey,
职务编号char
(2)notnull,
基本工资int,
基本奖金int,
createtable部门表
(部门编号char
(2)notnullprimarykey,
部门名称char(6)notnull,
经理编号char(4),
经理电话char(12)
createtable员工表
(员工编号char(4)notnullprimarykey,
员工姓名char(6)notnull,
部门编号char
(2),
职务char(6),
性别char
(2)notnull,
出生日期datetimenotnull,
年龄int,
入职日期datetimenotnull,
学历char(4),
电话char(12),
constraintfk_员工表_部门表_key
foreignkey(部门编号)references部门表(部门编号),
constraintfk_员工表_职务表_key
foreignkey(职务)references职务表(职务名称)
createtable考核表
(员工编号char(4)notnull,
本月出勤次intnotnull,
本月业绩intnotnull,
本月考核int,
constraintpk_考核表_keyprimarykey(员工编号,本月考核),
constraintfk_员工表_考核表_key
foreignkey(员工编号)references员工表(员工编号)
createtable工资表
基本工资intnotnull,
基本奖金intnotnull,
计算工资int,
所得税int,
本月实发工资int,
constraintpk_工资表_keyprimarykey(员工编号,本月实发工资),
constraintfk_员工表_工资表_key
--为员工表建立检查约束,保证输入的员工编号合理
altertable员工表withnocheck
addconstraintck_员工编号check
(substring(员工编号,1,1)=
case
when职务='
总经理'
then'
A'
经理'
B'
员工'
C'
end
)
go
--建立职务规则、学历规则、性别规则,并与员工表绑定
createrule职务_ruleAS@职务in('
'
execsp_bindrule职务_rule,'
员工表.职务'
createrule学历_ruleAS@学历in('
博士'
硕士'
学士'
大专'
execsp_bindrule学历_rule,'
员工表.学历'
createrule性别_ruleAS@性别in('
男'
女'
execsp_bindrule性别_rule,'
员工表.性别'
--建立学历默认值约束,与员工表对应列绑定
createdefault学历_defaAS'
execsp_bindefault学历_defa,'
--建立本月缺勤次默认值约束,与考核表对影列绑定
createdefault本月出勤次_defaAS'
31'
execsp_bindefault本月出勤次_defa,'
考核表.本月出勤次'
--输入员工表、职务表、部门表数据
insert职务表values('
50000'
5000'
10000'
3000'
1000'
insert部门表values('
D1'
销售部'
B01'
'
D2'
采购部'
B02'
D3'
人事部'
B03'
D'
A01'
insert员工表values('
***'
'
19'
赵某'
21'
C01'
钱某'
22'
C02'
孙某'
C03'
李某'
24'
C04'
周某'
26'
C05'
吴某'
C06'
郑某'
20'
C07'
王某'
25'
5'
C08'
冯某'
29'
C09'
陈某'
--查看员工表、职务表、部门表数据
select*from员工表
select*from职务表
select*from部门表
--创建存储过程,用于输入考核表、工资表的数据
createprocedureinsert考核表@员工编号char(4),@本月出勤次int,@本月业绩int
as
insert考核表values(@员工编号,@本月出勤次,@本月业绩,@本月业绩-5*@本月出勤次)
createprocedureinsert工资表@员工编号char(4),@基本工资int,@基本奖金int
begin
declare@本月考核int
set@本月考核=(select本月考核from考核表where员工编号=@员工编号)
insert工资表values(@员工编号,@基本工资,@基本奖金,
@基本工资+@本月考核*@基本奖金/50,
(@基本工资+@本月考核*@基本奖金/50)*0.05,
(@基本工资+@本月考核*@基本奖金/50)*0.95)
end
--输入考核表、工资表数据
execinsert考核表A01,31,95
execinsert考核表B01,31,95
execinsert考核表B02,30,80
execinsert考核表B03,31,55
execinsert考核表C01,31,100
execinsert考核表C02,27,95
execinsert考核表C03,31,95
execinsert考核表C04,31,85
execinsert考核表C05,29,75
execinsert考核表C06,31,95
execinsert考核表C07,28,80
execinsert考核表C08,31,30
execinsert考核表C09,29,70
execinsert工资表A01,50000,5000
execinsert工资表B01,10000,5000
execinsert工资表B02,10000,5000
execinsert工资表B03,10000,5000
execinsert工资表C01,3000,1000
execinsert工资表C02,3000,1000
execinsert工资表C03,3000,1000
execinsert工资表C04,3000,1000
execinsert工资表C05,3000,1000
execinsert工资表C06,3000,1000
execinsert工资表C07,3000,1000
execinsert工资表C08,3000,1000
execinsert工资表C09,3000,1000
--查看考核表、工资表数据
select*from考核表
select*from工资表
--创建存储函数删除某一员工的信息
createprocedure删除员工@员工编号char(4)
delete考核表where员工编号=@员工编号
delete工资表where员工编号=@员工编号
delete员工表where员工编号=@员工编号
--创建触发器
createtriggertr_deleteon员工表fordelete
declare@numvarchar(50)
select@num=str(@@rowcount)+'
个学生被删除'
select@num
return
createtriggertr_inserton员工表forinsert
个学生被添加'
--检验触发器
exec删除员工A01
go--删除数据,检验触发器
go--恢复数据
--创建索引
createnonclusteredindex员工编号_idxon员工表(员工编号)
--创建存储过程进行简单查询和复杂查询
--查询员工业绩,按业绩降序排列
createprocedure查询员工业绩降序排列AS
select员工表.员工编号,员工表.员工姓名,考核表.本月业绩
from员工表innerjoin考核表on员工表.员工编号=考核表.员工编号
orderby考核表.本月业绩desc
exec查询员工业绩降序排列
--查询所有的研究生名单
createprocedure查询所有研究生名单按部门分组AS
select部门表.部门名称,员工表.员工姓名,员工表.学历
from员工表innerjoin部门表on员工表.部门编号=部门表.部门编号
where员工表.学历='
or员工表.学历='
exec查询所有研究生名单按部门分组
--建立视图进行查询
createview查询员工所有个人信息AS
select员工表.员工编号,员工表.员工姓名,部门表.部门名称,员工表.职务,员工表.性别,员工表.出生日期,员工表.年龄,员工表.入职日期,员工表.学历,员工表.电话,
from部门表innerjoin员工表on员工表.部门编号=部门表.部门编号
createprocedure查询员工所有个人信息_procAS
select*from查询员工所有个人信息
exec查询员工所有个人信息_proc