数据库设计说明书

数据库设计说明书

项目名称:

班级: 08网2

姓名: 姑苏行

学号:16 设计日期: 20xx年6月17日

审阅日期: 20xx年6月23日

摘要

商厦人事劳资管理系统是典型的信息管理系统(MIS),开发主要包括后台数据 1

库的建立和维护。对于前者要求建立起数据一致性和完整性强.数据安全性好的库。

经过分析如此情况,我们使用Microsoft公司的SQL server2008数据库开发工具, Microsoft公司的SQL server2008是基于客户端/服务器模式的新一代大型关系数据库管理系统。它在电子商务、数据仓库和数据库解决方案等应用中,起着重要的作用,可谓企业的数据库管路提供强大的支持,对数据提供有效的管理,并采用有效的措施实施数据完整性和数据的安全性,直到形成用户满意的可行系统。

关键字:原型法,数据一致性,信息管理系统。

2

第一章 绪论

1.1概述

1.1.1开发背景

人事劳资管理系统是一个企业单位不可缺少的部分,它的内容对于企业的决策者和管理者来说都至关重要,所以人事劳资管理系统应该能够为用户提供充足的信息和快捷的查询手段。但一直以来人们使用传统人工的方式管理文件档案,这种管理方式存在着许多缺点,如:效率低、保密性差,另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。

随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。

1.1.2 商厦人事劳资管理系统特点

作为计算机应用的一部分,使用计算机对人事劳资信息进行管理,具有着手工管理所无法比拟的优点.例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高人事劳资管理的效率,也是企业的科学化、正规化管理,与世界接轨的重要条件。

因此,开发这样一套管理软件成为很有必要的事情,在下面的各章中我们将以开发一套商厦人事劳资管理系统为例,谈谈其开发过程和所涉及到的问题及解决方法。

1.2 商厦人事劳资管理系统发展

1.2.1 商厦人事劳资管理系统存在的问题

(1) 数据量大;

(2) 不易查找;

(3) 录入删除数据时,易出错;

(4) 数据易丢失。

1.2.2 商厦人事劳资管理系统的开发价值

人事劳资管理系统是目前国际上普遍采用的人事管理系统。通过计算机的检索速度快、查找方便、可靠性高、保密性好、寿命长、成本低、存储量大等诸多优点来改善传统人工的方式管理文件档案的方式,极大地提高人事劳资管理的效率。

3

第二章 开发商厦人事劳资管理系统的问题

2.1商厦人事劳资管理系统的简介

商厦人事劳资管理系统是针对商厦人事处的大量业务处理工作而开发的管理软件。根据用户的要求,实现人员基本情况管理、工资管理、和考勤管理。等几个方面的功能。

用户通过输入工资、考勤、职工履历等基本信息,由系统自行生成相应的统计数据及各类统计报表以供用户查询、打印,另外用户还可以对这些基本信息进行定期的更新和删除, 商厦人事劳资管理系统力求给用户方便快捷的途径去管理这些繁琐的数据。

2.2商厦人事管理系统的用户需求

2.2.1 总体功能需求

商厦人事劳资管理系统是针对商厦人事处的大量业务处理工作用计算机进行全面现代化管理.主要包括人员基本情况管理、工资管理、和考勤管理。等几个方面的功能,以实现用户方便的输入、查询、统计、打印相关报表的业务需求。

2.2.2 具体系统功能需求描述

(1) 人员基本情况管理

提供对“商厦人员履历表”数据输入、组合条件查询、统计功能,实现“职工花名册”数据生成、查询、统计功能。

(2) 职工工资管理

提供对“商场职工工资表”数据的输入、查询、按商场统计功能,完成每月对“商场职工工资表”数据的月统计,以此生成“商场职工工资总额构成情况表”实现该表的查询、打印功能。实现每季由“商场职工工资总额构成情况表”生成“商厦职工工资总额季度汇总表”及该表的查询、打印功能。

(3) 职工考勤管理

提供对各单位(商场)“月考勤登记表”数据的录入、查询、统计功能; 根据“月考勤登记表”数据分单位按各种日考勤标志进行分类统计,且生成“商场职工月考勤统计表”,数据及“商厦职工月考勤统计汇总表”数据,实现该表的查询功能。

4

第三章商厦人事劳资管理系统的分析和设计

3.1 商厦人事劳资管理系统的分析和概要设计

3.1.1 商厦人事劳资管理系统结构

根据实际情况,我们使用原型法,即以少量代价快速地构造一个可执行的软件系统模型。使用户和开发人员可以较快地确定需求,然后采用循环进化的开发方式,对系统模型作连续的精化,将系统需具备的性质逐渐增加上去,直到所有的性质全部满足。此时模块也发展成为最终产品了。

通过对用户需求的分析,我们可以分析出该商厦人事劳资管理系统大致可以分为四个模块:人员基本情况管理模块、职工工资管理模块、职工考勤管理模块、系统维护模块。

四者的关系如图3-1

数据库设计说明书

图3-1 人事劳资管理系统关系图

3.1.2 模块概述

现在对这四个模块做具体说明:

人事基本情况管理模块:

