信息工程学院《数据库课程设计》论文题目:人事管理系统数据库设计以上三行均居中,其中:第一行为黑体小初号第二行为黑体二号第二行“题目:”为黑体二号,自己题目为楷体二号下划线页面为A4纸,四周边距均为2.5cm,正文小四号宋体,文档网格为40*40,文中表格标题为黑体5号居中,表格内容为5号宋体,图说为5号宋体。
页码居中、页眉为“**级**专业**班数据库课程设计课程论文”,页眉从正文开始才有。
以下冒号前为黑体三号,冒号后为楷体三号学号:2013012995专业班级:计算机132姓名:刘家顺指导老师:完成日期:2015.1.23此处为分节符不是分页符,本页无页码人事管理系统数据库设计刘家顺(信息工程学院计算机科学与技术13级2班)摘要在本次课程设计中,我所开发的是人事管理系统。
随着计算机网络的发展,人事档案方面管理越来越趋向于电子化和智能化,因此对人事管理系统的开发意义十分重大。
它主要用于企业的档案管理工作,一般应用于企业局域网,分布在公司各个部门由专人负责管理。
人事管理系统主要包含职工的个人情况,工作情况,简历等各方面信息。
主要是为人事档案进行服务,对人事的变动处理,有人事的资料、以及人事资料的查询和统计等功能。
该系统本着操作简洁、档案输入读取方便、安全性高的思想原则,总体实现了员工档案,工作管理,工资管理三个功能模块。
该系统的一大特色就是将对员工的管理和对系统各个子模块的管理分开,使得管理员的操作权限更加明确、合理化。
关键字:人事管理;员工;工作;工资目录1.需求分析 (1)2.数据库结构设计 (1)2.1 概念设计 (5)2.1.1 分E-R图建立 (5)2.1.2 全局/整体E-R图 (7)2.2 逻辑设计 (8)2.2.1 建立关系模式 (8)2.2.2 关系模式规范化处理...........................................................错误!未定义书签。
2.2.3 用户子模式建立 (9)2.2.4 关系模式逻辑结构定义 (10)3.数据库物理设计 (10)4.数据库实施与测试 (10)4.1 数据库实施 .....................................................................................错误!未定义书签。
4.1.1 数据库及数据库对象建立 ...................................................错误!未定义书签。
4.1.2 数据入库 ..............................................................................错误!未定义书签。
4.2 数据库测试 .....................................................................................错误!未定义书签。
5.总结 . (12)6.附录 (13)人事管理系统是针对现在公司的大量业务处理工作而开发的管理软件。
根据用户的要求实现人员基本情况管理、工资调整管理等几个方面的功能。
用户通过输入职工履历等基本信息,由系统自行生成相应的统计数据及各类统计报表以供用户查询、打印,另外操作人员还可以对这些基本信息进行定期的更新和删除, 人事管理系统力求给用户方便快捷的途径去管理这些繁琐的数据。
能够让企业带来先进的管理思想及方法、促进建立现代人事管理模式、促进人事管理正规化、帮助企业提高管理时效、帮助企业降低管理成本。
所有的管理的目标都是为了效益。
1.需求分析通过对现行人事管理系统的调查,明确了人事管理系统由档案管理、工作管理,工资管理组成。
数据流程图如下(1)人事管理系统顶层(2)人事管理系统一层:员工管理模块:工资管理模块:工作管理模块数据字典见附1。
主要包含了数据项,数据结构,数据流,逻辑处理,存储记录等部分。
2.数据库结构设计主要包括概念设计和逻辑设计两个部分。
2.1 概念设计根据系统需求分析,可以得出人事管理系统数据库的概念模型(信息模型),下图用E-R图表示的人事管理系统的概念模型。
2.1.1 分E-R图建立员工管理模块:工资管理模块:工作管理模块2.1.2 全局E-R图。
员工联系电话出生年月日毕业学校学历姓名年龄住址民族性别籍贯职工编号编制部门副经理人数部门经理人数下属员工人数出差记录出差地点出差日期出差记录编号出差时长请假记录请假记录编号请假日期请假时长请假类别考核成绩员工评价综合评价评价等级奖励上级评价培训记录培训日期培训类别培训时长培训评价培训记录编号调动记录调动记录编号原职位新部门调动时间原属部门新职位合同签约日期到期时间签约时长合同编号转正记录转正时间转正记录编号签约日期部门部门名称部门号部门经理加班记录加班时长加班记录编号加班日期奖惩记录奖惩类别批复部门批复时间奖惩记录编号净奖励金额福利旅游福利培训计划四金工作餐节假日通信补贴交通补贴长期服务津贴医疗补助计划慰问金健康体检补贴总计考勤记录当月出差天数当月加班天数当月迟到天数当月旷工天数当月应出勤天数考勤净奖励离职记录离职编号离职日期离职原因批假记录批假日期批假人批价编号岗位岗位编号基本工资岗位津贴岗位名称工资实发工资附加工资2.2 逻辑设计将人事管理系统的E-R 图转换为关系数据库的数据模型。
2.2.1 建立关系模式将人事管理系统的E-R 图转换为关系数据库的数据模型,其关系模式为: 员工(职工编号,担任职务,姓名,性别,民族,籍贯,毕业学校,学历,出生年月日,年龄,住址,联系电话)合同(合同编号,职工编号,签约日期,到期时间,签约时长) 岗位(岗位编号,岗位名称,所属部门,岗位津贴,基本工资)部门(部门号,部门名称,部门主管,部门经理人数,部门副经理人数,下属员工人数)离职记录(离职编号,离职职工,离职日期,离职原因) 转正记录(转正记录编号,转正员工,签约日期,转正时间)调动记录(调动记录编号,调动员工,原属部门,原职位,新部门,新职位,调动时间)请假记录(请假记录编号,请假人,请假日期,请假类别,请假时长) 批假记录(批假记录编号,请假记录编号,批假人,批价日期)出差记录(出差记录编号,出差人员,出差日期,出差时长,出差地点)加班记录(加班记录编号,加班人员,加班日期,加班时长)考勤记录(考勤记录编号,员工,当月应出勤天数,当月迟到天数,当月旷工天数,当月加班天数,考勤净奖励)工资(员工,基本工资,岗位津贴,附加工资,实发工资)福利(岗位号,四金,工作餐,节假日,医疗补助计划,慰问金,健康体检,长期服务津贴,交通补贴,通信补贴,培训计划,旅游福利,补贴总计)奖惩记录(奖惩记录编号,员工,奖惩类别,批复部门,批复时间,净奖励金额)培训记录(培训记录编号,员工,培训类型,培训日期,培训时长,培训评价)考核成绩(员工,上级评价,员工评价,综合评价,评价等级,奖励)2.2.3 用户子模式建立根据需求分析,研究建立满足不同需求的用户子模式,子模式表示形式为:合同到期提醒(合同编号,职工编号,姓名,性别,签约日期,到期时间,签约时长)请假信息(请假记录编号,职工编号,姓名,性别,所属部门,职位,请假日期,请假时长,请假类别)工资表(职工编号,姓名,性别,所属部门,职位,基本工资,岗位津贴,附加工资,实发工资)考勤统计(职工编号,姓名,性别,所属部门,职位,当月应出勤天数,当月旷工天数,当月迟到天数,当月出差天数,当月加班天数,考勤净奖励)培训信息(培训记录编号,职工编号,姓名,性别,培训日期,培训时长,培训类别,培训评价)业绩考核汇总(职工编号,姓名,性别,所属部门,职位,上级评价,员工评价,综合评价,评价等级)奖惩记录(职工编号,姓名,性别,所属部门,职位,奖惩类别,批复部门,批复时间,净奖励金额)2.2.4 关系模式逻辑结构定义关系模式名称含义备注Employee 员工附录2 附表1Covenant 合同附录2 附表2Post 岗位附录2 附表3 Department 部门附录2 附表4 RurnoverRecord 离职记录附录2 附表5 ProbationRecord 转正记录附录2 附表6 MobilizeRecord 调动记录附录2 附表7LeaveRecord 请假记录附录2 附表8 PermitRecord 批假记录附录2 附表9 TravelRecord 出差记录附录2附表10 OvertimeRecord 加班记录附录2 附表11 AttendanceRecord 考勤记录附录2 附表12 Wage 工资附录2 附表13Welfare 福利附录2 附表14RPRecord 奖惩记录附录2 附表15 TrainRecord 培训记录附录2 附表16Evaluation 考核成绩附录2 附表17 3.数据库物理设计对表 Employee 在属性列 Ename 上建立聚集索引,对表 Department 在属性列 DName 上建立聚集索引,对表 Leave 在属性列 Ename 上建立聚集索引。
4.数据库实施与测试主要包括数据库实施和测试两个部分。
4.1数据库及数据库对象建立主要包括:基本表、视图、索引、存储过程以及触发器;(见附3)4.2数据入库4.3 数据库测试(1)计算考勤净奖励执行count_checkreward(2)计算考核结果执行count_text和count_tect_fu;(3)计算工资执行count_wage(4)计算补贴总计执行count_welfare5.总结由于在数据库的设计初期,没有对人事管理系统进行准确地需求分析,导致后期设计过程中的数据库的概念设计阶段无法进行。
因此,通过此次数据库课程设计使学生认识到了需求分析对于软件系统设计的重要性。
也认识到规范化的设计流程对于后期的设计来说,是十分重要的。
前面的设计是后面的铺垫,只有对前面的设计过程进行准确地分析,才能节省整个系统的开发时间。
最后,通过此次数据库课程设计使学生初步理解了简单数据库的一般开发流程,以及数据流图和E-R图等专业图形地绘制。
6.附录附录1数据项Employee 员工职工编号+姓名+性别+民族+出生年月日+年龄+学历+毕业学校+籍贯+住址+联系电话Covenant 合同合同编号+职工编号+姓名+性别+签约日期+到期时间+签约时长Post 岗位部门号+职位AttendanceINF 考勤信息职工编号+姓名+性别+所属部门+职位+当月应出勤天数+当月旷工天数+当月迟到天数LeaveRecord 请假记录请假记录编号+职工编号+姓名+性别+所属部门+职位+请假日期+请假时长+请假类别RPRecord 奖惩记录奖惩记录编号+职工编号+姓名+性别+所属部门+职位+奖惩类别+批复部门+批复时间TrainRecord 培训记录培训记录编号+职工编号+姓名+性别+培训日期+培训时长+培训类别+培训评价PerformanceEVA 业绩评价职工编号+姓名+性别+所属部门+职位+上级评价+员工评价+综合评价+评价等级MobilizeRecord 调动记录调动记录编号+职工编号+姓名+性别+原属部门+原职位+新部门+新职位+调动时间Wage 工资职工编号+姓名+性别+所属部门+职位+基本工资+岗位津贴+附加工资+实发工资Welfare 福利部门号+职位+四金+工作餐+节假日+医疗补助计划+慰问金+健康体检+长期服务津贴+交通补贴+通信补贴+培训计划+旅游福利+补贴总计DepartmentINF 部门信息 部门号+部门名称+部门经理 Compile 部门编制 部门号+部门名称+部门经理人数+部门副经理人数+下属员工人数TravelRecord 出差记录 出差记录编号+职工编号+姓名+性别+所属部门+职位+出差日期+出差地点+出差时长OvertimeRecord 加班记录 加班记录编号+职工编号+姓名+性别+所属部门+职位+加班日期+加班时长EvaluationBasis 考核依据 部门号+职位+评价等级+奖励EmployeeRurnover 离职员工 离职编号+姓名+性别+民族+出生年月日+学历+毕业学校+籍贯+离职原因+离职日期Probation 转正提醒 职工编号+姓名+性别+签约日期+转正时间PermitRecord 批假记录 批假记录编号+职工编号+姓名+性别+所属部门+职位+请假日期+请假时长+请假类别+批假人 数据结构 附录2表 1 员工关系表2 合同关系模式属性名 含义 数据类型 长度 是否为主属性 是否为外键 约束条件 Enumber 职工编号 Varchar2 20 是 Not null Position 担任职务 Varchar2 20 Not null EName 姓名 Varchar2 30 Not null Gender 性别 Varchar2 2 {男,女} Nation 民族 Varchar2 10 Not null Hometown 籍贯 Varchar2 10 Not null School 毕业学校 Varchar2 20 Not null EDegree 学历 Varchar2 10 Not null Brith 出生年月日Date Not null Age 年龄 Number 16~70 Address住址Varchar2 50 Not null Telephone 联系电话 Varchar210是Not null属性名 含义 数据类型 长度 是否为主是否为约束条件表3岗位关系模式表4部门关系模式表5离职记录关系模式属性外键Cnumber 合同编号Varchar2 20 是Not null Enumber 职工编号Varchar2 20 是Not null Signingdate 签约日期DateMaturitydate 到期时间DateSigningDuration 签约时长Varchar2 10属性名含义数据类型长度是否为主属性是否为外键约束条件Pnumber 岗位编号Varchar2 20 是Not null Postname 岗位名称Varchar2 20 Not null Departement 所属部门Varchar2 10 是Not null Allowance 岗位津贴numberBasicwage 基本工资number 2000~5000属性名含义数据类型长度是否为主属性是否为外键约束条件Dnumber 部门号Varchar2 10 是Not null DName 部门名称Varchar2 20Manager 部门主管Varchar2 20 是ManagerNumber 部门经理人数numberVioceManagerNumber 部门副经理人数numberStaffNumber 下属员工人数number属性名含义数据类型长度是否为主属性是否为外键约束条件Tnumber 离职编号Varchar2 20 是Not null Enumber 离职职工Varchar2 20 是Not null Turnoverdate 离职日期date Not nullTurnoverreason 离职原因Varchar2 10{辞职,解雇,退休,非自然离职}表6转正记录关系模式表7调动记录关系模式表8请假记录关系模式表9批假记录关系模式属性名 含义 数据类型 长度 是否为主属性 是否为外键 约束条件 PRnumber 转正记录编号 Varchar2 20 是 Not null Enumber 转正员工 Varchar2 20 是 Not null Signingdate签约日期date Not null Probationdate 转正时间Varchar210属性名 含义 数据类型 长度 是否为主属性 是否为外键 约束条件 Mnumber 调动记录编号 Varchar2 20 是 Not null Enumber 调动员工 Varchar2 20 是 Not null OldDepartement 原属部门 Varchar2 10 是 Not null OldPost原职位Varchar2 20 是 Not null NewDepartement 新部门 Varchar2 10 是 Not null NewPost 新职位 Varchar2 20 是 Not null MobilizeDate调动时间Date属性名 含义 数据类型 长度 是否为主属性 是否为外键 约束条件 Vnumber 请假记录编号 Varchar2 20 是 Not null Enumber 请假人 Varchar2 20 是 Not null LeaveDate 请假日期 dateLeaveReason请假类别Varchar24{事假,病假} LeaveDuration 请假时长number属性名 含义 数据类型 长度 是否为主属性 是否为外键 约束条件 PEnumber 批假记录编号Varchar2 20 是 Not null Vnumber 请假记录编号 Varchar2 20 是 Enumber 批假人Varchar220表10 出差记录关系模式表11加班记录关系模式表12考勤记录关系模式PermitateDate 批价日期date属性名 含义 数据类型 长度 是否为主属性 是否为外键 约束条件 TRnumber 出差记录编号 Varchar2 20 是 Not null Enumber 出差人员 Varchar2 20 是 Not null TraveDate出差日期dateTraveDuration 出差时长 number TravePlace出差地点varchar210属性名 含义 数据类型 长度 是否为主属性 是否为外键 约束条件 Onumber 加班记录编号 Varchar2 20 是 Not null Enumber 加班人员 Varchar2 20 是 Not null OverDate加班日期dateOverDuration 加班时长number属性名 含义 数据类型 长度 是否为主属性 是否为外键 约束条件 Anumber 考勤记录编号 Varchar2 20 是 Not null Enumber 员工 Varchar2 20 是 Not null AttendanceDays 当月应出勤天数 number 20~31 LateDays 当月迟到天数number 0~31 AbsenteeismDays 当月旷工天数number 0~31 OvertimeDays 当月加班天数number 0~31 TraveDays 当月出差天数Number0~31 CheckReward考勤净奖励 number表13工资关系模式表14福利关系模式表15奖惩记录关系模式属性名 含义 数据类型 长度 是否为主属性 是否为外键 约束条件 Enumber 员工 Varchar2 20 是 Not null BasicWage基本工资number 2000~5000 AdditionalWage 附加工资 number Allowance 岗位津贴 number Wage 实发工资number属性名 含义 数据类型 长度 是否为主属性 是否为外键 约束条件 Pnumber 岗位号 Varchar2 20 是 Not null FourGold 四金 number WorkingMeal 工作餐 number Vacation 节假日 numberMedicaid 医疗补助计划 number Condolences 慰问金 number PhysicalExamination 健康体检 number ServicePayments 长期服务津贴 number TrafficSubsidy交通补贴number CommunicationAllowance 通信补贴 number Training 培训计划 number TourismBenefits 旅游福利 number TotalSubsidy补贴总计number属性名 含义 数据类型 长度 是否为主属性 是否为外键 约束条件 RPRnumber 奖惩记录编号 Varchar2 20 是 Not null Enumber 员工, Varchar2 20 是 Not null RewardCategories 奖惩类别Varchar212{大功,小功,表16培训记录关系模式表17考核成绩关系模式附录3基本表create table Employee(Enumber Varchar2(20) primary key,Position Varchar2(20) not null,EName Varchar2(30) not null,Gender Varchar2(2) check(Gender in ('男','女')), Nation Varchar2(10) not null,Hometown Varchar2(10) not null, 嘉奖,通报表扬,一次性奖金,开除,记大过,记小过,警告,通报批评,一次性罚款}ReplyDepartement 批复部门Varchar2 10 ReplyDate 批复时间date RewardMoney 净奖励金额number属性名含义数据类型长度是否为主属性是否为外键约束条件TRAnumber 培训记录编号Varchar2 20 是Not nullEnumber 员工Varchar2 20 是Not null TrainCategories 培训类型Varchar2 10TrainDate 培训日期dateTrainDuration 培训时长Varchar2 10TrainAssessment 培训评价Varchar2 6属性名含义数据类型长度是否为主属性是否为外键约束条件Enumber 员工Varchar2 20 是Not null SuperiorAssessment 上级评价number 0~100 StaffAssessment 员工评价number 0~100 Comprehensive 综合评价number 0~100 AssessmentClass 评价等级Varchar2 20Reward 奖励Varchar2 20School Varchar2(20) not null,EDegree Varchar2(10) not null,Brith Date not null,Address Varchar2(50) not null,Telephone Varchar2(11) not null);create table Covenant(Cnumber Varchar2(20) primary key,Enumber Varchar2(20) references Employee(Enumber) on delete cascade,Signingdate Date,Maturitydate Date,SigningDuration Varchar2(10));create table Departement(Dnumber Varchar2(10) primary key,DName Varchar2(20),Manager Varchar2(10) references Employee(Enumber),ManagerNumber number,VioceManagerNumber number,StaffNumber number);create table Position(Pnumber Varchar2(20) primary key,Postname Varchar2(20),Departement Varchar2(10) references Departement(Dnumber),Allowance number,Basicwage number check(Basicwage>=2000 and Basicwage<=5000));create table Turnover(Tnumber Varchar2(20) primary key,Enumber Varchar2(20),Turnoverdate date,Turnoverreason Varchar2(10) check(Turnoverreason in ('辞职','解雇','退休','非自然离职')) );create table Probation(PRnumber Varchar2(20) primary key,Enumber Varchar2(20) references Employee(Enumber) on delete cascade,Probationdate Varchar2(10));create table Mobilize(Mnumber Varchar2(20) primary key,Enumber Varchar2(20) references Employee(Enumber) on delete cascade, OldDepartement Varchar2(10) references Departement(Dnumber), OldPost Varchar2(20) references Position(Pnumber), NewDepartement Varchar2(10) references Departement(Dnumber), NewPost Varchar2(20) references Position(Pnumber),MobilizeDate date);create table Leave(Vnumber Varchar2(20) primary key,Enumber Varchar2(20) references Employee(Enumber) on delete cascade, LeaveDate date,LeaveReason Varchar2(4) check(LeaveReason in ('事假','病假')), LeaveDuration number);create table PermitLeave(PEnumber Varchar2(20) primary key,Vnumber Varchar2(20) references Leave(Vnumber),Enumber Varchar2(20) references Employee(Enumber) on delete cascade, PermitateDate date);create table Trave(TRnumber Varchar2(20) primary key,Enumber Varchar2(20) references Employee(Enumber) on delete cascade, TraveDate date,TraveDuration number,TravePlace varchar2(10));create table Overwork(Onumber Varchar2(20) primary key,Enumber Varchar2(20) references Employee(Enumber) on delete cascade,OverDuration number);create table Attendance(Anumber Varchar2(20) primary key,Enumber Varchar2(20) references Employee(Enumber) on delete cascade, AttendanceDays number check(AttendanceDays>=20 and AttendanceDays<=31), LateDays number check(LateDays>=0 and LateDays<=31),AbsenteeismDays number check(AbsenteeismDays>=0 and AbsenteeismDays<=31), OvertimeDays number check(OvertimeDays>=0 and OvertimeDays<=31), TraveDays number check(TraveDays>=0 and TraveDays<=31),CheckReward number);create table Wage(Enumber Varchar2(20) primary key,BasicWage number check(BasicWage>=2000 and BasicWage<=5000), AdditionalWage number,Allowance number,Wage number);create table Welfare(Pnumber Varchar2(20) primary key,FourGold number,WorkingMeal number,Vacation number,Medicaid number,Condolences number,PhysicalExamination number,ServicePayments number,TrafficSubsidy number,CommunicationAllowance number,Training number,TourismBenefits number,TotalSubsidy number);create table RPR(RPRnumber Varchar2(20) primary key,Enumber Varchar2(20) references Employee(Enumber) on delete cascade,RewardCategories varchar2(12)check(RewardCategories in ('大功','小功','嘉奖','通报表扬','一次性奖金','开除','记大过','记小过','警告','通报批评','一次性罚款')),ReplyDepartement Varchar2(10) references Departement(Dnumber),ReplyDate date,RewardMoney number);create table Train(TRAnumber Varchar2(20) primary key,Enumber Varchar2(20) references Employee(Enumber) on delete cascade,TrainCategories Varchar2(10),TrainDate date,TrainDuration varchar2(10),TrainAssessment varchar2(6));create table Text(Enumber Varchar2(20) primary key,SuperiorAssessment number CHECK(SuperiorAssessment>=0 and SuperiorAssessment<=100), StaffAssessment number CHECK(StaffAssessment>=0 and StaffAssessment<=100), Comprehensive number CHECK(Comprehensive>=0 and Comprehensive<=100), AssessmentClass Varchar2(20),Reward Varchar2(20));视图create view CEreminder(合同编号,职工编号,姓名,性别,签约日期,到期时间,签约时长)asselect Cnumber,Covenant.Enumber,EName,Gender,Signingdate,Maturitydate,SigningDuration from Covenant,Employeewhere months_between(sysdate,Maturitydate) = 1 and Covenant.Enumber = Employee.E number;create view LeaveINF(请假记录编号,职工编号,姓名,性别,所属部门,职位,请假日期,请假时长,请假类别)asselectVnumber,Leave.Enumber,EName,Gender,DName,Postname,LeaveDate,LeaveDuration,LeaveReas onfrom Leave,Employee,Position,Departementwhere Leave.Enumber = Employee.Enumber and Employee.Position = Position.Pnumber and Position.Departement = Departement.Dnumber;create view WageTable(职工编号,姓名,性别,所属部门,职位,基本工资,岗位津贴,附加工资,实发工资)asselectWage.Enumber,Ename,Gender,DName,Postname,Wage.Basicwage,Wage.Allowance,Wage.Additio nalwage,Wage.Wagefrom Wage,Employee,Position,Departementwhere Wage.Enumber = Employee.Enumber and Employee.Position = Position.Pnumber and Position.Departement = Departement.Dnumber;create view Attendance_statistics(职工编号,姓名,性别,所属部门,职位,当月应出勤天数,当月旷工天数,当月迟到天数,当月出差天数,当月加班天数,考勤净奖励)asselectAttendance.Enumber,Ename,Gender,DName,Postname,AttendanceDays,AbsenteeismDays,LateDa ys,TraveDays,OvertimeDays,CheckRewardfrom Attendance,Employee,Position,Departementwhere Attendance.Enumber = Employee.Enumber and Employee.Position = Position.Pnumber and Position.Departement = Departement.Dnumber;create view TrainINF(培训记录编号,职工编号,姓名,性别,培训日期,培训时长,培训类别,培训评价)asselectTRAnumber,Train.Enumber,Ename,Gender,TrainDate,TrainDuration,TrainCategories,TrainAssess mentfrom Train,Employeewhere Train.Enumber = Employee.Enumber;create view TextGrade(职工编号,姓名,性别,所属部门,职位,上级评价,员工评价,综合评价,评价等级)asselectText.Enumber,EName,Gender,DName,Postname,SuperiorAssessment,StaffAssessment,Comprehen sive,AssessmentClassfrom Text,Employee,Position,Departementwhere Text.Enumber = Employee.Enumber and Employee.Position = Position.Pnumber andPosition.Departement = Departement.Dnumber;create view RPRecord(职工编号,姓名,性别,所属部门,职位,奖惩类别,批复部门,批复时间,净奖励金额)asselectRPR.ENUMBER,EName,Gender,DName,Postname,RewardCategories,ReplyDepartement,ReplyD ate,RewardMoneyfrom RPR,Employee,Position,Departementwhere RPR.Enumber = Employee.Enumber and Employee.Position = Position.Pnumber and Position.Departement = Departement.Dnumber;索引create index I1on Employee(Ename);create index I2on leave(Enumber);create index I3on departement(dname);存储过程MobilizeRecord:create or replace procedure MobilizeRecord(Nd in Departement.DNumber%type, NP in Position.PNumber%type,NE in Employee.Enumber%type)isNPname Position.Postname%type;beginupdate Employeeset Position = NPwhere Enumber = NE;commit;select Postnameinto NPnamefrom Positionwhere PNumber = NP;commit;if NPname = '部门经理' or NPname = '总经理'then update Departement set Departement.Manager = Ne where Dnumber = ND;commit;end if;end MobilizeRecord;调用declareNd Departement.DNumber%type;NP Position.PNumber%type;NE Employee.Enumber%type;cursor c3 isselect mobilize.newdepartement,mobilize.newpost,mobilize.enumberfrom mobilize;beginopen c3;loopfetch c3 into Nd,NP,NE;exit when c3%notfound;mobilizerecord(Nd,NP,NE);end loop;close c3;end;count_checkreward:create or replace procedure count_checkreward isbeginupdate attendanceset checkreward = overtimedays*20+travedays*30-latedays*5-absenteeismdays*30; commit;end count_checkreward;调用begincount_checkreward;end;count_text:create or replace procedure count_text isbeginupdate textset comprehensive = superiorassessment *0.6 + staffassessment*0.4;commit;end count_text;count_text_fu:create or replace procedure count_text_fu iscursor c2 isselect comprehensivefrom text;v_com prehensive%type;v_class text.assessmentclass%type;beginopen c2;loopfetch c2 into v_com;exit when c2%notfound;if v_com >=0 and v_com < 60 thenv_class :='';else if v_com>=60 and v_com <=80 thenv_class :='加薪';else v_class :='升职';end if;end if;update textset text.assessmentclass = v_classwhere prehensive = v_com;commit;end loop;close c2;end count_text_fu;调用begincount_text;count_text_fu;end;count_wage:create or replace procedure count_wage(w_Empe in wage.Enumber%type) is w_bwage wage.basicwage%type;w_awage wage.additionalwage%type;w_all wage.allowance%type;w_tot number;w_check number;beginselect position.basicwage,position.allowanceinto w_bwage,w_allfrom position,Employeewhere w_Empe = Employee.Enumber and Employee.Position = position.pnumber;commit;select totalsubsidy,checkrewardinto w_tot,w_checkfrom welfare,attendance,Employeewhere w_empe = attendance.enumber and w_Empe = Employee.Enumber and Employee.Position = welfare.pnumber;commit;w_awage := w_tot +w_check;update wageset basicwage = w_bwage,additionalwage = w_awage, allowance = w_allwhere wage.enumber =w_Empe;commit;update wageset wage = basicwage+additionalwage+allowance;commit;end count_wage;调用declarew_number wage.enumber%type;cursor c1 isselect enumber from wage;beginopen c1;loopfetch c1 into w_number;count_wage(w_number);exit when c1%notfound;end loop;close c1;end;count_welfare:create or replace procedure count_welfare isbeginupdate welfareset totalsubsidy = FourGold+WorkingMeal+Vacation+Medicaid+Condolences+PhysicalExamination+ServicePayme nts+TrafficSubsidy+communicationAllowance+Training+TourismBenefits;commit;end count_welfare;调用begincount_welfare;end;触发器:overWorkRecordcreate or replace trigger overWorkRecordafter insert on overworkfor each rowdeclareNEWOver number;NEWENum varchar2(20);beginNEWOver := :new.overduration;NEWENum := :new.Enumber;overWork_Record(NEWOver,NEWENum);end overWorkRecord;overWork_Record:create or replace procedure overWork_Record(NEWOver in number, NEWENum in overwork.enumber%type) isbeginupdate attendanceset overtimedays = overtimedays+NEWOverwhere NEWENum = attendance.Enumber;end overWork_Record;TraveRecord:create or replace trigger TraveRecordafter insert on Travefor each rowdeclareNEWOver number;NEWENum varchar2(20);beginNEWOver := :new.Traveduration;NEWENum := :new.Enumber;Trave_Record(NEWOver,NEWENum);end TraveRecord;Trave_Record:create or replace procedure Trave_Record(NEWOver in number, NEWENum in Trave.enumber%type) isbeginupdate attendanceset travedays = travedays+NEWOverwhere NEWENum = attendance.Enumber;end Trave_Record;turnover_recordcreate or replace trigger turnover_recordafter insert on turnoverfor each rowbegindeletefrom employeewhere employee.Enumber = :new.enumber;end turnover_record;。