Princípios de banco de dados e aplicativos Relatório de design do curso - Sistema de gerenciamento de salários

1. Visão Geral

Com o desenvolvimento da economia, as empresas estão se desenvolvendo em grande e grande escala.Para as grandes e médias empresas, as informações relacionadas à gestão de salários, como funcionários e cargos profissionais, aumentaram drasticamente. Nesse caso, confiar apenas no processamento manual dos salários dos funcionários não é apenas impotente, mas também extremamente propenso a erros. Como projetar os salários de uma pequena empresa, uma série de operações, como adicionar novos funcionários, excluir funcionários antigos, consultas salariais, estatísticas etc., são realizadas por computadores em vez de humanos. Desta forma, o pessoal do escritório pode concluir de forma fácil e rápida a tarefa de gestão salarial.

Para o pagamento de salários de empresas e instituições, não precisa ser muito grande. Tudo o que é necessário é um sistema que seja fácil de operar, tenha funções práticas e possa atender simultaneamente ao gerenciamento de dados e às necessidades do departamento financeiro, de outros departamentos relevantes da unidade e da unidade de distribuição.

Para conseguir uma gestão centralizada dos salários. Pode ser utilizado pelo pessoal financeiro para adicionar, excluir, modificar e consultar o pessoal e salários da unidade, podendo o sistema calcular automaticamente o total de salários a serem pagos na distribuição salarial; ao mesmo tempo, o sistema também pode realizar consultas multiângulo sobre funcionários e gerenciamento de salários .

Com base nos motivos acima, o sistema de gerenciamento de salários corporativos usa computadores para armazenamento seguro, cálculo rápido e estatísticas abrangentes para realizar a sistematização, padronização e automação do gerenciamento de salários. O sistema de gerenciamento de salários corporativos é um típico sistema de gerenciamento de informações (MIS), e o banco de dados de segundo plano adota o banco de dados MySQL , que tem as vantagens de operação simples e fácil uso .

2. Análise de Demanda

2.1 Descrição do requisito

O sistema de gerenciamento de salários é para melhor realizar o gerenciamento de várias informações salariais e o gerenciamento de segurança de várias informações. Este sistema foi projetado principalmente para verificar várias necessidades de informações salariais dos funcionários e pode gerenciar bem os dados. A principal função deste sistema consiste nas seguintes partes:

Após pesquisa e análise, o sistema de informações de gerenciamento de salários conclui principalmente as seguintes funções:

(1) Módulo de informações básicas do funcionário: informações básicas dos funcionários.

(2) Módulo de informação salarial: salário-base mensal dos funcionários, pós-salário, contas de água e luz, salário-prêmio, abatimento do salário, valor do pagamento real.

(3) Módulo de informações do departamento: número, nome, responsável e número de cada departamento da empresa.

(4) Módulo de assiduidade: regista o número de atrasos e faltas dos colaboradores.

(5) Módulo Abono: registra a situação de horas extras dos funcionários e distribui abonos.

(6) Módulo de gerenciamento de informações do funcionário: A consulta do administrador das informações necessárias é para adicionar, excluir, modificar e consultar as informações básicas do funcionário.

(7)员工工资管理模块:管理员对所需要的资料的查询即对员工工资信息的增加、删除、修改、查询操作。

2.2数据流图

顶层数据流图 

2.3数据字典

2.3.1 数据项的描述

1、数据项名:员工编号

别名:w_number

取值范围:0000-9999

含义说明:每位员工的编号

类型:char

长度:4

2、数据项名:员工姓名

别名:w_name

取值范围:1—4

含义说明:每位员工的姓名

类型:varchar

长度:8

3、数据项名:员工性别

别名:sex

取值范围:“男”或“女”

含义说明:每位员工的性别

类型:char

长度:2

4、数据项名:基本工资

别名:basic_wage

取值范围:整数

含义说明:每位员工的基本工资

类型:int

5、数据项名:出生年月

别名:birthday

含义说明:每位员工的出生日期

类型:datetime

2.3.2 数据结构描述

1、名称:员工(Employee)

含义说明:员工信息