输入:职工信息

输出:“商厦人员履历表”“职工花名册”

功能:对商厦人事基本信息的查询和统计

·职工工资管理模块

输入:人员月工资

输出:“商场职工工资表的月统计”,“商场职工工资总额构成表”及以“商 厦职工工资总额季度汇总表”

功能:完成商厦员工工资的查询和统计

·职工考勤管理模块

输入;员工每日考勤情况

5

输出:“月考勤登计表”、“商场职工月考勤统计表”、“商厦职工月考勤统计 表”

功能:完成对员工考勤情况的查询、根据日考勤标志进行分类统计及表的

打印。

·系统维护模块

输入:

输出:

功能:完成对系统数据和数据库的维护,如用户名、密码的更新,数据库

数据的备份、恢复以及定期删除,还有单位的编码化。

3.2 商厦人事劳资管理系统数据库基本设计

3.2.1 数据库基本设计

由于考虑到本系统是应用在单机系统上,另外根据商厦人员规模,我们只建

立起一个数据库,在此数据库基础上建立起如下表:

·职工基本信息表

·职工工资表

·职工考勤表

·单位编码表

·系统信息表

另外,根据实际统计需要,我们另外建立两个统计表,用以存放部分统计表的信 息以便查询。

·职工工资统计表

·职工考勤统计表

6

3.3商厦人事劳资管理系统的数据库结构设计

3.3.1 数据库E-R图设计

商厦人事劳资管理系统的数据库E-R图:如图3-1所示

数据库设计说明书

图3-1 商厦人事劳资管理系统的数据库E-R图

注:由于字段太多,这里就不在E-R图中一一列出了。

7

3.3.2 数据库各表之间的关系

数据库个表之间人数关系如图3-2所示

数据库设计说明书

注:由于字段过多,就不一一列出了。

图3-2 数据表关系图

3.3.2 数据库详细设计

下面我们详细说明:

·职工基本信息表:如表3-1所示

主键 :职工编号 外键: 单位编号

8

数据库设计说明书

数据库设计说明书

·职工工资表:如表 3-2所示

主键:日期 外键: 职工编号

9

数据库设计说明书

·职工考勤表:如表3-3所示

数据库设计说明书

主键:日期 外键: 职工编号

·单位编码表: 如表3-4所示

数据库设计说明书

主键:单位编码

·系统信息表:如表3-5所示

主键:用户ID

10

数据库设计说明书

·职工工资统计表 :如表3-6所示

外键:单位编号

数据库设计说明书

·职工考勤统计表:如表3-7所示 外键:单位编号

数据库设计说明书

以上几张表均属于基本表,根据用户需求我们又设计几张视图 ·职工花名册表

数据源:职工基本信息表

·商场职工工资总额构成表,商厦职工工资总额季度汇总表

11

数据库设计说明书

数据源: 职工工资表,

职工工资统计表

·商场月考勤统计表,商厦职工月考勤统计汇总表

数据源:职工考勤表

职工考勤统计表

另外,要声明的是,在本数据库的几张表中没有定义外键,其原因主要是几张表的主键的特点。所以为了保持数据一致性就通过程序完成。

3.4数据库代码实现

3.4.1 建立数据库

注:在“我的电脑”E盘下建立文件夹DATA。

create database employee

on primary

(name=' employee _data',

filename='e:\data\ employee _data.mdf',

size=1,

filegrowth=10%)

log on

(name=' employee _log',

filename='e:\data\ employee _log.ldf',

size=1,

filegrowth=10%)

go

3.4.2 建立数据表

注:由于字段过多,就不一一列出了。

(1) 建立员工基本信息表

use employee

create table 员工基本信息表

(职工编号 char(12) not null,

单位编号char(15) not null,

档案号char(18) not null,

职工姓名 char(10) not null,

性别 bit not null,

?

爱人姓名 char(10),

12

爱人单位 char(10))

on primary

go

(2) 创建职工工资表

use employee

create table 职工工资表

(职工姓名char(10) not null, 日期 Datetime() not null,

职工编号char(10) not null, 岗位工资 Float (8),

?

统筹金 Float (8),

实发工资 Float (8))

on primary

go

(3) 创建职工考勤表

use employee

create table 职工考勤表

(职工姓名char(10) not null, 职工编号 char(9) not null, 日期 datetime() not null,

应出勤人数 int(4) not null) on primary

go

(4) 创建单位编码表

use employee

create table单位编码表

(单位编号char(15) not null, 单位 char(20) not null)

On primary

Go

(5)创建系统信息表

use employee

create table系统信息表

(用户ID char(20) not null, 用户名 char(20) not null, 密码 char(20),not null)

on primary

go

(6)创建职工工资统计表

13

use employee

create table 职工工资统计表

(单位编号char(15) not null,

日期 Datetime() not null,

季末人数char(10) not null,

夜班费 Float (8),

?

其他工资 Float (8),

实发工资 Float (8))

on primary

go

(7)建立职工考勤统计表

use employee

create table 职工考勤统计表

