数据库课程设计说明书模板.docx
《数据库课程设计说明书模板.docx》由会员分享,可在线阅读,更多相关《数据库课程设计说明书模板.docx(31页珍藏版)》请在冰豆网上搜索。
数据库课程设计说明书模板
中北大学
数据库课程设计
说明书
学院、系:
软件学院
专业:
软件工程
学生姓名:
于淇
学号:
1221011415
设计题目:
通用工资管理系统
起迄日期:
2014年5月26日-2014年6月20日
指导教师:
李瑞红
2012年6月21日
1需求分析
工资管理系统的功能是收集员工的个人信息,以便实现按照科室录入个人的基本资料,向各科室发放个人工资和计算个人的实际发放工资,可以让相关财务部门及领导查看各科室人数情况和工资金额,还可以让员工用自己的员工号去查看自己的工资和扣除金额的情况。
工资管理系统的主要功能有:
(1)、录入个人的基本资料;
(2)、计算个人的实际发放工资,即根据考勤、津贴、工资计算
实际工资;
(3)、按部门、职业分类、和时间统计人数和工资金额;
(4)、实现员工个人信息、工资、部门或周期工资情况查询;
(5)、能够删除辞职人员的数据;
工资管理:
包括与工资发放相关的各种数据处理,以及对这些处理的有机组织规划;人事管理:
主要指对各种员工人事信息的管理,包括员工的基本情况和升迁离职情况;工资项目:
影响工资计算的各种因素,如:
基本工资,福利补贴和奖励工资,扣除的工资等等。
用户登录管理:
2种权限,一种是管理员权限,可以做任何操作;一种是普通用户权限只可以查看自己的工资及基本信息,不能编辑,也不能查看其他用户信息。
1.1处理对象:
员工信息:
员工编号,员工姓名,性别,年龄,出生年月,籍贯,电话号码,部门编号
部门信息:
部门编号,部门名称,部门负责人,联系电话
员工出勤信息:
工资编号,员工编号,月份,基本工资,福利补贴,奖励工资,事业保险金,住房公积金
实发工资信息:
工资编号,员工编号,月份,所得工资
1.2数据流图:
员工信息工资信息部门信息
改改
删员工出勤表
删
添添
员工信息表
部门表
实发工资信息表
1.3数据字典
数据项列表
数据项编号数据项名数据项含义存储结构
DI-1w_number员工编号smallint
DI_2w_nam员工姓名char(10)
DI_3sex性别char(6)
DI_4age年龄smallint
DI_5birthday出生年月char(10)
DI_6native籍贯char(20)
DI_7w_tel电话号码smallint
DI_8dep_number部门编号smallint
DI_9month月份char(5)
DI_10dep_name部门名称char(5)
DI_11dep_head部门负责人char(5)
DI_12wa_number工资编号smallint
DI_13basic_wage基本工资smallint
DI_14boon_wage福利补贴smallint
DI_15enc_wage奖励工资smallint
DI_16insurance事业保险金smallint
DI_17OPSO住房公积金smallint
DI_18fac_wage所的工资smallint
2概念设计阶段
实体间的联系:
1:
员工信息表workers:
(员工编号w_number、姓名w_name、性别sex、年龄age、出生日年月birthday、籍贯native、电话号码w_tel、所在部门编号dep_number)。
2:
部门表department:
(部门编号dep_number、部门名称dep_name、部门负责人dep_head、部门人数dep_people)。
3:
员工出勤表wage :
(工资编号wa_number、员工编号w_number、基本工资basic_wage、福利补贴boon_wage、奖励工资enc_wage、事业保险金insurance、住房公积金ORSO 、月份month)。
4:
实发工资表factwage :
(工资编号wa_number、员工编号w_number、所得工资fac_wage、月份month);
5:
各表E-R图:
6.总E-R图:
3逻辑设计阶段
1.员工基本信息表workers:
(员工编号w_number、姓名w_name、性别sex、年龄age、出生日期birthday、籍贯native、电话号码w_tel、所在部门编号dep_number)。
字段名
字段类型
长度
主键或外键
字段值约束
对应中文属性名
w_number
int
主键
不为空
员工编号
w_name
varchar
8
不为空
姓名
sex
varchar
2
不为空
性别
age
int
2
不为空
年龄
birthday
datetime
不为空
出生日期
native
varchar
20
不为空
籍贯
dep_number
int
外键
不为空
所在部门编号
w_tel
varchar
20
电话号码
2.部门表department:
(部门编号dep_number、部门名称dep_name、部门负责人dep_head)
字段名
字段类型
长度
主键或外键
字段值约束
对应中文属性名
dep_number
int
主键
不为空
部门编号
dep_name
varchar
20
不为空
部门名称
dep_head
varchar
8
不为空
部门负责人
3.员工出勤表wage:
(工资编号wa_number、员工编号w_number、基本工资basic_wage、福利补贴boon_wage、奖励工资enc_wage、事业保险金insurance、住房公积金ORSO 、月份month)
字段名
字段类型
长度
主键或外键
字段值约束
对应中文属性名
wa_number
int
主键
不为空
工资编号
w_number
int
外键
不为空
员工编号
basic_wage
varchar
6
不为空
基本工资
boon_wage
varchar
6
不为空
福利补贴
enc_wage
varchar
6
不为空
奖励工资
insurance
varchar
6
不为空
事业保险金
ORSO
varchar
6
不为空
住房公积金
month
varchar
6
主键
不为空
月份
4.实发工资表factwage :
(工资编号fwa_number、员工编号w_number、所得工资fac_wage、月份month)
字段名
字段类型
长度
主键或外键
字段值约束
对应中文属性名
fwa_number
int
主键
不为空
实发工资编号
w_number
int
外键
不为空
员工编号
fac_wage
varchar
6
不为空
所得工资
month
varchar
6
主键
不为空
月份
5关系模式
1.员工基本信息表workers:
(员工编号w_number、姓名w_name、性别sex、年龄age、出生日期birthday、籍贯native、电话号码w_tel、所在部门编号dep_number)。
2.部门表department:
(部门编号dep_number、部门名称dep_name、部门负责人dep_head)
3员工出勤表wage:
(工资编号wa_number、员工编号w_number、基本工资basic_wage、福利补贴boon_wage、奖励工资enc_wage、事业保险金insurance、住房公积金ORSO 、月份month)
4实发工资表factwage :
(工资编号fwa_number、月份month、员工编号w_number、所得工资fac_wage)
4物理设计阶段
物理结构设计是为逻辑数据模型建立一个完整的能实现的数据库结构,包括存储结构和存取方法。
1.输入:
系统关系数据结构
2.输出:
系统数据库物理结构
3.索引类型的选择
工资管理系统的核心任务是对员工的基本信息和工资信息进行有效的管理。
其中,数据量最大且访问频率较高的是工资清单表和实发工资表。
为了提高系统的查询效率,降低系统的查询成本,需要为员工基本信息表和工资清单表、实发工资表建立聚簇索引。
5数据库实施
数据库实施是根据应用系统数据库的关系结构模型和物理结构设计结果,形成基于SQLServer平台应用系统的数据库设计报告,并进行数据库的具体构建与管理。
5.1建立数据库、数据表、视图、索引
5.1.1创建一个工资管理系统数据库(命名为:
wageManager):
createdatabasewageManager;
5.1.2表对象的创建
分别创建:
员工基本信息表、部门表、员工出勤表、实发工资表,四个表.
(1)员工基本信息表
usewageManager
createtableworkers
(w_numbervarchar(10)notnullprimarykey,
w_namevarchar(8)notnull,
sexvarchar
(2)notnull,
birthdaydatetimenotnull,
nativevarchar(20)notnull,
dep_numbervarchar(10)notnull,
w_telvarchar(20)
)
视图如下:
(2)部门表
--部门表的创建
usewageManager
createtabledepartment
(dep_numberintnotnullprimarykey,
dep_namevarchar(20)notnull,
dep_headvarchar(8)notnull,
dep_telvarchar(8)notnull
)
视图如下:
(3)员工出勤表
usewageManager
createtablewage
(wa_numberintnotnullprimarykey,
w_numberintnotnull,
basic_wagevarchar(6)notnull,
boon_wagevarchar(6)notnull,
enc_wagevarchar(6)notnull,
insurancevarchar(6)notnull,
ORSOvarchar(6)notnull,
monthvarchar(6)notnull,
Foreignkey(w_number)refrenceswokers(w_number),
)
视图如下:
(4)实发工资表
usewageManager
createtablefactwage
(fac_numberintnotnullprimarykey,
w_numberintnotnull,
fac_wagevarchar(6)notnull,
monthvarchar(6)notnull,
Foreignkey(w_number)refrenceswokers(w_number),
)
视图如下:
(5)所有表创建成功,数据库表如下:
UsewageManager;
Insertintowokersvalues(‘00001’,’张明’,’女’,’20’,’1995/8/5’,’山西’,’182330303216’,’01’);
Insertintowokersvalues(‘00002’,’张佳’,’女’,’20’,’1995/10/9’,’山西’,’182330303219’,’01’);
Insertintowokersvalues(‘00003’,’王明’,’男’,’23’,’1992/8/3’,’山西’,’182330303215’,’02’);
Insertintowokersvalues(‘00004’,’刘明’,’男’,’20’,’1995/6/23’,’山西’,’182330306216’,’03’);
Insertintowokersvalues(‘00005’,’王萌’,’女’,’20’,’1995/12/5’,’山西’,’182330303218’,’03’);
Insertintowokersvalues(‘00006’,’白婷’,’女’,’20’,’1995/6/8’,’山西’,’182360303216’,’02’);
Insertintodepartmentvalues(‘01’,’人事部’,’张佳’,’182330303216’);
Insertintodepartmentvalues(‘02’,’财务部’,’王明’,’182330303215’);
Insertintodepartmentvalues(‘03’,’销售部’,’王萌’,’182330303218’);
Insertintowagevalues(‘w00001’,’00001’,’2000’,’200’,’200’,’-100’,’-200’,’01’);
Insertintowagevalues(‘w00002’,’00002’,’2000’,’100’,’100’,’-100’,’-200’,’01’);
Insertintowagevalues(‘w00003’,’00003’,’2000’,’200’,’100’,’-100’,’-200’,’01’);
Insertintowagevalues(‘w00004’,’00004’,’2000’,’100’,’300’,’-100’,’-200’,’01’);
Insertintowagevalues(‘w00005’,’00005’,’2000’,’100’,’200’,’-100’,’-200’,’01’);
Insertintowagevalues(‘w00006’,’00006’,’2000’,’100’,’300’,’-100’,’-200’,’01’);
Insertintofactwagevalues(‘wa00001’,’01’,’00001’,’2100’);
Insertintofactwagevalues(‘wa00002’,’01’,’00002’,’1900’);
Insertintofactwagevalues(‘wa00003’,’01’,’00003’,’2000’);
Insertintofactwagevalues(‘wa00004’,’01’,’00004’,’2100’);
Insertintofactwagevalues(‘wa00005’,’01’,’00005’,’2000’);
Insertintofactwagevalues(‘wa00006’,’01’,’00006’,’2100’);
5.1.3索引对象的创建
工资管理系统的核心任务是对员工的基本信息和工资信息进行有效的管理。
其中,数据量最大且访问频率较高的是工资清单表和实发工资表。
为了提高系统的查询效率,降低系统的查询成本,需要为员工基本信息表和工资清单表、实发工资表建立聚簇索引
USEwageManager
GO
CREATEUNIQUEINDEX默认索引ONwage(wa_number)
USEwageManager
GO
CREATEINDEX复合索引ONwage(wa_number,w_number,month)
USEwageManager
GO
CREATEINDEX复合索引ONworkers(w_number,w_name)
USEwageManager
GO
CREATEINDEX唯一性索引ONworkers(w_number)
视图如下:
5.1.4视图对象的创建
USEwageManager
GO
CREATEVIEWv_system_wages
AS
SELECT
wage.wa_numberAS工资编号,
workers.w_numberAS员工编号,
workers.w_nameAS员工姓名,
workers.dep_numberAS部门编号,
department.dep_nameAS部门名称,
wage.basic_wageAS基本工资,
wage.boon_wageAS福利工资,
wage.enc_wageAS奖励工资,
wage.insuranceAS事业保险金,
wage.ORSOAS住房公积金,
factwage.fac_wageAS实发工资
FROMwage,workers,department,factwage
WHEREworkers.w_number=wage.w_number
ANDworkers.dep_number=department.dep_number
ANDwage.w_number=factwage.w_number
视图如下:
界面如下:
5.1.5登录用户的创建
创建SQLServer登录账号:
createloginyuqiwithpassword='1234'
视图如下:
5.1.6数据库用户的创建
创建SQLServer数据库用户:
usewageManager
createuseryuqi_user
fromloginyuqi
视图如下:
员工基本信息表:
部门表:
员工出勤表:
实发工资表:
6系统调试和测试
6.1.1插入员工信息
USEwageManager
GO
Insertintowokersvalues(‘00001’,’黄璐’,’女’,’20’,’1995/8/5’,’山西’,’182330306616’,’01’);
修改后表内容如下:
6.1.2.数据的修改
USEwageManager
GO
UPDATEworkers
SETw_name='刘玉',dep_number='02'
WHEREw_number='10010'
视图如下:
修改后表内容如下:
6.1.3.数据的删除
USEwageManager
GO
DELETEFROMworkersWHEREw_name='刘玉'
视图如下:
修改后表内容如下:
6.2.1表数据的简单查询
USEwageManager
GO
SELECTw_numberAS员工编号,w_nameAS姓名,sexAS性别,
birthdayAS出生日期,nativeAS籍贯,
dep_numberAS所在部门编号,
w_telAS联系电话
FROMworkers
视图如下:
查询单个部门工资:
USEwageManager
GO
SELECTw_numberAS员工编号,w_nameAS姓名,sexAS性别,
birthdayAS出生日期,nativeAS籍贯,
dep_numberAS所在部门编号,
w_telAS联系电话
FROMworkers
6.2.2表数据的联接查询
1.两表联合查询员工所在部门及相关信息:
USEwageManager
GO
SELECTw_numberAS员工编号,
w_nameAS姓名,
sexAS性别,
birthdayAS出生日期,
nativeAS籍贯,
workers.dep_numberAS部门编号,
dep_nameAS部门名称,
dep_headAS部门负责人,
w_telAS联系电话
FROMworkers,department
whereworkers.dep_number=department.dep_number
视图界面如下:
2.三个表联合查询员工工资情况:
USEwageManager
GO
SELECT
wage.wa_numberAS工资编号,
wage.w_numberAS员工编号,
w_nameAS姓名,
dep_nameAS所在部门,
basic_wageAS基本工资,
boon_wageAS福利工资,
enc_wage奖励工资,
insuranceAS事业保险金,
ORSOAS住房公积金
FROMworkers,department,wage
wherewage.w_number=workers.w_number
ANDworkers.dep_number=department.dep_number
视图界面如下:
3.四个表整体联合查询员工工资详细情况:
USEwageManager
GO
SELECT
wage.wa_numberAS工资编号,
wage.w_numberAS员工编号,
w_nameAS姓名,
dep_nameAS所在部门,
basic_wageAS基本工资,
boon_wageAS福利工资,
enc_wage奖励工资,
insuranceAS事业保险金,
ORSOAS住房公积金,
fac_wageAS实发工资
FROMworkers,department,wage,factwage
wherewage.w_number=workers.w_number
ANDworkers.dep_number=department.dep_number
ANDfactwage.w_number=wage.w_number
查询结果如下:
7心得体会
这次SQL的创新考核打破了在试卷上传统的理论考试,让我们自己动手,不仅巩固了我们的所学知识,更全面的测试了我们学习这门课程的熟练程度,在这个过程中,遇见了不少问题,很多问题是平时做实验没有遇到过的,但通过自己的努