数据库:人力资源信息管理数据库课设

本文详细描述了一个中小企业人力资源管理系统的数据库设计方案,包括需求分析、概念模型设计、逻辑结构设计、物理结构设计、数据库建立和维护。系统涵盖了企业、部门、岗位、员工和财务等实体,通过E-R图和关系模式展示了实体间的关系,并实现了视图、触发器和存储过程,同时强调了数据备份和安全性的重要性。

目录

1 课题描述

2 需求分析

3 概念模型设计

3.1 分析关系模式

3.2 E-R图

3.3 系统表关系

4 逻辑结构设计

5 物理结构设计

5.1 表结构

5.2 视图

5.3 创建触发器

5.4 创建存储过程

5.5 建立索引

6 数据库建立

7 数据库维护

7.1 数据备份

7.2 数据库安全性


1 课题描述

设计内容:

针对中小企业的发展和公司员工的不断增多,人力资源管理的成本也在日益增加的问题。通过对中小企业人力资源管理系统的管理方式进行调查研究,设计人力资源管理系统的数据库和实现数据操作。

1.系统主要功能

(1) 企业员工管理功能。企业员工实现注册、登录、岗位信息查看以及个人中心等功能。

(2) 系统管理员功能。管理员实现用户管理、企业信息维护、系统管理、企业管理及公司财务管理等功能。

(3) 各类信息的统计打印功能,并将统计的结果导出成Excel 文档:

(4) 系统用户的权限设置功能。系统可分为管理员、企业员工两种角色。

2.具体要求:

(1) 根据选题,搜集资料,进行系统调查。

(2) 利用面向对象分析方法进行系统的功能需求,性能需求,完成系统分析。

(3) 设计数据库概念结构:绘制所选课题的E-R图;

(4) 设计数据库逻辑结构:将E-R图转换数据库的逻辑结构,并进行优化;

(5) 设计数据库物理结构:选定实施环境,确定系统数据库的存储结构和存取方法等;

(6) 数据实施和维护:选用SQL SERVER建立数据库结构,加载数据,实现各种数据查询,设计库中视图、存储过程等对象,并能对数据库做简单的维护操作,完成建立数据库的备份作业:

(7) 根据题目的需求,写出完成各个功能操作

2 需求分析

人力资源管理系统涉及企业、部门、岗位、员工、财务着五个实体集。企业从企业编号、企业名称、地址、联系方式、管理员编号几个方面刻画。部门从部门编号、部门名称、负责人编号三个方面刻画。岗位从岗位编号、岗位名称两方面刻画。员工从员工编号、名字、性别、电话、住址、入职时间、岗位、部门几个方面刻画。财务从员工、工资、发放日期三方面刻画。应用语义为一个公司一个企业可以有多个部门,每个部门可以有多个岗位,但一个岗位只能属于一个部门,每个岗位可以有多名员工,但一名员工只能属于一个岗位,每名员工有单独的工资。

        该系统有如下功能:

  1. 企业信息录入
  2. 部门信息录入
  3. 岗位信息录入
  4. 员工信息录入
  5. 财务信息录入
  6. 企业信息修改
  7. 部门信息修改
  8. 岗位信息修改
  9. 员工信息修改
  10. 财务信息修改
  11. 员工信息删除
  12. 员工信息添加
  13. 员工信息查询       

               

3 概念模型设计

3.1 分析关系模式

首先根据需求分析和设计内容,分析出对应的关系模式,再根据关系模式构建E-R图,

进行概念结构设计。

企业与部门:一个企业有多个部门,部门属于一个企业。

部门与岗位:一个部门有多个岗位,一个岗位只属于一个部门。

岗位与员工:一个岗位可以有多名员工,一个员工只属于一个岗位。

员工与财务:一个员工对应一个财务信息。

3.2 E-R图

图3.1 员工实体属性图

 

图3.2 岗位实体属性图

 

图3.3 部门实体属性图

 

图3.4 财务实体属性图

 

图3.5 企业实体属性图

 

图3.6 整体E-R图

 

3.3 系统表关系

图 3.7 数据库关系图

 

4 逻辑结构设计

将E-R图转化为关系模式:

企业(企业编号、企业名称、地址、联系方式、管理员编号)

主码:企业编号