(单位编号char(15) not null,

日期 datetime() not null,

在编人数 int(7) not null,

应出勤人数 int(4) not null

?

旷工 int(4) not null,

产前假 int(4) not null,

产假 int(4) not null )

on primary

go

3.4.3 给各表添加主外键

use database employee

alter table 职工基本信息表

with check (性别=1 or 性别=0) add 性别

add constraint [pk_职工基本信息表] primary key clustered (职工编号

) on [primary]

go

alter table职工基本信息表add

constraint [fk_职工基本信息表_单位编号] foreign key (单位编号)

references单位编号表

(单位编号),

go

14

alter table 职工工资表

with nocheck

add constraint [pk_职工工资表] primary key clustered (日期

) on [primary]

go

alter table职工工资表add

constraint [fk_职工工资表_职工编号] foreign key (职工编号)

references职工基本信息表

(职工编号),

go

alter table 职工考勤表

with nocheck

add constraint [pk_职工考勤表] primary key clustered (日期

) on [primary]

go

alter table职工考勤表add

constraint [fk_职工考勤表_职工编号] foreign key (职工编号)

references职工基本信息表

(职工编号),

go

alter table 单位编号表

with nocheck

add constraint [pk_单位编号表] primary key clustered (单位编号

) on [primary]

go

alter table职工考勤统计表add

constraint [fk_职工考勤统计表_单位编号] foreign key (单位编号)

references单位编号表

(单位编号),

go

alter table职工工资统计表add

constraint [fk_职工工资统计表_单位编号] foreign key

15

(单位编号)

references单位编号表

(单位编号),

go

3.4.4 数据的添加

注:由于字段过多,就不一一列出了。

use employee

insert职工基本信息表

(职工编号,单位编号,档案号,职工姓名,?,爱人姓名,爱人单位) values

('201','1221','1000','张丰',?,'李明',’丰田公司’) insert职工工资表

(职工编号, 日期, 职工姓名,岗位工资,?,备注,实发工资) values

('201','2005-5-5','张丰','1200',?,'无',’1200’) insert职工考勤表

(职工姓名,职工编号, 日期,应出勤人数)

values

('张丰','201','张丰','2005-5-5',?,'1200’)

insert单位编码表

(单位编码,单位)

values

('1222','丰田公司’)

insert系统信息表

(用户ID,密码,用户名)

values

('201','12345','张丰')

insert职工工资统计表

(单位编号, 日期, 季末人数, 夜班费,?, 其他工资,实发工资) values

('1222','2005-5-5','1222','500',?,'无',’123232’) insert职工考勤统计表

(单位编号, 日期,在编人数,外借人数,应出勤人数,?,产前假,产假)

values

('1222','2005-5-5','1200','0',’1200’,?,'3’,’3’)

3.4.5 数据的统计

16

use employee

select count(*) as 职工总数

from 职工基本信息表

go

use employee

select count(*) as 人数,avg(实发工资) as 平均实发工资 from职工基本信息表

where 收入>2500

go

use employee

select count(*) as 人数

from 职工基本信息表

where datediff(yy,出生年月,getdate())

between 20 and 40

go

3.4.6 数据库的存储过程

create proc proc_单位编号

@ 职工姓名 char(10)

@ 单位编号 char(15)

as

select @ 单位编号 =单位编号

from职工基本信息表

where 职工姓名 = @ 职工姓名

create proc proc_职工信息

@ 职工姓名 char(10)=’张丰’

as

select *

from职工基本信息表

where 职工姓名 = @ 职工姓名

17

3.4.7 数据库触发器

create trigger tri_岗位工资_职工基本信息表

on 职工基本信息表

for insert

as

declare @ 岗位工资 float(8)

select @ 岗位工资 =职工基本信息表. 岗位工资

from职工基本信息表, insert

where 职工基本信息表.职工编号 = inserted. .职工编号 if @岗位工资 > 10000

rollback transaction

raiserror(‘不能插入大于10000的岗位工资’,16,10) end

create trigger tri_日期_职工工资表

on 职工工资表

for update

as

if update(日期)

begin

select inserted.职工编号,inserted.职工姓名,deleted.日期 as 原日期,inserted.日期 as 新日期

from deleted , inserted

where deleted.职工编号 = inserted. .职工编号

end

create teigger tri_职工信息

on 职工基本信息表

for delet

18

as

declare @职工编号 char(12)

select @职工编号 =delted.职工编号

from deleted

print ‘准备级联删除职工基本信息表中的职工编号为‘+@原职

工编号+‘的纪录‘

第四章 结束语

经过一个星期的设计和开发,商厦人事劳资管理系统基本开发完毕。其功能基本符合用户需求,能够完成员工基本信息、工资、考勤的输入和统计。以及各类相关报表的打印。并提供部分系统维护功能,使用户方便进行数据备份和恢复、数据删除。同时也考虑到了单位编码以减少数据冗余的问题,对于数据的一致性的问题也通过程序进行了有效的解决。

但是由于设计时间较短,所以该系统还有许多不尽如人意的地方,如数据库的加密、管理用户的权限、数据存在的冗余、系统对错误的处理等,这有些地方还有待进一步改善。

19

相关推荐