SQLServer数据库管理期末论文袁瑞萍.docx
《SQLServer数据库管理期末论文袁瑞萍.docx》由会员分享,可在线阅读,更多相关《SQLServer数据库管理期末论文袁瑞萍.docx(14页珍藏版)》请在冰豆网上搜索。
![SQLServer数据库管理期末论文袁瑞萍.docx](https://file1.bdocx.com/fileroot1/2023-1/23/5354fb2c-3cfa-439d-8c4b-d760148fac6a/5354fb2c-3cfa-439d-8c4b-d760148fac6a1.gif)
SQLServer数据库管理期末论文袁瑞萍
SQLServer数据库管理课程
论文(报告、案例分析)
院系信息学院
专业电子商务
班级
学生姓名
学号
任课教师袁瑞萍
2013年12月30日
员工管理系统数据库管理与开发
一、需求分析
(一)系统目标
设计出具有员工管理、保险管理、工资管理和考勤管理等功能的系统
(二)系统功能划分及描述
1、信息输入功能
(1)输入员工的基本信息。
包括:
员工编号、姓名、性别、出生年月、参加工作时间、所属部门、职务、职称、政治面貌、婚姻状况等基本信息。
(2)输入员工的工资信息。
包括:
基本工资、岗位工资、住房补贴、津贴、工会会费、水电费、住房公积金、养老保险、奖惩。
(3)输入员工的部门信息。
包括:
部门编号、部门名称、部门负责人、部门人数。
2、数据修改删除功能
(1)修改和删除员工的基本信息。
当单位人员的信息发生变化,如职称的变化,工作部门变动,或调离单位等,系统应能修改员工的信息或将其从员工信息表中删除。
(2)修改和删除员工的工资信息。
员工升职加薪、工资普掉是企业中常见的事情,这就需要系统能方便对员工工资进行个别及批量的修改;如员工调离本单位,就应当从员工信息表中删除这个员工信息,将其工资信息表中相应的数据删除。
(3)修改和删除部门信息。
当撤销一个部门时,能从部门信息表中将其删除。
而当一个部门的名称发生改变时,系统中所有该项部门的名称应一致的改变。
3、查询和统计功能
(1)能够查询指定员工的基本信息。
(2)能够查询指定某个部门或全部部门的基本信息。
(3)查询某个员工的工资信息。
(4)统计、汇总指定年份企业各部门或某个部门每个月或全年工资总额,汇总各部门的人数或本单位的总人数。
(5)工资表月工资的生成功能。
生成当月所有员工或某个部门的工资记录,同时能进行员工工资的计算,即计算应发金额、应扣金额及实发金额。
二、数据库概念结构设计
(一)系统概念模型
图一E-R总图
图二员工基本信息
图三部门实体与考勤实体E-R图
图四津贴实体与月工资实体E-R图
(二)详细说明
1、系统涉及的实体集
●部门实体集:
具有属性部门号、部门名称、部长和人数
●员工实体集:
具有属性职工编号、姓名、性别、出生日期、参加工作日期、所属部门、职务、政治面貌、婚姻状况和电话号码
●出勤实体集:
职工编号、月份、缺勤天数和奖惩工资
●月工资实体集:
惩奖、津贴、工会会费、住房公积金、养老保险和基本工资
●津贴实体集:
职工编号、月份、加班天数和津贴工资
2、系统涉及的联系
●一个部门能有多名员工,一个员工只能属于一个部门,所以部门和员工的联系是1:
M的联系
●一个员工可以有多次出勤记录但一个出勤记录只对应着一个员工,所以员工和出勤的联系是1:
M的联系
●一个员工可以有多中津贴但一个津贴只对应着一个员工,所以员工和津贴的联系是1:
M的联系
●一个员工可以有多分工资但一分工资只对应着一个员工,所以员工和工资的联系是1:
M的联系
●一个人的出勤影响着一个人的工资,一个人的工资也因一个人的出勤变动而变动,所以出勤和工资的联系时1:
1
●一个人的津贴影响着一个人的工资,一个人的工资也因一个人的津贴变动而变动,所以津贴和工资的联系时1:
1
三、逻辑结构设计
将E-R模型转换为关系模式
(一)员工实体集
员工(emp_no,emp_name,sex,Department_id,Emp_time,Marry,Telephon)
分别表示(员工号,员工名称,性别,员工部门,入公司时间,婚姻状况,电话号码)
(二)员工津贴实体集
津贴(emp_no,Jiaban_month,jbtianshu,Jiaban_jiangjin)
分别表示(员工号,加班时间,加班天数,加班工资)
(三)考勤实体集
考勤(emp_no,Kaoqin_month,queqin,Kaoqin_gongzi)
分别表示(员工号,时间,缺勤天数,考勤工资)
(四)工资实体集
工资(Zw,Jibengongzi)
分别表示(职位,基本工资)
(五)员工月工资实体集
员工月工资(emp_no,jbgz,jt,Kq,ygz_total,ygz_data)
分别表示(员工号,基本工资,津贴,缺勤扣除,总月工资,月工资时间)
(六)部门实体集
部门(department_id,department_name,manager,dep_renshu)
分别表示(部门号,部门名称,部长,人数)
四、数据库物理结构设计
(一)把关系模型转化为表结构
列明
数据类型
可否为空
说明
emp_no
varchar(8)
NOTNULL
员工号(主键)
emp_name
varchar(10)
NULL
员工名称
sex
char
(2)
NULL
性别
department_id
char(4)
NOTNULL
员工部门
emp_time
varchar2(6)
NOTNULL
入公司时间
marry
varchar(4)
NULL
婚姻状况
telephon
char(11)
NULL
电话号码
表
(1)员工基本情况表
列明
数据类型
可否为空
说明
department_id
char(4)
notnull
部门号
department_name
varchar(6)
notnull
部门名称
manager
varchar(6)
null
部长
dep_renshu
varchar(4)
null
人数
表
(2)部门
列明
数据类型
可否为空
说明
emo_no
varcher(8)
notnull
职工编号
kaoqin_month
varchar(10)
notnull
月份
queqin
char
(2)
null
缺勤天数
kaoqin_gongzi
float
null
奖惩工资
表(3)考勤
列明
数据类型
可否为空
说明
emp_no
varchar(8)
notnull
职工编号
jiaban_month
varchar(10)
notnull
月份
jiabantianshu
char
(2)
null
加班天数
jiaban_jiangjin
float
null
津贴工资
表(4)津贴
列明
数据类型
可否为空
说明
zhiwu
varchar(10)
notnull
职务
jibengongzi
floatdefault
null
基本工资
表(5)基本工资
列明
数据类型
可否为空
说明
emp_no
varchar(8)
notnull
deparment_id
char(4)
notnull
jibengognzi
float
null
zhufangbutie
float
null
住房补贴
gz_month
varchar(10)
notnull
jiaban_jiangjin
float
null
奖惩
kaoqin_gongzi
float
null
津贴
gonghuihuifei
float
null
工会会费
zhfgjjin
float
null
住房公积金
yanglaobaoxian
float
null
养老保险
wagecount
float
null
表(6)月工资
五、数据库实施
--创建数据库
createdatabase工资管理
on
(
name=sales_dat,
filename='D:
\sql_data\sales.mdf'
)
go
--创建表
createtable员工
(
emp_novarchar(8)notnullprimarykey,--职工编号
emp_namevarchar(10)notnull,--姓名
sexchar
(2)--性别
check(sex='男'orsex='女'),
birth_datedatetimenotnull,--出生日期
hir_datedatetimenotnull,--参加工作时间
department_idchar(4)notnull,--所属部门
zhiwuvarchar(10)notnull,--职务
zhengzhimmvarchar(10),--政治面貌
marryvarchar(4),--婚姻状况
telephonchar(11),--电话号码
constraintoldcheck(datediff(year,birth_date,hir_date)>18)
)
createtable部门
(
department_idchar(4)notnullprimarykey,--部门号
department_namevarchar(6)notnull,--部门名称
managervarchar(6),--部长
dep_renshuvarchar(4)--人数
)
createtable考勤
(
emp_novarcher(8)notnull,--职工编号
kaoqin_monthvarchar(10)notnull,--月份
queqinchar
(2),--缺勤天数
kaoqin_gongzifloat,--奖惩工资
constrainte_kprimarykey(emp_no,kaoqin_month)
)
createtable津贴
(
emp_novarchar(8)notnull,--职工编号
jiaban_monthvarchar(10)notnull,--月份
jiabantianshuchar
(2),--加班天数
jiaban_jiangjinfloat,--津贴工资
constrainte_jprimarykey(emp_no,jiaban_month)
)
createtable基本工资
(
zhiwuvarchar(10)notnullprimarykey,--职务
jibengongzifloatdefault1500,--基本工资
)
createtable月工资
(
emp_novarchar(8)notnull,
deparment_idchar(4)notnull,
jibengognzifloatdefault1500,
zhufangbutiefloat,--住房补贴
gz_monthvarchar(10)notnull,
jiaban_jiangjinfloat,--奖惩
kaoqin_gongzifloat,--津贴
gonghuihuifeifloat,--工会会费
zhfgjjinfloat,--住房公积金
yanglaobaoxianfloat,--养老保险
wagecountas
jibengongzi+zhufangbutie+jiaban_jiangjin+kaoqin_gongzi+gonghuihuifei+zhfgjjin+yanglaobaoxian
constrainte_gprimarykey(emp_no,gz_month)
)
go
--插入数据
insert员工values('20070101','狄一','男','1985-1-1','2007-1-1','01','部长','团员','否','1234567890')
insert员工values('20070102','狄二','女','1985-1-2','2007-1-2','01','员工','党员','否','1234567891')
insert部门values('01','人事部','狄一','20')
insert部门values('02','财务部','狄六','10')
insert考勤values('20070101','200905','0',0)
insert考勤values('20070101','200906','2',-60)
insert津贴values('20070101','20000905','05',15)
insert津贴values('20070101','20000906','0',0)
insert基本工资values('员工',1500)
insert基本工资values('组长',2000)
insert月工资values('20070101','01',2000,0,'20000905',0,15,0,0,0)
insert月工资values('20070102','01',1500,0,'20000905',-30,0,0,0,0)
go
--创建、绑定默认值
createdefaultgongzi_defaas0
execsp_bindefaultgongzi_defa,'考勤.kaoqin_gongzi'
execsp_bindefaultgongzi_defa,'津贴.jiaban_jiangjin'
execsp_bindefaultgongzi_defa,'月工资.gonghuihuifei'
execsp_bindefaultgongzi_defa,'月工资.zhfgjjin'
execsp_bindefaultgongzi_defa,'月工资.yanglaobaoxian'
execsp_bindefaultgongzi_defa,'月工资.zhufangbutie'
六、设计和创建存储过程
--创建存储过程
--a.存储过程查询员工基本信息
createprocygxx2
@yg_idvarchar(10)
as
select*from员工whereemp_no=@yg_id
--b.存储过程查询指定某个部门或全部部门的基本信息
createprocbumen2
@bumen_id2varchar(4)
as
select*from部门wheredepartment_id=@bumen_id2
createprocbumenq
as
select*from部门
--c.存储过程查询某个员工的工资信息
createprocgzxx
@yg_idvarchar(10)
as
select*from月工资
whereepm_no=@yg_id
--d.汇总部门月份工资
createprocgzhz
@dep_idvarchar(4),@month_yearvarchar(10)
as
selectdepartment_id,gz_monthfrom月工资
wheredepartment_id=@dep_idandgz_month=@month_year
orderbydepartment_id,gz_month
--e.汇总工资总和
createprocsum_sum
as
selectdepartment_name,gz_month,sum(wagecount)from部门,月工资
where部门.department_id=月工资.department_id
groupbydepartment_name,gz_month
七、设计和创建函数
--创建函数
--a.函数查询员工基本信息
createfunctionygxx(@yg_idvarchar(10))
returnstable
as
return(select*from员工whereemp_no=@yg_id)
--b.函数查询部门信息
createfunctionbumen(@bumen_idvarchar(4))
returnstable
as
return(select*from部门wheredepartment_id=@bumen_id)
八、设计和创建触发器
--创建触发器
--a.员工表中删除一条信息,其他表相应员工信息删除
createtriggeremon员工
fordelete
as
deletefrom考勤whereemp_noin(selectemp_nofromdeleted)
deletefrom津贴whereemp_noin(selectemp_nofromdeleted)
deletefrom月工资whereemp_noin(selectemp_nofromdeleted)
--b.一个部门删除,此部门中的员工信息删除
createtriggerbmon部门
fordelete
as
deletefrom员工wheredepartment_idin(selectdepartment_idfromdeleted)
--c.员工职务变动,基本工资改变
createtriggerjbgzon员工
forupdate,insert
as
declare@qvarchar(12)
declare@mvarchar(12)
declare@sfloat
select@q=emp_nofromdeleted
select@m=zhiwufrominserted
select@s=jibengongzifrom基本工资wherezhiwu=@m
update月工资
setjibengongzi=@swhere月工资.emp_no=@q
九、总结
(一)人员分工情况
组内人员
负责任务
ER图的编写及相关实体集的描述;搜集数据并插入
对整个系统功能进行划分;创建数据库及数据表
将ER模型转化为关系模式;将系统模型表格化;设计并创建存储过程;系统调试
任务分工;系统函数和触发器的设计及创建;系统调试;撰写报告论文
(二)收获及体会
尽管完成了此次老师布置的期末大作业,但由于时间仓促,所以只满足了部分作业要求,而且并没有过多考虑到系统的技术含量,以及在后期调试过程中出现的部分问题依旧没有很好地解决。
但是在这过程中,我们对于遇到的问题进行了积极地探讨,虽然有些问题最终也没有很好地解决,但是却使我们小组的成员更加熟练地掌握了MicrosoftSQLServer数据库的应用,积累了一定的系统开发经验,使我们对系统开发的知识有了更深刻的理解、更贴切的感受。
同时,通过这次大作业,我们也发现了许多自身的问题。
例如:
对基本的SQL语句掌握不牢固,通过翻阅教材后才能编写。
同时我们对许多原来不太清楚的知识点有了更进一步的了解,写代码的时候一定要细心,注意代码中的一切标点符号都要用英文,创建存储过程时,需要用到变量的要先声明变量,创建了外键约束时,要先对不被约束的表进行操作。