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

上传人:b****6 文档编号:7085646 上传时间:2023-01-17 格式:DOCX 页数:15 大小:55.97KB
下载 相关 举报
数据库人力资源管理系统.docx_第1页
第1页 / 共15页
数据库人力资源管理系统.docx_第2页
第2页 / 共15页
数据库人力资源管理系统.docx_第3页
第3页 / 共15页
数据库人力资源管理系统.docx_第4页
第4页 / 共15页
数据库人力资源管理系统.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

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

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

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

数据库人力资源管理系统

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

所完成的工作:

数据库整体结构设计

需求分析

ER图绘制

完成数据库的物理设计

SQL语句编写和上机检验

系统名称:

人力资源管理系统

、系统需求分析

1、该“人力资源管理系统”只是对数据库应用技术的一个样本数据库的实例,重在对数

据库一些方法的熟悉与掌握,其中包括从数据库的概念模型到ER图的绘制,再到数

据库模式的建立(即为数据神农百草膏第三代库及其基本表的建立),而后数据的录入,最后完成一些简单的关系运算表达式的表达和相关的Select查询语句的使用。

2、系统结构简述

本系统包括6个实体:

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

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

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

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

员工表、部门表、工资表

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

注:

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

3、实现的功能

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

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

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

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

本系统有5个表:

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

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

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

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

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

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

3)查询功能

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

并创建存储过程进行查询

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

注:

总经理与经理的属性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,

filename=人力资源管理系统DB_dat.mdf'

size=5120kb,

maxsize=kb,

filegrowth=1024kb

logon

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

filename=人力资源管理系统DB_log.ldf'size=1024kb,

maxsize=kb,

filegrowth=1024kb

use人力资源管理系统DB

--创建表

createtable

职务表

(职务名称

char

(6)not

null

primary

key

职务编号

char

(2)not

null,

基本工资

int,

基本奖金

int,

createtable

部门表

(部门编号

char

(2)not

null

primary

key

部门名称

char

(6)not

null,

经理编号

char

(4),

经理电话

char

(12)

createtable

员工表

(员工编号

char

(4)not

null

primary

key

员工姓名

char

(6)not

null,

部门编号

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员工表(员工编号)

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

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

case

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

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

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

end

go

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

create

rule职务_rule

AS@职务in('总经理

','经理'

'员工')

go

exec

sp_bindrule

职务

_rule

'员工表.职务'

go

create

rule学历

rule

AS

@学历in('博士'

'硕士',

'学士','大专')

go

exec

sp_bindrule

学历

_rule

'员工表.学历'

go

create

rule性别

_rule

AS

@性别in('男','

女')

go

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','

总经理','女',

I!

I!

1>>

'','硕士',

insert

员工表

values

('B01',

'','D1'

'经理','女','',

I!

I!

>>

'博士','')

insert

员工表

values

('B02',

'','D2'

'经理','女','',

'19',''

'硕士',''

insert','')insert

','')insert

','')insert

','')insert

','')insert

','')insert

','')insert

员工表

values

('B03',

'赵某',

'D3',

'经理','男',

'','21'

'','博士

员工表

values

('C01',

'钱某',

'D1',

'员工','女',

'','22'

'','学士

员工表

values

('C02',

'孙某',

'D1',

'员工','男',

'','21'

'','硕士

员工表

values

('C03',

'李某',

'D1',

'员工','男',

'','24'

'','学士

员工表

values

('C04',

'周某',

'D1',

'员工','男',

'','26'

'','大专

员工表

values

('C05',

'吴某',

'D2',

'员工','女',

'','19'

'','学士

员工表

values

('C06',

'郑某',

'D2',

'员工','男',

'','20'

'','硕士

员工表

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,@本月业绩intas

insert考核表values(@员工编号,@本月出勤次,@本月业绩,@本月业绩-5*@本月出勤次)gocreateprocedureinsert工资表@员工编号char(4),@基本工资int,@基本奖金intas

begin

declare@本月考核int

set@本月考核=(select本月考核from考核表where员工编号=@员工编号)insert工资表values(@员工编号,@基本工资,@基本奖金,

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

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

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

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

exec

insert

考核表

A01,

31,

95

exec

insert

考核表

B01,

31,

95

exec

insert

考核表

B02,

30,

80

exec

insert

考核表

B03,

31,

55

exec

insert

考核表

C01,

31,

100

exec

insert

考核表

C02,

27,

95

exec

insert

考核表

C03,

31,

95

exec

insert

考核表

C04,

31,

85

exec

insert

考核表

C05,

29,

75

exec

insert

考核表

C06,

31,

95

exec

insert

考核表

C07,

28,

80

exec

insert

考核表

C08,

31,

30

exec

insert

考核表

C09,

29,

70

exec

insert

工资表

A01,

50000

5000

exec

insert

工资表

B01,

10000

5000

exec

insert

工资表

B02,

10000

5000

exec

insert

工资表

B03,

10000

5000

exec

insert

工资表

C01,

3000,

1000

exec

insert

工资表

C02,

3000,

1000

exec

insert

工资表

C03,

3000,

1000

exec

insert

工资表

C04,

3000,

1000

exec

insert

工资表

C05,

3000,

1000

exec

insert

工资表

C06,

3000,

1000

exec

insert

工资表

C07,

3000,

1000

exec

insert

工资表

C08,

3000,

1000

exec

insert

工资表

C09,

3000,

1000

--查看考核表、工资表数据select*from考核表

select*from工资表

go

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

create

procedure

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

as

begin

delete

考核表

where

员工编号=@员工编号

delete

工资表

where

员工编号=@员工编号

delete

员工表

where

员工编号=@员工编号

end

go

--创建触发器

createtriggertr_insert

on员工表forinsert

 

as

declare@numvarchar(50)

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

return

go

--检验触发器

exec删除员工

A01

go

--删除数据,

检验触发器

insert员工表

values

('A01'

'','D','

总经理','女','','20',''

'硕士','')

go

--恢复数据

--创建索引

createnonclustered

index

员工编号_

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查询员工所有个人信息_procASselect*from查询员工所有个人信息

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

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

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1