数据库人力资源管理系统.docx

上传人:b****1 文档编号:14771917 上传时间:2023-06-27 格式:DOCX 页数:16 大小:41.74KB
下载 相关 举报
数据库人力资源管理系统.docx_第1页
第1页 / 共16页
数据库人力资源管理系统.docx_第2页
第2页 / 共16页
数据库人力资源管理系统.docx_第3页
第3页 / 共16页
数据库人力资源管理系统.docx_第4页
第4页 / 共16页
数据库人力资源管理系统.docx_第5页
第5页 / 共16页
数据库人力资源管理系统.docx_第6页
第6页 / 共16页
数据库人力资源管理系统.docx_第7页
第7页 / 共16页
数据库人力资源管理系统.docx_第8页
第8页 / 共16页
数据库人力资源管理系统.docx_第9页
第9页 / 共16页
数据库人力资源管理系统.docx_第10页
第10页 / 共16页
数据库人力资源管理系统.docx_第11页
第11页 / 共16页
数据库人力资源管理系统.docx_第12页
第12页 / 共16页
数据库人力资源管理系统.docx_第13页
第13页 / 共16页
数据库人力资源管理系统.docx_第14页
第14页 / 共16页
数据库人力资源管理系统.docx_第15页
第15页 / 共16页
数据库人力资源管理系统.docx_第16页
第16页 / 共16页
亲,该文档总共16页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

数据库人力资源管理系统.docx

《数据库人力资源管理系统.docx》由会员分享,可在线阅读,更多相关《数据库人力资源管理系统.docx(16页珍藏版)》请在冰点文库上搜索。

数据库人力资源管理系统.docx

数据库人力资源管理系统

人力资源管理系统数据库设计与实现

所完成的工作:

数据库整体结构设计

需求分析

ER图绘制

完成数据库的物理设计

SQL语句编写和上机检验

系统名称:

人力资源管理系统

一、系统需求分析

1、该“人力资源管理系统”只是对数据库应用技术的一个样本数据库的实例,重在对数据库一些方法的熟悉与掌握,其中包括从数据库的概念模型到ER图的绘制,再到数据库模式的建立(即为数据神农百草膏第三代库及其基本表的建立),而后数据的录入,最后完成一些简单的关系运算表达式的表达和相关的Select查询语句的使用。

2、系统结构简述

本系统包括6个实体:

总经理、经理、员工、部门、指标、工资

实体之间的关系转换为5个表:

职务表、部门表、员工表、考核表、工资表

其中,实体部分有3个表:

员工表、部门表、工资表

员工与指标间多对多关系转换为考核表

注:

各个基本表中关键字已在关系模式中说明

3、实现的功能

1)通过表的创建过程进行数据的关联和约束

创建多个约束、规则、默认值对数据进行安全性管理(详见物理设计)

创建检查约束(用到case…when语句分情况),检验员工编号的合理性,即通过编号可以体现他的部门(A为总经理,B为经理,C为员工)

2)插入、修改、删除功能

本系统有5个表:

员工表、部门表、职务表、考核表、工资表。

其中员工表、部门表、职务表是基本表,数据直接、完全输入。

考核表、工资表与员工表有外键联系,且有计算列,需要创建存储过程来插入数据。

◎建立2个存储过程,进行考核表、工资表的插入

◎建立一个存储过程,考虑外键联系,删除某员工的全部信息

◎建立触发器,当添加、删除数据时会显示

3)查询功能

◎使用select语句实现简单查询和复杂查询

并创建存储过程进行查询

◎创建视图,通过视图来查询

 

二、ER图

 

 

注:

总经理与经理的属性ER图与员工相同

员工的职务属性通过员工编号体现,规则见“职务表”

三、关系模式

系统中的实体有:

总经理、经理、员工、部门、指标、工资

为简化关系模式,将总经理、经理、员工的信息集中到一个表。

关系模式如下:

职务表(职务名称、职务编号、基本工资、基本奖金)

部门表(部门编号、部门名称、经理编号、办公电话)

员工表(员工编号、员工姓名、部白兔牌暗疮膏门编号、职务、出生日期、年龄、入职日期、性别、学历、电话)

考核表(员工编号、本月出勤次、本月业绩、本月考核)

工资表(员工编号、基本工资、基本奖金、计算工资、所得税、本月实发工资)

四、物理设计

职务表结构

属性名

数据类型