外码:管理员编号(员工编号)

部门(部门编号、部门名称、负责人编号)

主码:部门编号

外码:负责人编号(员工编号)

岗位(岗位编号、岗位名称)

主码:岗位编号

外码:无外码

员工(员工编号、名字、性别、电话、住址、入职时间、岗位编号、部门编号)

主码:员工编号

外码:岗位编号、部门编号

财务(员工编号、工资、发放日期)

主码:员工编号

外码:员工编号

5 物理结构设计

5.1 表结构

SELECT

CASE

WHEN

col.colorder = 1 THEN

obj.name ELSE ''

END AS 表名,

col.colorder AS 序号 ,

col.name AS 列名 ,

ISNULL( ep.[value], '' ) AS 列说明 ,

t.name AS 数据类型 ,

col.length AS 长度 ,

ISNULL( COLUMNPROPERTY( col.id, col.name, 'Scale' ), 0 ) AS 小数位数 ,

CASE

WHEN COLUMNPROPERTY( col.id, col.name, 'IsIdentity' ) = 1 THEN

'√' ELSE ''

END AS 标识 ,

CASE

WHEN EXISTS (

SELECT

1

FROM

dbo.sysindexes si

INNER JOIN dbo.sysindexkeys sik ON si.id = sik.id

AND si.indid = sik.indid

INNER JOIN dbo.syscolumns sc ON sc.id = sik.id

AND sc.colid = sik.colid

INNER JOIN dbo.sysobjects so ON so.name = si.name

AND so.xtype = 'PK'

WHERE

sc.id = col.id

AND sc.colid = col.colid

) THEN

'√' ELSE ''

END AS 主键 ,

CASE

WHEN col.isnullable = 1 THEN

'√' ELSE ''

END AS 允许空 ,

ISNULL( comm.text, '' ) AS 默认值

FROM

dbo.syscolumns col

LEFT JOIN dbo.systypes t ON col.xtype = t.xusertype

INNER JOIN dbo.sysobjects obj ON col.id = obj.id

AND obj.xtype = 'U'

AND obj.status >= 0

LEFT JOIN dbo.syscomments comm ON col.cdefault = comm.id

LEFT JOIN sys.extended_properties ep ON col.id = ep.major_id

AND col.colid = ep.minor_id

AND ep.name = 'MS_Description'

LEFT JOIN sys.extended_properties epTwo ON obj.id = epTwo.major_id

AND epTwo.minor_id = 0

AND epTwo.name = 'MS_Description'

WHERE obj.name IN ( '企业') -- 表名 ,'部门','部岗位','员工','财务'

图5. 1 企业表

 

图5. 2 部门表

 

图5. 3 岗位表

 

图5. 4 员工表

 

图5. 5 财务表

 

5.2 视图

 --员工工资视图

create view vie_员工工资

as

select 员工.员工编号,名字,工资

from 员工,财务

where 员工.员工编号 = 财务.员工编号

5.6 员工工资视图

  --员工详细信息

create view vie_员工信息

as

select 员工编号,名字,性别,电话,住址,入职时间,部门名称,岗位名称

from 员工,部门,岗位

where 员工.部门编号 = 部门.部门编号 and 员工.岗位编号 = 岗位.岗位编号 and  岗位.部门编号 = 部门.部门编号

5.7 员工信息视图

5.3 创建触发器

create trigger trg_员工

ON 员工

INSTEAD OF DELETE

AS

BEGIN

  DELETE FROM 财务

  WHERE 员工编号 IN (SELECT 员工编号 FROM deleted);

  DELETE FROM 员工   

  WHERE 员工编号 IN (SELECT 员工编号 FROM deleted);END;

5.4 创建存储过程

  --创建存储过程,插入新员工数据

create procedure pro_员工

@员工编号    int ,

@名字    char(20),

@性别     char(4),

@电话    char(20),

@住址    char(20),

@入职时间  date,

@部门编号 int,

@岗位编号 int

AS

BEGIN

  INSERT INTO 员工 (员工编号,名字,性别,电话,住址,入职时间,部门编号,岗位编号)

            VALUES (@员工编号,@名字,@性别,@电话,@住址,@入职时间,@部门编号,@岗位编号)

END;

