数据库课程设计报告设计题目:工资管理系统学院:数学与计算机学院专业:计算机科学与技术(软件工程)班级:软件12指导老师:***组员:徐振国(02)张奇卫(03)小组成员及分工目录1.引言 (3)1.1编写目的 (3)1.2项目背景 (4)1.3参考资料 (4)2.需求分析 (4)2.1功能的分析、 (4)2.2顶层图 (5)2.3数据流程图 (5)2.4数据字典分析 (5)3.数据库的概念设计 (7)4.数据库的逻辑设计 (8)5.数据库与数据表的设计——物理结构设计 (9)5.1数据库与数据表的设计 (9)5.2数据的完整性设计 (12)6.数据库操作与实施结果——数据库对象的设计 (13)6.1建数据库——工资管理库 (13)6.2建表 (13)6.3创建视图 (16)6.4触发器 (16)6.5建立索引 (18)7.运行和维护 (18)7.1简单查询 (18)7.2复杂查询 (19)7.3数据库的用户与权限管理 (20)7.4数据库的备份 (22)7.5数据的导出与导入 (23)8 总结 (24)工资管理系统分析和设计1.引言1.1编写目的随着科学的进步,一些公司不断发展壮大急需一套完整的工资管理系统帮助企业的财务主管部门提高工作效率,实现企业工资管理的系统化、规范化和自动化。
本系统实现对人员信息、薪资福利、员工社保信息的维护和查询,并能迅速准确地完成考勤的分类汇总,生成工资报表等。
能够使单位实现工资管理的自动化,无疑将给企业管理部门带来很大的方便。
真正实现企业高效、科学、现代化的员工管理。
有利于财务部门对员工工资的管理,减轻人事部们的任务,提高公司效率,节约人力资源从而降低了企业成本。
1.2项目背景a.我们对数据库技术有了初步的了解和具体的应用;因此,做此分析,由各小组成员合作做出一个项目。
让我们对学到的知识系统的结合在一起;考察学生学以致用的能力。
b.由此考察学生的动手能力和合作的精神;以打分的形式作为一次考察记录。
1.3参考资料a.老师发放的软件工程文档模板。
b.网络下载有关的资料说明和一些部门的工资管理系统范例。
2.需求分析2.1功能的分析、工资管理系统主要完成的功能有:(1) 人员信息管理:企业员工信息(包括员工基本信息、教育经历、个人简历、岗位变更、离职登记、离退休信息等)的维护和查询。
(2) 考勤管理:管理员工的出勤情况(包括加班、请假、休假等),并提供查询和分类统计功能。
(3) 薪资福利管理:管理员工的薪资和福利(包括当月工资、个人所得税、发放工资历史、员工奖励、员工惩罚等)。
(4) 社会保障管理:管理员工的社保信息(包括单位参保信息、养老保险、医疗保险、住房公积金等),生成社会保险台帐。
(5) 系统管理:包括代码管理、参数设置、权限设置、更改密码等。
2.2 顶层图2.3数据流程图2.4 数据字典分析数据字典是系统中各类数据描述的集合,是进行详细的数据收集和数数据分析所获得的主要成果。
工资管理系统员工系统管理员工资查询注册登记信息维护打印报表名字:员工基本信息表描述:保存员工的基本信息定义:性别+姓名+年龄+部门+员工编号+毕业院校+所学专业+政治面貌名字:简历表 描述:保存员工的求职信息 定义:获奖情况+社会实践情况3.数据库的概念设计分析前面的系统功能要求,需要一个表来存储和管理员工信息,使系统能够接受员工原始的各项数据,以实现数据录入、查询或统计员工信息等功能。
员工是本系统的一个实体。
要是为各种查询提供数据。
社保信息是为提供基本的查询功能而设定的一个实体,岗位变更是为记录员工在本部门或不同部门的职位变化,并提供查询的功能。
员工简历是为了提供员工在过去的情况而设定的一个实体。
据此可以绘出工资管理系统数据库的E-R图如下:4.数据库的逻辑设计将数据库的概念模型转变为关系模型:实体转变为关系模式的有:因为部门和员工1:N的关系,且员工和其他的实体也是1:N的关系,所以个关系模式为:部门(部门名称,部门人数,部门负责人)员工(员工编号,姓名,性别,年龄,学历,政治面貌,毕业学校,所学专业,出生日期,部门名称,退休信息,)工资(工资ID,员工编号,基本工资,岗位工资,工龄工资,加班工资,个人所得税,缺勤扣款,其他应扣款,其他应加款,应发工资,实发工资,工资年月)考勤(考勤ID,员工编号,加班,请假,休假,日期,出勤天数)岗位变更(ID,员工编号,初始岗位,现在岗位,变更日期)离职信息(ID,员工编号,离职时间,离职原因,批准人)简历(ID,员工编号,,获奖情况,社会实践)奖惩(奖惩ID,员工编号,奖罚日期,奖罚原因,解除日期)工资历史(ID,员工编号,发放金额,发放日期)社保信息(ID,员工编号,养老保险,医疗保险,住房公积金,参保信息)用户信息(员工编号,密码,权限)带下划线的属性为个关系模式的外码,字体为粗体的属性为各关系模式的主码。
5.数据库与数据表的设计——物理结构设计5.1数据库与数据表的设计员工信息数据表的定义其中“员工编号”是表的主键,唯一标识。
“部门名称”是外键。
“员工编号”将记录员工的编号,在员工信息表中增加这一列时,虽然增加了数据冗余,但可以再查询每个员工信息是,提高系统的性能。
因为员工信息表的记录数相对固定,相比之下,增加这个冗余的列对于整个系统来说是有利的。
通过它,系统将引用到工资信息。
此表取名为“员工”。
岗位变更数据表的定义:简历表:此表取名为简历。
离职信息此表取名为离职信息。
奖惩表:员工工资基本表发放工资历史考勤表社保信息用户信息表部门5.2数据的完整性设计(1)给每个表实施主键约束。
主键约束、非空约束员工:员工编号为主键,所以此项非空部门:部门编号为主键,所以此项非空其余的正如上面的设计(2)实施CHECK约束●员工表中建立一个检查约束,即员工性别不是男的就是女的CHECK(性别IN(‘男’,‘女’))●考勤表中建立一个对于出勤天数天数的检查约束,即出勤天数在0-20之间CHECK(出勤天数>=0 and 出勤天数<=20)(3) 外键约束FK_员工_部门FOREIGN KEY (部门名称) REFERENCES 部门(部门名称)FK_工资_员工FOREIGN KEY(员工编号)REFERENCES 员工(员工编号)FK_岗位变更_员工FOREIGN KEY(员工编号)REFERENCES 员工(员工编号)FK_简历_员工FOREIGN KEY(员工编号)REFERENCES 员工(员工编号)FK_离职_员工FOREIGN KEY(员工编号)REFERENCES 员工(员工编号)FK_奖惩_员工FOREIGN KEY(员工编号)REFERENCES 员工(员工编号)FK_工资历史_员工FOREIGN KEY(员工编号)REFERENCES 员工(员工编号)FK_考勤_员工FOREIGN KEY(员工编号)REFERENCES 员工(员工编号)FK_社保_员工FOREIGN KEY(员工编号)REFERENCES 员工(员工编号)(4)惟一约束每一个表的主键都需要定义为惟一性:对于工资历史表员工编号也要惟一约束。
(5)强制约束对INSERT和UPDA TE操作强制约束,表明以后对员工表中的部门名称的添加和更新操作都会检查部门表中是否存在与此相应的内容。
6.数据库操作与实施结果——数据库对象的设计6.1建数据库——工资管理库Create database GZGL;6.2 建表Create table 员工(员工编号varchar(10) not null primary key,姓名char(8)not null,性别char(2) not null check(性别in (‘男’,’女’)),年龄int not null,学历varchar(10) not null,部门名称varchar(15) not null,毕业院校varchar(30) not null,政治面貌varchar(8) not null,所学专业varchar(40) not null,出生日期varchar(15) not null,退休信息varchar(4) not null,FOREIGN KEY (部门名称) REFERENCES 部门(部门名称) );Create table 简历(ID int primary key identity,员工编号varchar(10)not null,获奖情况varchar(50),社会实践情况varchar(100),FOREIGN KEY(员工编号)REFERENCES 员工(员工编号) );Create table 离职(ID int primary key identity,员工编号varchar(10)not null ,离职原因varchar(40),离职时间varchar(20),批准人varchar(8),FOREIGN KEY(员工编号)REFERENCES 员工(员工编号) );Create table 岗位变更( ID int primary key identity,员工编号varchar(10) not null ,初始岗位varchar(20),变更日期varchar(20),现在岗位varchar(20),FOREIGN KEY(员工编号)REFERENCES 员工(员工编号) );CREATE TABLE 工资(工资ID int primary key identity,员工编号varchar(10)not null,基本工资decimal not null,个人所得税decimal not null,缺勤扣款decimal,加班工资decimal ,工龄工资decimal not null,其他应减款decimal,其他应增款decimal,岗位工资decimal not null,应发工资decimal,实发工资decimal,工资年月varchar (15),FOREIGN KEY(员工编号)REFERENCES 员工(员工编号)CREATE TABLE 奖惩(奖惩ID int primary key identity,员工编号varchar (10)not null,奖惩日期varchar(15),奖惩原因varchar (15),解除日期varchar(15)FOREIGN KEY(员工编号)REFERENCES 员工(员工编号));CREATE TABLE 工资历史( ID int primary key identity ,员工编号varchar(10),发放金额decimal,发放日期varchar(20),FOREIGN KEY(员工编号)REFERENCES 员工(员工编号));Create table 考勤(考勤ID int primary key identity ,员工编号varchar(10) not null ,加班int,休假int,请假int,日期varchar(15),出勤天数20-请假-休假int CHECK(出勤天数>=0 and 出勤天数<=20), FOREIGN KEY(员工编号)REFERENCES 员工(员工编号));Create table 社保(ID int primary key identity,员工编号varchar(10)not null,参保信息varchar(20) ,医疗保险decimal,住房公积金decimal,养老保险decimal,FOREIGN KEY(员工编号)REFERENCES 员工(员工编号));Create table 部门(部门名称varchar(15) primary key,部门人数int,部门负责人varchar(15));Create table 用户信息(员工编号varchar(10) primary key,密码varchar(9) not null,权限int notnull);6.3创建视图查询员工工资情况建立一个视图,反映员工姓名及工资情况。