组成结构:员工编号+姓名+性别+出生年月+所属部门+文化程度+职称

2、名称:工资(Salary)

含义说明:工资信息

组成结构:员工编号+基本工资+岗位工资+水电费+津贴工资+扣除工资+实

发工资

2.3.3 数据流的描述

1、数据流名称:员工信息添加

简述:新员工信息录入

数据流来源:公司管理者

数据流去向:员工信息

数据流组成:员工编号+姓名+性别+出生年月+所属部门+文化程度+职称

2.3.4 数据流的描述

1、存储名称:员工记录存储

说明:记录着所有员工的所有基本信息

输入:员工基本信息

输出:员工所有信息

数据结构:员工编号+姓名+性别+出生年月+所属部门+文化程度+职称

2.3.5 处理过程的定义

1、处理过程名:员工信息处理

说明:处理员工的基本信息

输入数据流:终端

输出数据流:员工信息入库

3.概念结构设计

3.1概念设计

3.1.1 实体分析描述

从用户角度来说,数据库的需求主要体现在对数据库表的增删改查。因此,数据库结构需同时满足两个要素:输入、输出。在进行数据设计时,首先需收集数据,然后分析数据结构,最后处理数据。根据本系统的需求,设计以下主要的数据项和数据结构:

(1)员工信息实体:员工编号、姓名、性别、所属部门、职称、文化程度、出生年月。

(2)部门信息实体:部门编号、部门名称、部门负责人、部门人数。

(3)工资信息实体:员工编号、基本工资、岗位工资、水电费、津贴工资、扣除工资、实发金额。

(4)考勤信息实体:员工编号、姓名、性别、迟到次数、缺席次数。

(5)津贴信息实体:员工编号、姓名、性别、加班天数、津贴情况、加班类型、加班时间。

3.1.2 实体实体图

员工信息实体如图3.1所示。

用户信息实体图设计 

部门信息实体如图3.2所示。

部门信息实体图设计 

工资信息实体如图3.3所示。

工资信息实体图设计 

考勤信息实体如图3.4所示。

考勤信息实体图设计

津贴信息实体如图3.5所示。

津贴信息实体图设计 

3.1.3 E-R图

工资管理系统局部E-R图如图3.6所示。

工资管理系统局部E-R图设计 

工资管理系统局部E-R图如图3.7所示。

工资管理系统局部E-R图设计 

工资管理系统局部E-R图如图3.8所示。

工资管理系统局部E-R图设计 

工资管理系统局部E-R图如图3.9所示。

工资管理系统局部E-R图设计 

工资管理系统总E-R图如图3.10所示。

工资管理系统总E-R图设计

4.1逻辑结构设计

4.1关系模式

关系模式:员工信息(员工编号、姓名、性别、出生年月、所属部门、

文化程度、职称)

模式判定:员工信息∈2NF,且每个非主属性都不传递函数依赖于员工信

息的主关系键,所以员工信息∈3NF

关系模式:部门信息(部门编号、部门名称、部门负责人、部门人数)

模式判定:部门信息∈2NF,且每个非主属性都不传递函数依赖于部门信

息的主关系键,所以部门信息∈3NF

关系模式:工资信息(员工编号、基本工资、岗位工资、水电费、津贴

工资、扣除工资、实发金额)

模式判定:工资信息∈2NF,且每个非主属性都不传递函数依赖于工资信

息的主关系键,所以工资信息∈3NF

关系模式:考勤信息(员工编号、姓名、性别、迟到次数、缺勤次数)

模式判定:考勤信息∈2NF,且每个非主属性都不传递函数依赖于考勤信

息的主关系键,所以考勤信息∈3NF

关系模式:津贴信息(员工编号、姓名、性别、加班时间、加班天数、

加班类型、津贴情况)

模式判定:津贴信息∈2NF,且每个非主属性都不传递函数依赖于津贴信

息的主关系键,所以津贴信息∈3NF

5.物理结构设计

5.1定义数据库、表名

数据库名:

wages

数据库表名:

  1. 员工信息表:staff
  2. 部门信息表:dept
  3. 工资信息表:wages
  4. 考勤信息表:attendance
  5. 津贴信息表:allowance