--创建存储过程,更新员工数据

create procedure pro_员工1

@员工编号    int ,

@名字    char(20),

@性别     char(4),

@电话    char(20),

@住址    char(20),

@入职时间  date,

@部门编号 int,

@岗位编号 int

AS

BEGIN

  update 员工

  set 名字 = @名字,性别 = @性别,电话 = @电话,住址 = @住址,入职时间  = @入职时间 ,部门编号 = @部门编号,岗位编号 = @岗位编号

  where 员工编号 = @员工编号

END;

5.5 建立索引

--在员工表的部门编号字段上建立非聚集索引,以支持对直接上级的查询:

CREATE NONCLUSTERED INDEX idx_员工_部门编号 ON 员工 (部门编号);

--在财务表的员工编号字段上建立非聚集索引,以支持对员工工资的查询:

CREATE NONCLUSTERED INDEX idx_财务_员工编号 ON 财务 (员工编号);

--在员工表的岗位编号字段上建立非聚集索引,以支持对直接上级的查询:

CREATE NONCLUSTERED INDEX idx_员工_岗位编号 ON 员工 (岗位编号);

6 数据库建立

Sql代码:

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

  create database 人力资源管理系统;

--创建企业表

create table 企业 (

   企业编号                 int                  not null,

   企业名称                 char(30)             null,

   地址                   char(30)             null,

   联系方式                 char(20)             null,

   管理员编号                int                  null,

   constraint PK_企业 primary key (企业编号)

)

go

--创建员工表

create table 员工 (

   员工编号                 int                  not null,

   名字                   char(20)             null,

   性别                   char(4)              null,

   电话                   char(20)             null,

   住址                   char(20)             null,

   入职时间                 date                 null,

   部门编号                 int                  null,

   岗位编号                 int                  null,

   constraint PK_员工 primary key (员工编号)

)

go

--创建岗位表

create table 岗位 (

   岗位编号                 int                  not null,

   部门编号                 int                  null,

   岗位名称                 char(20)            null,

   constraint PK_岗位 primary key (岗位编号)

)

go

--创建财务表

create table 财务 (

   员工编号                 int                  not null,

   工资                   money                null,

   发放日期                 date                 null,

   constraint PK_财务 primary key (员工编号)

)

go

--创建部门表

create table 部门 (

   部门编号                 int                  not null,

   部门名称                 char(20)             null,

   负责人编号                int                  not null,

   constraint PK_部门 primary key (部门编号)

)

go

--添加外键

  alter table 企业

     add constraint FK_企业_REFERENCE_员工 foreign key (管理员编号)

        references 员工 (员工编号)

  go

  

  alter table 员工

     add constraint FK_员工_REFERENCE_部门 foreign key (部门编号)

        references 部门 (部门编号)

  go

  

  alter table 员工

     add constraint FK_员工_REFERENCE_岗位 foreign key (岗位编号)

        references 岗位 (岗位编号)

  go

  

  alter table 岗位

     add constraint FK_岗位_REFERENCE_部门 foreign key (部门编号)

        references 部门 (部门编号)

  go

  

  alter table 财务

     add constraint FK_财务_REFERENCE_员工 foreign key (员工编号)

        references 员工 (员工编号)

  go

--插入数据

insert into 企业 values(10001,'中国人力企业公司','陕西省—汉中市—汉台区','029—83392849',20001);

insert into 员工 values(20001,'sa','男','13324539392','天地一号',  '2023-01-01',01,10),

                       (20002,'张一','男','13324539381','天地二号','2023-02-01',02,11),

   (20003,'张二','女','13324539382','天地三号','2023-02-01',02,12),

   (20004,'张三','男','13324539383','天地四号','2023-02-01',03,13),

   (20005,'张四','女','13324539384','天地五号','2023-02-01',03,14),

   (20006,'张五','男','13324539385','天地六号','2023-02-01',02,11);

insert into 部门 values(01,'财务部',20001),

                       (02,'技术部',20002),

   (03,'策划部',20004);

insert into 岗位 values(10,01,'会计'),

                       (11,02,'算法工程师'),

   (12,02,'程序员'),

   (13,03,'策划总监'),

   (14,03,'设计师');

