1、号加班事故出勤应发工资三、 逻辑结构设计1 工资管理基本信息表 department( 部门 )列名数据 类型长 度是否 允许 空备 注department no(部门号)char8否主 关 键 字department_name(部门名)15depart_manage(部门经理)6depart_people(部门人数)int staff( 职工 )数据类型备注staff_no (职工号)10主关键字staff_name(职工姓名)20staff_sex(职工姓别)25默认 ”男”Enducational(学历)dapartment_no(部门名称) salary( 工资)类据 数型长度是否允许
2、空staff no(职工工号 )外键m salary (月薪)默认 3000Allowance(津贴)是默认 0out_days(出勤天数)2out_days=0work overtim (加班时间)datetimew_overtime_days(加班天数)默认 0 w_overtime_days=0 andw overtime days=31Deduct (事故扣薪)4issue_salary(应发薪水)iss_salary(实发薪水)Int建库create database salary_manageon(name=salary_manage_data,filename=d:salary_
3、manage_data.mdf, size=25,maxsize=35, filegrowth=5)log on(name=manage_log, filename=salary_manage_data.ldf,size=25, maxsize=35,filegrowth=5)建表/建立职工表 / create table staff(staff_no char(10) primary key,/*职工工号 */staff_name char(20) not null,/*职工姓名 */staff_sex char(25) not null default 男 check( staff_sex
4、 in(男,女),/*性别 */ enducational char(10) default 本 科,/* 学历*/dapartment_no char(8) not null,/*部门编号 */ department_name char(15)/*部门名称 */* 建立工资表 */create table salary(staff_no char(10) not null foreign key references staff(staff_no),职/*工工号 */ m_salary int default 3000,/*月薪 */allowance int default 0,/*津贴
5、*/out_days int not null check(out_days=0),出/*勤天数 */ work_overtime datetime(10),/*加班时间 */w_overtime_days int default 0 check(w_overtime_daysw_overtime_days3000 and salary.staff_no=staff.staff_no order by salary.staff_noselect staff_no,staff_name from staff where staff_name like 刘 %;2、数据更新1插入(前面已插入)2修
6、改update salaryset iss_salary =1.2*iss_salary where iss_salary2600;3删除delete from staffwhere enducational=专 科 3索引1建立索引create index jon salary(staff_no,issue_salary,iss_salary)create unique index index_staff on staff(staff_name)create unique index index_departon department(depart_people)2查询索引exec sp_h
7、elpindex salaryexec sp_helpindex staffexec sp_helpindex department3修改索引exec sp_rename salary.jsalary_index 删除索引drop index index4视图 创建视图create view table_salary(staff_no ,staff_name,issue_salary,iss_salary) as select salary.staff_no,staff_name,issue_salary,iss_salary from salary,staffwhere salary.sta
8、ff_no=staff.staff_no 查找视图 select * from table_salary/*修改视图 */Alter view table_salary(staff_no ,staff_name ,department_name,issue_salary,iss_salary)as selectsalary.staff_no,staff_name,department_name,issue_salary,iss_salarywhere salary.staff_no=staff.staff_no;4删除视图 drop view table_salary5.存储过程 创建存储过程
9、。create procedure pro_staff(staff_no char(10),staff_name char(25),staff_sex char(25),enducational char(10),department_no char(8),department_name char(15)asinsert into staff values (staff_no,staff_name,staff_sex,enducational,department_n o,department_name)update departmentset depart_people=depart_peo
10、ple+1where department_no=department_no create procedure pro_salary(m_salary int,allowance int,add_money int,deduct intset iss_salary = (m_salary + allowance+add_money- deduct )where m_salary=m_salary and allowance=allowance andadd_money=add_money and deduct=deduct 查看存储过程 exec sp_helptext pro_staff e
11、xec sp_helptext pro_salary3执行存储过程exec pro_staff staff_no=0614,staff_name=王敏 ,staff_sex= 女 , enducational=本科,department_no=, department_name=A部门 4删除存储过程 drop procedure pro_staff6触发器 创建触发器 create trigger m on salary for update as if update(m_salary) begin rollback transaction print 月薪不能修改,请联系财务科 endCR
12、EATE TRIGGER TRI_salaryON salaryFOR update,insertASBEGINupdate salary set add_money=(w_overtime_days*50)update salary set issue_salary = m_salaryupdate salary set iss_salary = (m_salary+allowance+add_money- deduct )ENDcreate trigger tri_departmenton departmentfor insertdeclare staff_no char(8)declar
13、e department_no char(15) update departmentset depart_people=depart_people+1 where department_no=department_no create trigger tri_changeon stafffor deletebegindeletefrom salarywhere salary.staff_no=any(select staff_no from deleted) update departmentset depart_people=depart_people-1where department_no
14、=any(select department_no from deleted) end 触发器的删除 drop trigger tri_department;7用户与权限/* 创建登陆账号 */* 把用户加入到数据库中 */ exec sp_adduser zhangsan/* 删除登陆账号 */exec sp_droplogin /* 系统权限 */grant create tableto zhangsan/* 收回系统权限 */ revoke create tablefrom zhangsan/* 对象权限 */grant allwith grant optiongrant selecto
15、n salaryto public/* 收回系对象权限 */ revoke select on salary五实验总结 本报告主要介绍的是对自建的一个工资管理系统数据库,利用在数据库中的表、 存储过程、视图、约束等组合,设计出比较实用的应用软件代码;对表中的信 息能够进行简单的查询,子查询,视图的创建、修改与删除,与约束的创建, 存储过程与触发器的创建与删除等基本操作,加深对 SQL Server 数据库的进 步研究。通过这次实训,是我对 SQL 有了进一步了解,虽然在此期间遇到过麻烦, 但通过查阅资料与尝试解决问题,使我更加了解 SQL的基础知识,从中学到了 新知识。六心得体会通过这次的课程设计实验,我发现自己对数据库课程的兴趣有了很大提高,而 且对课本的知识更加的了解并有了一定的掌握,通过实验我懂得了如何创建索 引、视图、存储过程以及触发器。以前不懂为何要创建触发器、视图等,现在 终于知道它们的优点了。在自己没做数据库课程设计以前,总是觉得自己什么都不懂什么都不会,但是现在做出来了,所以我觉得自己还是有能力做一些实际操作方面的东西。我相信以后通过自己自学其它课程,我一定会做出一个更好的数据库。七、 参考资料1陈志泊编。数据库原理与应用教程(第二版) 。人民邮电出版社
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1