5.2存储引擎

使用mysql数据库,选择InnoDB作为存储引擎。

5.3数据库存储结构设计

为了提高系统的性能,根据应用情况将数据的易变部分与稳定部分、经常

存取部分与不经常存取部分分开存放。

由于现在的计算机都有多个磁盘,将表(如员工信息表)和索引放在不同

的磁盘上,在查询过程中,大大提高I/O读写的效率,而对于较大的分放在两

个磁盘上,可以加快存取速度,在多用户环境下的作用更有效;为了改进系统

的性能,将日志文件与数据库对象(表、索引等)放在了不同的盘上。同时,

考虑到本系统是多用户的,为了提高效率,数据库备份的数据和日志文件将保

存在磁盘中。

在数据库中经常存取的部分包括:

员工(员工编号、姓名、性别、出生年月、所属部门。。..。)

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

工资(员工编号、基本工资、岗位工资、水电费.。.。。)

考勤(员工编号、姓名、性别、迟到次数、缺勤次数)

不经常存取部分包括:

基本工资(工资级别、工资金额)

岗位工资(工资级别、工资金额)

在数据库设计初始阶段,为了对以后的数据库进行物理优化,提供了一些

系统配置变量、存储分配系数,并对这些变量赋予合理的缺省值。但这些值不

一定适合每一种应用环境,在进行物理设计时,对这些变量重新赋值,以改善

系统的性能。在选择硬件设备、服务器操作系统、数据库时应该考虑能够逐步

增加和扩展。

在配置系统变量时,要注意同时使用数据库的用户数,同时打开的数据库

对象数,内存分配参数,缓冲区分配参数,时间片大小,数据库的大小,锁的

数目等。这些参数值都会影响数据库的存储时间和存储空间的分配。 

5.4数据库存储方法设计

在本系统中,采用顺序查找,平均查找n/2次,建立B+树索引,则平均查找次数为B+树的层数log2 n+1。所以选择B+树作为索引,再设计过程中对关系的码建立索引。

5.5数据库表结构

(1)员工信息表

属性名

字段名

数据类型

长度

是否允许为空

是否主键

员工编号

employee_No

char

4

不允许

姓名

name

varchar

8

不允许

性别

sex

char

2

允许

出生年月

birthday

datetime

允许

所属部门

dept

varchar

20

不允许

文化程度

education_level

varchar

20

允许

职称

title

char

12

允许

(2)部门信息表

属性名

字段名

数据类型

长度

是否允许为空

是否主键

部门编号

code

char

4

不允许

部门名称

name

varchar

20

不允许

部门负责人

manager

varchar

20

不允许

部门人数

sum

int

10

不允许

(3)工资信息表

属性名

字段名

数据类型

长度

是否允许为空

有无索引

员工编号

code

char

4

不允许

基本工资

baseWages

varchar

20

不允许

岗位工资

postWages

varchar

20

不允许

水电费

money

float

10

不允许

津贴工资

subsidy

varchar

10

不允许

扣除薪酬

deduction

varchar

10

不允许

实发金额

fact

varchar

10

不允许

(4)考勤信息表

属性名

字段名

数据类型

长度

是否允许为空

有无索引

员工编号

code

char

4

不允许

姓名

name

varchar

8

不允许

性别

sex

char

2

不允许

迟到次数

delaysum

int

10

不允许

缺席次数

misssum

int

10

不允许

(5)津贴信息表

属性名

字段名

数据类型

长度

是否允许为空

有无索引

员工编号

code

char

4

不允许

姓名

name

varchar

8

不允许

性别

sex

char

2

不允许

加班时间

overtime

varchar

10

允许

加班天数

overday

float

10

允许

加班类型

overtype

varchar

10

允许

津贴情况

allowance

int

10

允许

5.6数据库模型

数据库模型

6.数据库实施

6.1数据库的创建

CREATE DATABASE wages CHARACTER SET utf8;

6.2数据库的表创建

(1)员工信息表