insert into 财务 values(20001,10000,'2023-01-01'),

                        (20002,8000,'2023-02-01'),

    (20003,7500,'2023-02-01'),

    (20004,8000,'2023-02-01'),

    (20005,7000,'2023-02-01'),

    (20006,7500,'2023-02-01');

--查询员工编号为2001的财务信息

select * from 员工,财务 where 员工.员工编号 = 财务.员工编号 and 财务.员工编号 = 20001

6.1 20001的财务信息

--查找财务部的部门负责人的详细信息

select * 

from 员工

where 员工编号 =(select 负责人编号 from 部门 where 部门名称 = '财务部')

--查找企业信息

select * from 企业

图6.2 财务部负责人信息

图6.3 企业信息

7 数据库维护

7.1 数据备份

--执行完整数据库备份:

BACKUP DATABASE 人力资源管理系统

TO DISK = 'C:\backup\完整数据库备份.bak'

WITH FORMAT, NAME = '完整备份';

--执行差异备份(在完整备份之后):

BACKUP DATABASE 人力资源管理系统

TO DISK = 'C:\Backup\差异备份.bak'

WITH DIFFERENTIAL, NAME = '差异备份';

--执行日志备份(在完整备份之后):

BACKUP LOG 人力资源管理系统

TO DISK = 'C:\Backup\日志备份.bak'

WITH NORECOVERY, NAME = '日志备份';

7.2 数据库安全性

  1. 创建用户

--创建sa用户

SP_addlogin 'sa','123456';

SP_adduser 'sa';

grant select on 学生 to LaiPing with grant option;

--创建张一用户

SP_addlogin '张一','123456';

SP_adduser '张一';

grant delete on 选修课 to LiLi with grant option;

grant select on 选修课 to LiLi with grant option;

--创建张二用户

SP_addlogin '张二','123456';

SP_adduser '张二';

grant insert on 选修课 to LiPign ;

grant select on 选修课 to LiPign ;

  1. 授权

grant select,insert,update on 表名字 to 用户 ;

1. 登录窗体 由用户名和密码两个输入框和确定、取消两个按纽。主要是对系统管理进行身份验证。一但正确就进入,否则错误,无法进入。注:(用户名:1 密码:1) 2. 主界面 主界面是整个系统的核心,主要是显示出这个管理软件的各个功能按纽,只要用户点击其中的一个按纽,就能够弹出相应的窗口进入操作。主要有十三个功能按纽,分别是:员工信息编辑,调动信息编辑,奖惩信息编辑,员工信息查询,考勤信息编辑,考勤信息查询,评价信息编辑,评价信息查询,工资编辑,工资查询,系统定,打印员工档案,打印员工工资,以上的控件的代码,用ACCESS中的VBA自动生成。 以下是主界面中各功能的具体说明 1. 员工信息编辑 员工信息窗体可以添加、修改或删除员工的档案,含有员工简历。 2. 调动信息编辑 调动信息编辑窗体主是是来管理企业内部员工的人事调动。当员工需要调整工作岗位时需要用到这个功能。 3. 奖惩信息编辑 主要是记录员工的受奖和处罚等记录以备随时查阅。 4. 员工信息查询 在这个功能里,可以通过按员工编号,姓名,部门三种方式查询员工信息。 5. 考勤信息编辑 人事管理的相关软件都有这个功能,也是最重要的,能够准确无误的编辑考勤信息,记录的正确性,直接影响到工资的多少。 6. 考勤信息查询 在这个功能里,可以通过按员工编号查询和按员工姓名查询具体的考勤信息。 7. 评价信息编辑 这个窗体内记录着对这名员工的评定、评语、考核记录等等。 8. 评价信息查询 根据员工编号或员工姓名,查询评价信息 9. 工资编辑 首先要有员工的员工信息表,有了这些信息才能自动生成工资表。 10. 工资查询 按员工姓名或员工编号或日期查询。当操作员从下拉列表中选择相关信息后,会自动调用工资信息显示窗体 11. 系统定系统管理员的账号和密码。 12. 打印员工档案 实现打印员工的信息。一但操作员点击员工档案,将出现这个员工信息表的打印预览界面,只要在ACCESS工具栏上单击“打印”按纽既可。 13. 打印员工工资 实现打印员工的工资条功能,打印方法同上。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值