数据库课程设计工资管理系统Word文档格式.docx
《数据库课程设计工资管理系统Word文档格式.docx》由会员分享,可在线阅读,更多相关《数据库课程设计工资管理系统Word文档格式.docx(11页珍藏版)》请在冰豆网上搜索。
号
加班
事故
出勤
应发
工资
三、逻辑结构设计
1.工资管理基本信息表
①department(部门)
列名
数据类型
长度
是否允许空
备注
departmentno
(部门号)
char
8
否
主关键字
department_name
(部门名)
15
depart_manage
(部门经理)
6
depart_people
(部门人数)
int
②staff(职工)
数据
类型
备注
staff_no(职工号)
10
主关
键字
staff_name
(职工姓名)
20
staff_sex
(职工姓别)
25
默认”男”
Enducational
(学历)
dapartment_no
(部门名称)
③salary(工资)
类
据数型
长度
是否允
许空
staffno
(职工工号)
外键
msalary(月薪)
默认3000
Allowance
(津贴)
是
默认0
out_days
(出勤天数)
2
out_days<
=31andoutdays>
=0
workovertim(加班时间)
datetime
w_overtime_days
(加班天数)
默认0w_overtime_days>
=0and
wovertimedays<
=31
Deduct(事故扣薪)
4
issue_salary
(应发薪水)
iss_salary
(实发薪水)
Int
①建库
createdatabasesalary_manage
on
(name=salary_manage_data,
filename='
d:
\salary_manage_data.mdf'
size=25,
maxsize=35,filegrowth=5)
logon
(name=manage_log,filename='
\salary_manage_data.ldf'
size=25,maxsize=35,
filegrowth=5)
②建表
/建立职工表/createtablestaff
(staff_nochar(10)primarykey,/*职工工号*/
staff_namechar(20)notnull,/*职工姓名*/
staff_sexchar(25)notnulldefault男'
'
check(staff_sexin(男'
'
女'
)),/*性别*/enducationalchar(10)default本'
科'
/*学历*/
dapartment_nochar(8)notnull,/*部门编号*/department_namechar(15))/*部门名称*/
/*建立工资表*/
createtablesalary
(staff_nochar(10)notnullforeignkeyreferencesstaff(staff_no),职/*工工号*/m_salaryintdefault3000,/*月薪*/
allowanceintdefault0,/*津贴*/
out_daysintnotnullcheck(out_days<
=31andout_days>
=0),出/*勤天数*/work_overtimedatetime(10),/*加班时间*/
w_overtime_daysintdefault0check(w_overtime_days>
w_overtime_days<
=31),/*加班天数*/
deductintdefault0,/*事故扣薪*/
add_moneyintdefault0,/*加班费*/
issue_salaryint(4)notnull,/*应发薪水*/
iss_salaryint(4)notnull)/*实发薪水*/
/*建立部门表*/
createtabledepartment
(department_nochar(8)primarykey,/*部门编号*/department_namechar(15)notnull,/*部门名称*/depart_managechar(6)notnull,/*部门经理*/depart_peopleint(6)/*部门人数*/
③添加记录
insertintodepartmentvalues('
071011'
A部门'
王经理'
100);
071012'
B部门'
李经理'
200);
071013'
C部门'
张经理'
insertintostaffvalues('
0610'
李明'
男'
本科'
A部门'
);
insertintostaff
values('
0613'
张三'
专科'
0611'
刘丽'
B部门'
0612'
张新'
C部门'
insertintosalaryvalues('
3000,100,30,'
2011-10-8'
2,50,0,3000,3200);
3000,0,20,'
'
0,0,500,3000,2500);
3000,100,31,'
2011-10-10'
1,50,0,3000,3150);
四、功能处理
1、查询
1表查询
select*fromdepartment/*查询部门表*/
select*fromstaff/*查询职工表*/
select*fromsalary/*查询工资表*/
2数据查询
selectsalary.staff_no,staff_name,issue_salary,iss_salary
fromsalary,staff
whereiss_salary>
3000andsalary.staff_no=staff.staff_noorderbysalary.staff_no
selectstaff_no,staff_namefromstaffwherestaff_namelike刘'
%'
;
2、数据更新
1插入(前面已插入)
2修改
updatesalary
setiss_salary=1.2*iss_salarywhereiss_salary<
2600;
3删除
deletefromstaff
whereenducational=专'
科'
3.索引
1建立索引
createindexj
onsalary(staff_no,issue_salary,iss_salary)
createuniqueindexindex_staffonstaff(staff_name)
createuniqueindexindex_depart
ondepartment(depart_people)
2查询索引
execsp_helpindexsalary
execsp_helpindexstaff
execsp_helpindexdepartment
3修改索引
execsp_rename'
salary.j'
salary_index'
④删除索引
dropindexindex
4.视图
①创建视图
createviewtable_salary(staff_no,staff_name,issue_salary,iss_salary)asselectsalary.staff_no,staff_name,issue_salary,iss_salaryfromsalary,staff
wheresalary.staff_no=staff.staff_no
②查找视图select*fromtable_salary
③/*修改视图*/
Alterviewtable_salary
(staff_no,staff_name,department_name,issue_salary,iss_salary)
asselect
salary.staff_no,staff_name,department_name,issue_salary,iss_salary
wheresalary.staff_no=staff.staff_no;
4删除视图dropviewtable_salary
5.存储过程
①创建存储过程。
createprocedurepro_staff
(@staff_nochar(10),
@staff_namechar(25),
@staff_sexchar(25),
@enducationalchar(10),
@department_nochar(8),
@department_namechar(15))
as
insertintostaffvalues(@staff_no,@staff_name,@staff_sex,@enducational,@department_no,@department_name)
updatedepartment
setdepart_people=depart_people+1
wheredepartment_no=@department_nocreateprocedurepro_salary
(@m_salaryint,
@allowanceint,
@add_moneyint,
@deductint
setiss_salary=(@m_salary+@allowance+@add_money-@deduct)
wherem_salary=@m_salaryandallowance=@allowanceand
add_money=@add_moneyanddeduct=@deduct
②查看存储过程execsp_helptextpro_staffexecsp_helptextpro_salary
3执行存储过程
execpro_staff@staff_no='
0614'
@staff_name='
王敏'
@staff_sex='
女'
@enducational='
本
科'
@department_no='
@department_name='
A部门'
4删除存储过程dropprocedurepro_staff
6.触发器
①创建触发器createtriggermonsalaryforupdateasifupdate(m_salary)beginrollbacktransactionprint'
月薪不能修改,请联系财务科end
CREATETRIGGERTRI_salary
ONsalary
FORupdate,insert
AS
BEGIN
updatesalarysetadd_money=(w_overtime_days*50)
updatesalarysetissue_salary=m_salary
updatesalarysetiss_salary=(m_salary+allowance+add_money-deduct)
END
createtriggertri_department
ondepartment
forinsert
declare@staff_nochar(8)
declare@department_nochar(15)updatedepartment
setdepart_people=depart_people+1wheredepartment_no=@department_nocreatetriggertri_change
onstaff
fordelete
begin
delete
fromsalary
wheresalary.staff_no=any(selectstaff_nofromdeleted)updatedepartment
setdepart_people=depart_people-1
wheredepartment_no=any(selectdepartment_nofromdeleted)end
②触发器的删除droptriggertri_department;
7.用户与权限
/*创建登陆账号*/
/*把用户加入到数据库中*/execsp_adduser'
zhangsan'
/*删除登陆账号*/
execsp_droplogin'
/*系统权限*/
grantcreatetable
tozhangsan
/*收回系统权限*/revokecreatetable
fromzhangsan
/*对象权限*/
grantall
withgrantoption
grantselect
onsalary
topublic
/*收回系对象权限*/revokeselectonsalary
五.实验总结本报告主要介绍的是对自建的一个工资管理系统数据库,利用在数据库中的表、存储过程、视图、约束等组合,设计出比较实用的应用软件代码;
对表中的信息能够进行简单的查询,子查询,视图的创建、修改与删除,与约束的创建,存储过程与触发器的创建与删除等基本操作,加深对SQLServer数据库的进步研究。
通过这次实训,是我对SQL有了进一步了解,虽然在此期间遇到过麻烦,但通过查阅资料与尝试解决问题,使我更加了解SQL的基础知识,从中学到了新知识。
六.心得体会
通过这次的课程设计实验,我发现自己对数据库课程的兴趣有了很大提高,而且对课本的知识更加的了解并有了一定的掌握,通过实验我懂得了如何创建索引、视图、存储过程以及触发器。
以前不懂为何要创建触发器、视图等,现在终于知道它们的优点了。
在自己没做数据库课程设计以前,总是觉得自己什么都不懂什么都不
会,但是现在做出来了,所以我觉得自己还是有能力做一些实际操作方面的东
西。
我相信以后通过自己自学其它课程,我一定会做出一个更好的数据库。
七、参考资料
1.陈志泊编。
数据库原理与应用教程(第二版)。
人民邮电出版社