CREATE TABLE `staff`  (

  `employee_No` char(4) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,

  `name` varchar(8) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,

  `sex` char(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,

  `birthday` datetime(0) NULL DEFAULT NULL,

  `dept` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,

  `education_level` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,

  `title` char(12) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,

  PRIMARY KEY (`employee_No`) USING BTREE

) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;

基础数据初始化:

INSERT INTO `staff` VALUES ('001', '张三', '女', '1999-01-21 00:00:00', '部门', '本科', '无');

INSERT INTO `staff` VALUES ('002', '张三', '女', '1999-01-21 00:00:00', '部门', '本科', '无');

INSERT INTO `staff` VALUES ('003', '张三', '女', '1999-01-21 00:00:00', '部门', '本科', '无');

INSERT INTO `staff` VALUES ('004', '张三', '女', '1999-01-21 00:00:00', '部门', '本科', '无');

效果图:

 图6.1 员工信息表运行效果

(2)部门信息表

CREATE TABLE `dept`  (

  `code` char(4) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,

  `name` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,

  `manager` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,

  `sum` int(0) NULL DEFAULT NULL,

  PRIMARY KEY (`code`) USING BTREE

) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;

数据初始化:

INSERT INTO `dept` VALUES ('001', '部门1', '张三', 10);

INSERT INTO `dept` VALUES ('002', '部门2', '张三', 10);

INSERT INTO `dept` VALUES ('003', '部门2', '张三', 10);

效果图:

 图6.2 部门信息表运行效果

(3)工资信息表

DROP TABLE IF EXISTS `wages`;

CREATE TABLE `wages`  (

  `code` char(4) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,

  `baseWages` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,

  `postWages` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,

  `money` float(10, 0) NULL DEFAULT NULL,

  `subsidy` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,

  `deduction` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,

  PRIMARY KEY (`code`) USING BTREE

) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;

数据初始化:

INSERT INTO `wages` VALUES ('001', '2000', '1000', 1000, '1000', '');

INSERT INTO `wages` VALUES ('002', '2000', '1000', 1000, '1000', '');

INSERT INTO `wages` VALUES ('003', '2000', '1000', 1000, '1000', '');

INSERT INTO `wages` VALUES ('004', '2000', '1000', 1000, '1000', '');

效果图:

 图6.3 工资信息表运行效果

(4)考勤信息表

CREATE TABLE `attendance`  (

  `code` char(4) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,

  `name` varchar(8) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,

  `sex` varchar(2) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,

  `delaysum` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,

  `misssum` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,

  PRIMARY KEY (`code`) USING BTREE

) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;

数据初始化:

INSERT INTO `attendance` VALUES ('001', '张三', '女', '11', '0');

INSERT INTO `attendance` VALUES ('002', '张三', '女', '11', '0');

INSERT INTO `attendance` VALUES ('003', '张三', '女', '11', '0');

INSERT INTO `attendance` VALUES ('004', '张三', '女', '11', '0');

INSERT INTO `attendance` VALUES ('005', '张三', '女', '11', '0');

效果图:

 图6.4 考勤信息表运行效果

(5)津贴信息表

CREATE TABLE `allowance`  (

  `code` char(4) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,

  `name` varchar(4) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,

  `sex` char(8) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,

  `overtime` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,

  `allowance` int(0) NULL DEFAULT NULL,

  `overday` float(10, 0) NULL DEFAULT NULL,

  `overtype` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,

  PRIMARY KEY (`code`) USING BTREE

) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;

数据初始化:

INSERT INTO `allowance` VALUES ('001', '张三', '女', '0', 0, 0, '0');

INSERT INTO `allowance` VALUES ('002', '张三', '女', '0', 0, 0, '0');

INSERT INTO `allowance` VALUES ('003', '张三', '女', '0', 0, 0, '0');

INSERT INTO `allowance` VALUES ('004', '张三', '女', '0', 0, 0, '0');

INSERT INTO `allowance` VALUES ('005', '张三', '女', '0', 0, 0, '0');

运行效果图:

 图6.5 津贴信息表运行效果

 

Acho que você gosta

Origin blog.csdn.net/lf21qp/article/details/131611602
Recomendado
Clasificación