说明

职务名称

char(6)

主键

职务编号

char

(2)

notnull

基本工资

int

基本奖金

int

说明:

职务表为基本表,直接输入数据。

其中,职务编号A、B、C分别为总经理、经理、员工的员工编号的首字母(如,经理B01,员工C03)

部门表结构

属性名

数据类型

说明

部门编号

char

(2)

主键

部门名称

char(6)

notnull

经理编号

char(4)

经理电话

char(12)

说明:

部门表为基本表,直接输入数据。

员工表结构

属性名

数据类型

说明

员工编号

char(4)

主键;检查约束

员工姓名

char(6)

notnull

部门编号

char

(2)

外键

职务

char(6)

职务规则

性别

char

(2)

notnull;性别规则

出生日期

datetime

notnull

年龄

int

入职日期

datetime

notnull

学历

char(4)

学历规则;默认约束

电话

char(12)

说明:

1、员工表与部门表有外键联系,部门编号是部门表的主键;直接输入数据

2、员工编号是主键,并有检查约束,确认输入的员工编号合理。

具体是员工编号的首字母与职务对应的编号一致,如,总经理编号为AXX,经理BXX,员工CXX

3、职务与规则“职务_rule”绑定,取值范围(“总经理”“'经理”“员工”)

4、公式:

年龄=year(getdate())-year(出生日期)

5、性别与规则“性别_rule”绑定,取值范围(“男”“'女”)

6、学历与规则“学历_rule”绑定,取值范围(“博士”“'硕士”“学士”),默认值学士

考核表结构

属性名

数据类型

说明

员工编号

char(4)

主键;外键

本月出勤次

int

notnull;默认值

本月业绩

int

notnull

本月考核

int

主键

说明:

1、考核表与员工表有外键联系;用表约束定义联合主键

2、本月考核为计算列,公式本月考核=本月业绩*本月出勤次。

创建存储过程“insert考核表”实现输入数据,

3、本月出勤次与默认“default本月出勤次”绑定,默认值为30

工资表结构

属性名

数据类型

说明

员工编号

char(4)

主键;外键

基本工资

int

notnull

基本奖金

int

notnull

计算工资

int

所得税

int

本月实发工资

int

主键

说明:

1、考核表与员工表有外键联系;用表约束定义联合主键

2、后三列为计算列,公式:

计算工资=基本工资+本月考核*基本奖金/50

所得税=计算工资*0.05

本月实发工资=计算工资-所得税

其中,本月考核是考核表中该员工对应的考核

创建存储过程“insert工资表”实现输入数据

五、系统实现

--创建数据库"人力资源管理系统DB"

createdatabase人力资源管理系统DB

on

(name=人力资源管理系统DB_dat,

='e:

\人力资源管理系统DB_dat.mdf',

size=5120kb,

maxsize=kb,

=1024kb

logon

(name='人力资源管理系统DB_log',

='e:

\人力资源管理系统DB_log.ldf',

size=1024kb,

maxsize=kb,

=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工资表

(员工编号char(4)notnull,

基本工资intnotnull,

基本奖金intnotnull,

计算工资int,

所得税int,

本月实发工资int,

constraintpk_工资表_keyprimarykey(员工编号,本月实发工资),

constraintfk_员工表_工资表_key

foreignkey(员工编号)references员工表(员工编号)

--为员工表建立检查约束,保证输入的员工编号合理

altertable员工表withnocheck

addconstraintck_员工编号check

(substring(员工编号,1,1)=

case

when职务='总经理'then'A'

when职务='经理'then'B'

when职务='员工'then'C'

end

go

--建立职务规则、学历规则、性别规则,并与员工表绑定

createrule职务_ruleAS@职务in('总经理','经理','员工')

go

execsp_bindrule职务_rule,'员工表.职务'

go

createrule学历_ruleAS@学历in('博士','硕士','学士','大专')

go

execsp_bindrule学历_rule,'员工表.学历'

go

createrule性别_ruleAS@性别in('男','女')

go

execsp_bindrule性别_rule,'员工表.性别'

go

--建立学历默认值约束,与员工表对应列绑定

createdefault学历_defaAS'学士'

go

execsp_bindefault学历_defa,'员工表.学历'

go

--建立本月缺勤次默认值约束,与考核表对影列绑定

createdefault本月出勤次_defaAS'31'

go

execsp_bindefault本月出勤次_defa,'考核表.本月出勤次'

go

--输入员工表、职务表、部门表数据

insert职务表values('总经理','A','50000','5000')

insert职务表values('经理','B','10000','5000')

insert职务表values('员工','C','3000','1000')

insert部门表values('D1','销售部','B01','')

insert部门表values('D2','采购部','B02','')

insert部门表values('D3','人事部','B03','')

insert部门表values('D','总经理','A01','')

insert员工表values('A01','***','D','总经理','女','','','','硕士','')

insert员工表values('B01','','D1','经理','女','','','','博士','')

insert员工表values('B02','','D2','经理','女','','19','','硕士','')

insert员工表values('B03','赵某','D3','经理','男','','21','','博士','')

insert员工表values('C01','钱某','D1','员工','女','','22','','学士','')

insert员工表values('C02','孙某','D1','员工','男','','21','','硕士','')

insert员工表values('C03','李某','D1','员工','男','','24','','学士','')

insert员工表values('C04','周某','D1','员工','男','','26','','大专','')

insert员工表values('C05','吴某','D2','员工','女','','19','','学士','')

insert员工表values('C06','郑某','D2','员工','男','','20','','硕士','')

insert员工表values('C07','王某','D2','员工','男','','25','','博士','5')

insert员工表values('C08','冯某','D3','员工','女','','29','','博士','')

insert员工表values('C09','陈某','D3','员工','女','','20','','硕士','')

--查看员工表、职务表、部门表数据

select*from员工表

select*from职务表

select*from部门表

go

--创建存储过程,用于输入考核表、工资表的数据

createprocedureinsert考核表@员工编号char(4),@本月出勤次int,@本月业绩int

as

insert考核表values(@员工编号,@本月出勤次,@本月业绩,@本月业绩-5*@本月出勤次)

go

createprocedureinsert工资表@员工编号char(4),@基本工资int,@基本奖金int

as

begin

declare@本月考核int

set@本月考核=(select本月考核from考核表where员工编号=@员工编号)

insert工资表values(@员工编号,@基本工资,@基本奖金,

@基本工资+@本月考核*@基本奖金/50,

(@基本工资+@本月考核*@基本奖金/50)*0.05,

(@基本工资+@本月考核*@基本奖金/50)*0.95)

end

go

 

--输入考核表、工资表数据

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工资表

go

--创建存储函数删除某一员工的信息

createprocedure删除员工@员工编号char(4)

as

begin

delete考核表where员工编号=@员工编号

delete工资表where员工编号=@员工编号

delete员工表where员工编号=@员工编号

end

go

--创建触发器

createtriggertr_deleteon员工表fordelete

as

declare@numvarchar(50)

select@num=str(@@rowcount)+'个学生被删除'

select@num

return

go

createtriggertr_inserton员工表forinsert

as

declare@numvarchar(50)

select@num=str(@@rowcount)+'个学生被添加'

select@num

return

go

--检验触发器

exec删除员工A01

go--删除数据,检验触发器

insert员工表values('A01','','D','总经理','女','','20','','硕士','')

go--恢复数据

--创建索引

createnonclusteredindex员工编号_idxon员工表(员工编号)

--创建存储过程进行简单查询和复杂查询

--查询员工业绩,按业绩降序排列

createprocedure查询员工业绩降序排列AS

select员工表.员工编号,员工表.员工姓名,考核表.本月业绩

from员工表innerjoin考核表on员工表.员工编号=考核表.员工编号

orderby考核表.本月业绩desc

exec查询员工业绩降序排列

go

--查询所有的研究生名单

createprocedure查询所有研究生名单按部门分组AS

select部门表.部门名称,员工表.员工姓名,员工表.学历

from员工表innerjoin部门表on员工表.部门编号=部门表.部门编号

where员工表.学历='博士'or员工表.学历='硕士'

exec查询所有研究生名单按部门分组

go

--建立视图进行查询

createview查询员工所有个人信息AS

select员工表.员工编号,员工表.员工姓名,部门表.部门名称,员工表.职务,员工表.性别,员工表.出生日期,员工表.年龄,员工表.入职日期,员工表.学历,员工表.电话,

from部门表innerjoin员工表on员工表.部门编号=部门表.部门编号

createprocedure查询员工所有个人信息_procAS

select*from查询员工所有个人信息

exec查询员工所有个人信息_proc

go

 

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2