1、数据库课程设计 工资管理系统课程设计要求:1对各个系统进行系统功能需求分析2. 数据库设计分析阶段,进行详细的数据库需求分析,进行概念数据库的设计,画出数据库的E-R图(局部和整体E-R图)3. 设计出详细的逻辑数据库结构,将各个实体和联系转化为相应的二维表即关系模式,指定各个关系的主关键字和外部关键字,并对各个关系的约束加以限定4. 通过企业管理器或是查询分析器实现各个二维关系(建议最好用SQL代码实现),要求建立相关的索引5. 根据系统功能需求设计相应的查询视图6. 要求根据系统功能需求建立存储过程7. 根据功能需求建立相应的触发器以保证数据的一致性8. 通过建立用户和权限分配实现数据库一
2、定的安全性,考虑数据库的备份与恢复(此内容选作)一、需求分析企业的工资管理是公司管理的一个重要内容。随着科学技术的发展,一些公司的规模也越来越大,职工的数量也在不断的增加,企业的管理工作也变得越来越复杂。工资管理既涉及到企业劳动人事的管理,同时也是企业财务的重要组成部分。面对如此大的信息量,单凭传统的表格、手工操作已不能满足实际的需要。因此,我设计工资管理系统来提高财务管理方面的效率。通过这个系统可以使信息的管理更加规范,统计更科学。 模块功能分析:(1)部门模块:用来管理部门;(2)工资模块:用来管理员工的工资;(3)职工模块:用来管理工厂的职工信息;二、概念结构设计 经分析,本系统的e-r
3、图如下:三、逻辑结构设计1工资管理基本信息表department(部门)列名数据类型长度是否允许空备注department_no(部门号)char8否主关键字department_name(部门名)char15否depart_manage(部门经理)char6否depart_people(部门人数)int6否 staff(职工)列名数据类型长度是否允许空备注staff_no(职工号)char10否主关键字staff_name(职工姓名)char 20 否staff_sex(职工姓别)char25否默认”男”Enducational(学历)char10否dapartment_no(部门号)cha
4、r8否department_name(部门名称)char15否salary(工资)列名数据类型长度是否允许空备注staff_no(职工工号)char10否外键m_salary(月薪)int6否默认3000Allowance(津贴)int10是默认0out_days(出勤天数)int2否out_days=0work_overtim(加班时间)datetime10是w_overtime_days(加班天数)int2否默认0w_overtime_days=0 and w_overtime_days=31Deduct(事故扣薪)int4否默认0issue_salary(应发薪水)int4否iss_sa
5、lary(实发薪水)Int4否建库create database salary_manageon(name=salary_manage_data, filename=d:salary_manage_data.mdf, size=25, maxsize=35, filegrowth=5)log on(name=manage_log, filename=d:salary_manage_data.ldf, size=25, maxsize=35, filegrowth=5)建表/建立职工表/create table staff(staff_no char(10) primary key,/*职工工号
6、*/ staff_name char(20) not null,/*职工姓名*/ staff_sex char(25) not null default 男check( staff_sex 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
7、staff(staff_no),/*职工工号*/ m_salary int default 3000,/*月薪*/ allowance int default 0,/*津贴*/ out_days int not null check(out_days=0),/*出勤天数*/ work_overtime datetime(10),/*加班时间*/ w_overtime_days int default 0 check(w_overtime_days=0 and w_overtime_days3000 and salary.staff_no=staff.staff_noorder by salar
8、y.staff_noselect staff_no,staff_name from staff where staff_name like 刘%; 2、数据更新 插入(前面已插入) 修改update salary set iss_salary =1.2*iss_salary where iss_salary2600; 删除delete from staff where enducational=专科;3索引 建立索引create index jon salary(staff_no,issue_salary,iss_salary)create unique index index_staffon
9、 staff(staff_name)create unique index index_departon department(depart_people) 查询索引exec sp_helpindex salaryexec sp_helpindex staffexec sp_helpindex department 修改索引exec sp_rename salary.j,salary_index 删除索引drop index index4视图 创建视图create view table_salary(staff_no ,staff_name,issue_salary,iss_salary)as
10、 select salary.staff_no,staff_name,issue_salary,iss_salaryfrom salary,staffwhere salary.staff_no=staff.staff_no 查找视图select * from table_salary/*修改视图*/Alter view table_salary(staff_no ,staff_name ,department_name,issue_salary,iss_salary)as select salary.staff_no,staff_name,department_name,issue_salar
11、y,iss_salaryfrom salary,staffwhere salary.staff_no=staff.staff_no; 删除视图drop view table_salary5.存储过程 创建存储过程。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)as insert into staff values(staff_no
12、,staff_name,staff_sex,enducational,department_no,department_name)update departmentset depart_people=depart_people+1where department_no=department_nocreate procedure pro_salaryas(m_salary int, allowance int, add_money int, deduct int4、咀嚼馒头的外皮也可以感觉到甜味吗?为什么? )一、填空:asupdate salary 2、1969年7月,美国的“阿波罗11号”载
13、人飞船成功地在月球上着陆。set iss_salary = (m_salary + allowance+add_money- deduct )where m_salary=m_salary and allowance=allowance and add_money=add_money and deduct=deduct第三单元 宇 宙12、淡水在自来水厂中除了沉淀和过滤之外,还要加入药物进行灭菌处理,这样才能符合我们使用的标准。 查看存储过程exec sp_helptext pro_staff二、问答:exec sp_helptext pro_salary18、建立自然保护区是保护生物多样性的
14、有效方法,我国的九寨沟、长白山、四川卧龙等地都建立了自然保护区,自然保护区为物种的生存、繁衍提供了良好的场所。 执行存储过程21、血液中的细胞好像运输兵,负责运输吸入的氧气和产生的二氧化碳。exec pro_staff staff_no=0614,staff_name=王敏,staff_sex=女, enducational=本答:无色无味,比空气重,不支持燃烧。科,department_no=071011, department_name=A部门;一、填空:删除存储过程drop procedure pro_staff6触发器 创建触发器create trigger m on salaryfo
15、r update as if update(m_salary)begin rollback transaction print月薪不能修改,请联系财务科endCREATE TRIGGER TRI_salaryON salaryFOR update,insertAS BEGIN update salary set add_money=(w_overtime_days*50) update salary set issue_salary = m_salary update salary set iss_salary = (m_salary+allowance+add_money - deduct
16、) END create trigger tri_departmenton department for insertasdeclare staff_no char(8)declare department_no char(15)update departmentset depart_people=depart_people+1where department_no=department_nocreate trigger tri_changeon stafffor deleteasbegin deletefrom salarywhere salary.staff_no=any(select s
17、taff_no from deleted)update departmentset depart_people=depart_people-1where department_no=any(select department_no from deleted)end 触发器的删除 drop trigger tri_department;7用户与权限/*创建登陆账号*/exec sp_addlogin zhangsan,1234,salary_manage,null/*把用户加入到数据库中*/exec sp_adduser zhangsan/*删除登陆账号*/exec sp_droplogin z
18、hangsan/*系统权限*/grant create tableto zhangsan/*收回系统权限*/revoke create tablefrom zhangsan/*对象权限*/grant allon staffto zhangsanwith grant optiongrant selecton salaryto public/*收回系对象权限*/revoke select on salaryfrom zhangsan五实验总结本报告主要介绍的是对自建的一个工资管理系统数据库,利用在数据库中的表、存储过程、视图、约束等组合,设计出比较实用的应用软件代码;对表中的信息能够进行简单的查询
19、,子查询,视图的创建、修改与删除,与约束的创建,存储过程与触发器的创建与删除等基本操作,加深对SQL Server数据库的进一步研究。通过这次实训,是我对SQL 有了进一步了解,虽然在此期间遇到过麻烦,但通过查阅资料与尝试解决问题,使我更加了解SQL的基础知识,从中学到了新知识。六心得体会通过这次的课程设计实验,我发现自己对数据库课程的兴趣有了很大提高,而且对课本的知识更加的了解并有了一定的掌握,通过实验我懂得了如何创建索引、视图、存储过程以及触发器。以前不懂为何要创建触发器、视图等,现在终于知道它们的优点了。 在自己没做数据库课程设计以前,总是觉得自己什么都不懂什么都不会,但是现在做出来了,所以我觉得自己还是有能力做一些实际操作方面的东西。我相信以后通过自己自学其它课程,我一定会做出一个更好的数据库。七、参考资料 1陈志泊编。数据库原理与应用教程(第二版)。人民邮电出版社
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1