1、目录一、项目名称:工资管理系统设计2二、实训目的:2三、应掌握的知识点2四、应训练的能力点2五、数据库设计内容3 (一)需求分析.3 (二)数据库概念设计.3 (三)数据库逻辑设计5 (四)数据库与数据表设计 物理结构设计5 1.数据库与数据表设计.5 2.数据完整性设计.6六、数据库操作实施与结果数据库对象的设计7 (一)建数据库工资管理库.7 (二)建表员工信息表、部门信息表、工资信息表.7 (三)视图.9(四)存储过程.9(五)触发器 10(六)索引11(七)运行和维护12 1. 关系图的建立.12 2. 简单查询.123. 复杂查询.154.数据库的用户与权限管理175.数据库的备份.
2、206.数据的导入与导出.21七、总结22八、评语.2322一、项目名称:工资管理系统设计二、实训目的:l 了解数据库系统的理论l 掌握数据库设计的基本方法,熟悉数据库设计的步骤;l 通过设计数据库系统应用课题,进一步熟悉数据库管理系统的操作技术,提高动手能力,提高分析问题和解决问题的能力l 学习基本数据库编程方法l 快速跟踪数据库系统软件的新技术及市场应用动态。三、应掌握的知识点l 数据库基本原理l 关系数据库的设计方法、设计思路l 初步掌握一种关系数据库语言四、应训练的能力点l SQL Server 2000的操作与使用l 数据库的概念设计与逻辑设计l 数据库的建立与管理、数据表的建立与操
3、作l SQL查询语言的使用与编程l 设计和开发一个数据库应用系统的数据库设计部分五、数据库设计内容(一)需求分析本系统要求实现以下主要功能:1.数据录入功能 主要任务是对各种工资信息进行日常的管理,如工资信息的输入、查询、修改、增加、删除,迅速准确地完成各种工资信息的统计计算和汇总,快速打印出报表。2.数据查询功能系统需要提供以下查询功能:1) 员工考勤情况2) 员工工种情况,反映员工的工种、等级,岗位工资等信息3) 员工津贴信息情况,反映员工的加班时间,加班类别、加班天数、岗位补贴情况等4) 员工基本信息情况5) 员工月工资情况:年,月,职工号,姓名,部门名,基本工资,病假扣款,事假扣款,3
4、.应发工资,实发工资3.数据统计功能1) 统计员工年终奖金2) 统计每部门月工资情况(二)数据库概念设计分析前面的系统功能要求,需要一个表来存储和管理员工信息,使系统能够接受员工原始的各项数据,以实现数据录入、查询或统计员工信息等功能。员工是本系统的第一个实体。为了能实现查询和统计部门内员工情况等功能,必须有一个表来存储和管理所有部门的信息。部门是本系统的第二个实体。工资是以员工工作情况来制定的。需要建立一个表来记录各种工资、津贴、扣款的信息。它主要为各种查询和统计功能提供工资数据。工资是第3个实体。据此可以绘出工资管理系统数据库的E-R图如下:部门 1工作 N 获得工资员工 M M 1实体属
5、性列表如下:实体属性员工工号姓名性别年龄籍贯身份证号婚姻状况学历部门名称工种工龄职务等级部门部门名称部门负责人部门人数工资工号工资年月岗位工资岗位补贴出勤天数加班工时加班天数加班类别加班工资病假扣款事假扣款其他扣款应发工资实发工资(三)数据库逻辑设计将数据库的概念模型转换为关系模型:实体转换成的关系模式有:员工(工号,姓名,性别,年龄,籍贯,身份证号,婚姻状况,学历,部门名称,工种,工龄,职务等级)部门(部门编号,部门名称,部门负责人,部门人数)获得(工号,姓名)工资(工号,工资年月,岗位工资,岗位补贴,出勤天数,加班工时,加班工资,加班天数,加班类别,病假扣除,事假扣除,其它扣除,应发工资,
6、实发工资)因为,员工与工资是1:N的关系,所以各关系模式为:员工(工号,姓名,性别,年龄,籍贯,身份证号,婚姻状况,学历,部门名称,工种,工龄,职务等级)部门(部门名称,部门负责人,部门人数)工资(工号,工资年月,岗位工资,岗位补贴,出勤天数,加班工时,加班工资,加班天数,加班类别,病假扣除,事假扣除,其它扣除,应发工资,实发工资)带下划线的属性为各关系模式的外码,字体为粗体的属性为各关系模式的主码。关系规范式 :工资管理系统1NF 每个属性均不可再分(四)数据库与数据表设计 物理结构设计在SQL数据库中需要建立3个数据表:员工信息数据表、部门信息数据表和工资数据表。1.数据库与数据表设计员工
7、信息数据表定义 其中,“工号”是表的主键,惟一标识。“部门名称”是外键。“工号”将记录员工的编号,在员工信息表中增加这一列时,虽然增加了数据冗余,但可以在查询每个员工信息时,提高系统的性能。因为员工信息表的记录数相对固定,相比之下,增加这个冗余的列对于整个系统来说是有利的。通过它,系统将引用到工资信息。此表取名为“员工” 部门信息数据表定义 其中,部门名称是该表的主键,惟一标识一个部门。此表取名为“部门”工资数据表定义其中,“工号”作为该表的主键,唯一标识,保证客房信息表数据的参照完整性。此表表取名为“工资”根据上面三个数据表的设计,可执行下面的步骤创建数据表 1)打开企业管理器,在本地服务器
8、上创建新的数据库“工资管理库”2)创建表 员工、部门、工资2.数据完整性设计1)给每个表实施主键约束。主键约束、非空值约束员工:工号为主键,所以此项非空部门:部门名称为主键,所以此项非空工资:工号为主键,所以此项非空2)实施CHECK约束l 员工表中建立一个检查约束,即员工性别不是男就是女CHECK(性别 IN(男,女)l 工资表中建立一个对于出勤天数的检查约束,即出勤天数在0-20天之间 check (出勤天数 =0 and 出勤天数05)按照不同工种的基本工资情况、员工的考勤情况产生员工的每月的月工资;代码如下:select 工种,职务等级,岗位工资,出勤天数,实发工资from 员工,工资
9、WHERE 员工.工号=工资.工号;6)员工津贴信息情况,反映员工的加班时间,加班类别、加班天数、津贴情况等;代码如下:select 员工.工号,员工.姓名,加班工时,加班天数,加班类别,加班工资from 工资,员工WHERE 员工.工号=工资.工号;3复杂查询1)员工年终奖金的生成,员工的年终奖金计算公式(员工本年度的工资总和津贴的总和)/12;代码如下:Select 姓名,avg(应发工资+岗位补贴+加班工资)from 工资,员工where 工资.工号=员工.工号group by 姓名2)企业内财务部的工资情况查询:代码如下:select 员工.工号,姓名,职务等级,实发工资 from 工
10、资,员工 where 工资.工号=员工.工号 AND 部门名称=财务部3)企业工资报表。能够查询单个员工的工资情况代码如下:select 工号,工资年月,岗位工资,病假扣款,事假扣款,应发工资,实发工资from 工资,员工WHERE 工资.工号=员工.工号 AND 姓名 LIKE 闵%;4)每个部门的工资情况,按月的工资统计代码如下:Select 部门名称,avg(实发工资)from 工资,员工 where 工资.工号=员工.工号group by 部门名称5)员工月工资情况:年,月,职工号,姓名,部门名,基本工资,病假扣款,事假扣款,应发工资,实发工资。代码如下:select 工资年月,员工.
11、工号, 姓名,部门名称,岗位工资,病假扣款,事假扣款,应发工资,实发工资from 工资,员工where 工资.工号=员工.工号; 4数据库的用户与权限管理(1)数据库的用户管理工资管理库的用户:Dbo用户属性:数据库登陆文件夹:Sa登陆属性建立新用户:用户名stu,密码1234(登录名login1) CREATE LOGIN login1 WITH PASSWORD = 1234;USE Master;CREATE USER stu FRO login1;GO (2)用户的权限管理a) 系统权限管理ll对象权限管理设置权限将员工表的录入、查询权限授予给了用户人事部部长GRANT INSERT,
12、SELECT ON 员工TO publicWITH GRANT OPTION5数据库的备份对工资管理库进行备份SQL sever 代理启动单击备份右键,进行数据库备份6.数据的导入与导出(1)数据的导出服务 进入Excel查看 (2)数据的导入服务七、总结经过一周的时间,在同学和老师的帮助下,基本完成本次课程设计,基本达到了工资管理系统的要求。这次数据库课程设计给我的最大的印象是:流程是一切的根本;架构是重要的,想像的还要重要;实践比一切空谈和理论更能学到东西。从做这个数据库开始无论遇到什么困难,我都没有一丝的放弃的念头。在设计过程中一定要慎重,仔细。来不得半点马虎。需求分析是整个课程设计的中心,考虑要全面,分析彻底。才会为后来的设计打下良好的基础。否则,前功尽弃,甚至不能完成任务。做实例过程中要注意与说明书中数据项数据类型,数据长度等的一致,命令中心输入任何命令都要谨记一条原则,那就是严格按照格式来,不能像平时在纸上作业。最后,再次感谢老师的耐心指导和同学的帮助,没有你们的无私教导和帮助,就没有今天的工资管理系统的实现,衷心感谢你们!