信息工程学院
《数据库课程设计》论文
题 目:人事管理系统数据库设计
以上三行均居中,其中:
第一行为黑体小初号 第二行为黑体二号
第二行“题目:”为黑体二号,自己题目为楷体二号下划线
页面为A4纸,四周边距均为2.5cm,正文小四号宋体,文档网格为40*40,文中表格标题为黑体5号居中,表格内容为5号宋体,图说为5号宋体。页码居中、页眉为“**级**专业**班数据库课程设计课程论文”,页眉从正文开始才有。
以下冒号前为黑体三号,冒号后为楷体三号
学 号: 2013012995 专业班级: 计算机132 姓 名: 刘家顺 指导老师:
完成日期: 2015.1.23
此处为分节符不是分页符,本页无页码
人事管理系统数据库设计
刘家顺
(信息工程学院计算机科学与技术13级2班)
摘 要
在本次课程设计中,我所开发的是人事管理系统。随着计算机网络的发展,人事档案方面管理越来越趋向于电子化和智能化,因此对人事管理系统的开发意义十分重大。它主要用于企业的档案管理工作,一般应用于企业局域网,分布在公司各个部门由专人负责管理。人事管理系统主要包含职工的个人情况,工作情况,简历等各方面信息。主要是为人事档案进行服务,对人事的变动处理,有人事的资料、以及人事资料的查询和统计等功能。该系统本着操作简洁、档案输入读取方便、安全性高的思想原则,总体实现了员工档案,工作管理,工资管理三个功能模块。 该系统的一大特色就是将对员工的管理和对系统各个子模块的管理分开,使得管理员的操作权限更加明确、合理化。 关键字:人事管理;员工;工作;工资
1
目 录
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
I
13级计算机专业2班数据库应用系统课程设计课程论文
人事管理系统是针对现在公司的大量业务处理工作而开发的管理软件。根据用户的要求实现人员基本情况管理、工资调整管理等几个方面的功能。用户通过输入职工履历等基本信息,由系统自行生成相应的统计数据及各类统计报表以供用户查询、打印,另外操作人员还可以对这些基本信息进行定期的更新和删除, 人事管理系统力求给用户方便快捷的途径去管理这些繁琐的数据。能够让企业带来先进的管理思想及方法、促进建立现代人事管理模式、促进人事管理正规化、帮助企业提高管理时效、帮助企业降低管理成本。所有的管理的目标都是为了效益。 1.需求分析
通过对现行人事管理系统的调查,明确了人事管理系统由档案管理、工作管理,工资管理组成。
数据流程图如下 (1) 人事管理系统顶层
F49部门信息F9合同到期提醒F1员工档案P0F11调动信息F48离职人员信息F12工资表F13请假信息F14批假信息人事管理系统E1员工F2合同信息F3岗位信息F4考勤信息F6奖惩信息E2上司F15考勤统计F16员工福利F17奖惩信息F18业绩考核汇总F19培训信息F5请假信息F7培训信息F8业绩信息
(2) 人事管理系统一层:
1
13级计算机专业2班数据库应用系统课程设计课程论文
(3)人事管理系统二层:
员工管理模块:
2
13级计算机专业2班数据库应用系统课程设计课程论文
P1员工管理F48离职人员信息F1员工档案F3岗位信息F10离职信息P1.1档案管理F25应聘人员记录S23离职人员表F23员工S档案1员工档案表S2员工职务表F21岗位信息F24岗位信息P1.2F26调动记录调动管理E1员工S3招聘记录表F11调动信息E2上司F49部门信息P1.3部门管理F27调动信息S4调动记录F28岗位信息F29部门主管信息S5部门信息表F30部门编制S6部门编制表S7合同记录表F31合同记录P1.4F9合同到期提醒F2合同信息合同管理F32转正提醒S8转正提醒表
工资管理模块:
3
13级计算机专业2班数据库应用系统课程设计课程论文
P2工资管理F33出差信息S9出差记录表S12缺勤记录表F4考勤信息F39缺勤记录F34加班信息S10加班记录表F35应出勤时间S11应出勤时间表F14批假信息F13请假信息F15考勤统计F36请假记录S13请假记录表F37批假记录P2.1考勤管理F5请假信息E1员工F38考勤统计信息S14批假记录表P2.2福利管理S16考勤统计表F16员工福利E2上司F41考勤统计信息F40员工福利信息S15福利记录表F42员工福利信息F21岗位信息F22奖惩记录P2.3工资发放F20职务信息F12工资表S17职务信息表F43工资表S18工资记录表
工作管理模块
4
13级计算机专业2班数据库应用系统课程设计课程论文
P3工作管理F6奖惩信息P3.1奖惩管理F17奖惩信息F22奖惩记录F44奖惩记录S19奖惩记录表E1员工S20培训记录表F45培训记录P3.2E2上司F7培训信息培训管理F19培训信息S21考核依据表F46考核依据P3.3F18业绩考核汇总F8业绩信息业绩管理F47考核成绩汇总S22考核成绩单
数据字典见附1。主要包含了数据项,数据结构,数据流,逻辑处理,存储记录等部分。 2.数据库结构设计
主要包括概念设计和逻辑设计两个部分。 2.1 概念设计
根据系统需求分析,可以得出人事管理系统数据库的概念模型(信息模型),下图用E-R图表示的人事管理系统的概念模型。 2.1.1 分E-R图建立 员工管理模块:
5
13级计算机专业2班数据库应用系统课程设计课程论文
工资管理模块:
工作管理模块
6
13级计算机专业2班数据库应用系统课程设计课程论文
2.1.2 全局E-R图。
7
13级计算机专业2班数据库应用系统课程设计课程论文
奖惩记录编号净奖励金额奖惩记录奖惩类别转正时间转正记录加班时长加班记录调动记录编号原属部门调动记录原职位部门经理部门号批复部门附加工资批复时间实发工资转正记录编号职工编号联系电话住址签约日期姓名加班记录编号性别加班日期新部门新职位调动时间部门部门名称工资上级评价奖励合同编号员工评价综合评价到期时间合同签约日期当月应出勤天数民族考核成绩考勤净奖励当月出差天数当月加班天数员工当月旷工天数当月迟到天数考勤记录籍贯出生年月日毕业学校学历年龄评价等级签约时长岗位编号岗位津贴岗位培训记录编号四金旅游福利培训日期培训类别请假日期补贴总计福利批假日期批假人批假记录岗位名称培训评价培训时长请假记录编号培训记录工作餐节假日批价编号出差地点出差时长出差记录基本工资部门经理人数编制医疗补助计划慰问金培训计划通信补贴交通补贴长期服务津贴健康体检离职编号离职记录出差日期出差记录编号下属员工人数部门副经理人数请假记录请假时长请假类别离职日期离职原因2.2 逻辑设计
将人事管理系统的E-R图转换为关系数据库的数据模型。 2.2.1 建立关系模式
将人事管理系统的E-R图转换为关系数据库的数据模型,其关系模式为: 员工(职工编号,担任职务,姓名,性别,民族,籍贯,毕业学校,学历,出生年月日,年龄,住址,联系电话)
合同(合同编号,职工编号,签约日期,到期时间,签约时长) 岗位(岗位编号,岗位名称,所属部门,岗位津贴,基本工资)
部门(部门号,部门名称,部门主管,部门经理人数,部门副经理人数,下属员工人数)
离职记录(离职编号,离职职工,离职日期,离职原因) 转正记录(转正记录编号,转正员工,签约日期,转正时间)
调动记录(调动记录编号,调动员工,原属部门,原职位,新部门,新职位,调动时间)
请假记录(请假记录编号,请假人,请假日期,请假类别,请假时长) 批假记录(批假记录编号,请假记录编号,批假人,批价日期)
出差记录(出差记录编号,出差人员,出差日期,出差时长,出差地点)
8
13级计算机专业2班数据库应用系统课程设计课程论文
加班记录(加班记录编号,加班人员,加班日期,加班时长)
考勤记录(考勤记录编号,员工,当月应出勤天数,当月迟到天数,当月旷工天数,当月加班天数,考勤净奖励)
工资(员工,基本工资,岗位津贴,附加工资,实发工资)
福利(岗位号,四金,工作餐,节假日,医疗补助计划,慰问金,健康体检,长期服务津贴,交通补贴,通信补贴,培训计划,旅游福利,补贴总计)
奖惩记录(奖惩记录编号,员工,奖惩类别,批复部门,批复时间,净奖励金额)
培训记录(培训记录编号,员工,培训类型,培训日期,培训时长,培训评价)
考核成绩(员工,上级评价,员工评价,综合评价,评价等级,奖励)
2.2.3 用户子模式建立
根据需求分析,研究建立满足不同需求的用户子模式,子模式表示形式为: 合同到期提醒(合同编号,职工编号,姓名,性别,签约日期,到期时间,签约时长)
请假信息(请假记录编号,职工编号,姓名,性别,所属部门,职位,请假日期,请假时长,请假类别)
工资表(职工编号,姓名,性别,所属部门,职位,基本工资,岗位津贴,附加工资,实发工资)
考勤统计(职工编号,姓名,性别,所属部门,职位,当月应出勤天数,当月旷工天数,当月迟到天数,当月出差天数,当月加班天数,考勤净奖励)
培训信息(培训记录编号,职工编号,姓名,性别,培训日期,培训时长,培训类别,培训评价)
业绩考核汇总(职工编号,姓名,性别,所属部门,职位,上级评价,员工评价,综合评价,评价等级)
奖惩记录(职工编号,姓名,性别,所属部门,职位,奖惩类别,批复部门, 批复时间,净奖励金额)
9
13级计算机专业2班数据库应用系统课程设计课程论文
2.2.4 关系模式逻辑结构定义
关系模式名称 Employee Covenant Post Department RurnoverRecord ProbationRecord MobilizeRecord LeaveRecord PermitRecord TravelRecord OvertimeRecord AttendanceRecord
Wage Welfare RPRecord TrainRecord Evaluation
含义 备注 附录2 附表1 附录2 附表2 附录2 附表3 附录2 附表4 附录2 附表5 附录2 附表6 附录2 附表7 附录2 附表8 附录2 附表9 附录2附表10 附录2 附表11 附录2 附表12 附录2 附表13 附录2 附表14 附录2 附表15 附录2 附表16 附录2 附表17
员工 合同 岗位 部门 离职记录 转正记录 调动记录 请假记录 批假记录 出差记录 加班记录 考勤记录 工资 福利 奖惩记录 培训记录 考核成绩
3. 数据库物理设计
对表 Employee 在属性列 Ename 上建立聚集索引, 对表 Department 在属性列 DName 上建立聚集索引, 对表 Leave 在属性列 Ename 上建立聚集索引。 4.数据库实施与测试
主要包括数据库实施和测试两个部分。
4.1 数据库及数据库对象建立
主要包括:基本表、视图、索引、存储过程以及触发器;(见附3)
10
13级计算机专业2班数据库应用系统课程设计课程论文
4.2 数据入库 4.3 数据库测试
(1)计算考勤净奖励
执行count_checkreward
(2)计算考核结果
执行count_text和count_tect_fu;
(3)计算工资
11
13级计算机专业2班数据库应用系统课程设计课程论文
执行count_wage
(4)计算补贴总计
执行count_welfare
5.总结
由于在数据库的设计初期,没有对人事管理系统进行准确地需求分析,导致
12
13级计算机专业2班数据库应用系统课程设计课程论文
后期设计过程中的数据库的概念设计阶段无法进行。因此,通过此次数据库课程设计使学生认识到了需求分析对于软件系统设计的重要性。也认识到规范化的设计流程对于后期的设计来说,是十分重要的。前面的设计是后面的铺垫,只有对前面的设计过程进行准确地分析,才能节省整个系统的开发时间。最后,通过此次数据库课程设计使学生初步理解了简单数据库的一般开发流程,以及数据流图和E-R图等专业图形地绘制。 6.附录
附录1 数据项
Employee 员工 职工编号+姓名+性别+民族+出生年月日+年龄+学历+毕业学校+籍贯+住址+联系电话
Covenant 合同 合同编号+职工编号+姓名+性别+签约日期+到期时间+签约时长
Post 岗位 部门号+职位
AttendanceINF 考勤信息 职工编号+姓名+性别+所属部门+职位+当月应出勤天数+当月旷工天数+当月迟到天数
LeaveRecord 请假记录 请假记录编号+职工编号+姓名+性别+所属部门+职位+请假日期+请假时长+请假类别
RPRecord 奖惩记录 奖惩记录编号+职工编号+姓名+性别+所属部门+职位+奖惩类别+批复部门+批复时间
TrainRecord 培训记录 培训记录编号+职工编号+姓名+性别+培训日期+培训时长+培训类别+培训评价
PerformanceEVA 业绩评价 职工编号+姓名+性别+所属部门+职位+上级评价+员工评价+综合评价+评价等级
MobilizeRecord 调动记录 调动记录编号+职工编号+姓名+性别+原属部门+原职位+新部门+新职位+调动时间
Wage 工资 职工编号+姓名+性别+所属部门+职位+基本工资+岗位津贴+附加工资+实发工资 Welfare
福利 部门号+职位+四金+工作餐+节假日+医疗补助计划+慰问金+健
康体检+长期服务津贴+交通补贴+通信补贴+培训计划+旅游福利+补贴总计
13
13级计算机专业2班数据库应用系统课程设计课程论文
DepartmentINF 部门信息 部门号+部门名称+部门经理 Compile 工人数
TravelRecord 出差记录 出差记录编号+职工编号+姓名+性别+所属部门+职位+出差日期+出差地点+出差时长
OvertimeRecord 加班记录 加班记录编号+职工编号+姓名+性别+所属部门+职位+加班日期+加班时长
EvaluationBasis 考核依据 部门号+职位+评价等级+奖励
EmployeeRurnover 离职员工 离职编号+姓名+性别+民族+出生年月日+学历+毕业学校+籍贯+离职原因+离职日期
Probation 转正提醒 职工编号+姓名+性别+签约日期+转正时间
PermitRecord 批假记录 批假记录编号+职工编号+姓名+性别+所属部门+职位+请假日期+请假时长+请假类别+批假人 数据结构 附录2
表 1 员工关系
部门编制 部门号+部门名称+部门经理人数+部门副经理人数+下属员
属性名 Enumber Position EName Gender Nation Hometown School EDegree Brith Age Address
含义 职工编号 担任职务 姓名 性别 民族 籍贯 毕业学校 学历 出生年月日
年龄 住址
数据类型 Varchar2 Varchar2 Varchar2 Varchar2 Varchar2 Varchar2 Varchar2 Varchar2 Date Number Varchar2 Varchar2
长度 20 20 30 2 10 10 20 10 50 10
是否为主属性 是
是否为外键 是
约束条件 Not null Not null Not null {男,女} Not null Not null Not null Not null Not null 16~70 Not null Not null
Telephone 联系电话
表2 合同关系模式
属性名 含义 数据类型 长度 是否为主是否为约束条件
14
13级计算机专业2班数据库应用系统课程设计课程论文
属性
Cnumber Enumber Signingdate Maturitydate
合同编号 职工编号 签约日期 到期时间
Varchar2 Varchar2 Date Date Varchar2
20 20 10
是
外键 是
Not null Not null
SigningDuration 签约时长
表3岗位关系模式
属性名 Pnumber Postname
含义 岗位编号 岗位名称
数据类型 Varchar2 Varchar2 Varchar2 number number
长度 20 20 10
是否为主属性 是
是否为外键 是
约束条件 Not null Not null Not null
2000~5000
Departement 所属部门 Allowance Basicwage
岗位津贴 基本工资
表4部门关系模式
属性名 Dnumber DName Manager ManagerNumber VioceManagerNumber StaffNumber
表5离职记录关系模式
含义 部门号 部门名称 部门主管 部门经理人数
部门副经理人数 下属员工人数
数据类型 Varchar2 Varchar2 Varchar2 number number number
长度 10 20 20
是否为主属性 是
是否为外键 是
约束条件 Not null
属性名 Tnumber Enumber Turnoverdate Turnoverreason
含义 离职编号 离职职工 离职日期 离职原因
数据类型 Varchar2 Varchar2 date Varchar2
长度 20 20 10
是否为主属性 是
是否为外键 是
约束条件 Not null Not null Not null {辞职,解雇,退休,非自然离职}
15
13级计算机专业2班数据库应用系统课程设计课程论文
表6转正记录关系模式
属性名 PRnumber Enumber Signingdate
含义 转正记录编号 转正员工 签约日期
数据类型 Varchar2 Varchar2 date Varchar2
长度 20 20 10
是否为主属性 是
是否为外键 是
约束条件 Not null Not null Not null
Probationdate 转正时间
表7调动记录关系模式
属性名 Mnumber Enumber OldDepartement OldPost
含义 调动记录编号 调动员工 原属部门 原职位
数据类型 Varchar2 Varchar2 Varchar2 Varchar2 Varchar2 Varchar2 Date
长度 20 20 10 20 10 20
是否为主属性 是
是否为外键 是 是 是 是 是
约束条件 Not null Not null Not null Not null Not null Not null
NewDepartement 新部门 NewPost MobilizeDate
新职位 调动时间
表8请假记录关系模式
属性名 Vnumber Enumber LeaveDate LeaveReason
含义 请假记录编号 请假人 请假日期 请假类别
数据类型 Varchar2 Varchar2 date Varchar2
长度 20 20 4
是否为主属性 是
是否为外键 是
约束条件 Not null Not null
{事假,病假}
LeaveDuration 请假时长
表9批假记录关系模式
number
属性名 PEnumber Vnumber Enumber
含义 批假记录编号
请假记录编号 批假人
数据类型 Varchar2 Varchar2 Varchar2
长度 20 20 20
16
是否为主属性 是
是否为外键 是
约束条件 Not null
13级计算机专业2班数据库应用系统课程设计课程论文
PermitateDate 批价日期
表10 出差记录关系模式
date
属性名 TRnumber Enumber TraveDate
含义 出差记录编号 出差人员 出差日期
数据类型 Varchar2 Varchar2 date
长度 20 20
是否为主属性 是
是否为外键 是
约束条件 Not null Not null
TraveDuration 出差时长 TravePlace
出差地点
number varchar2
10
表11加班记录关系模式
属性名 Onumber Enumber OverDate
含义 加班记录编号 加班人员 加班日期
数据类型 Varchar2 Varchar2 date
长度 20 20
是否为主属性 是
是否为外键 是
约束条件 Not null Not null
OverDuration 加班时长
表12考勤记录关系模式
number
属性名 Anumber Enumber AttendanceDays LateDays AbsenteeismDays OvertimeDays TraveDays CheckReward
含义 考勤记录编号 员工 当月应出勤天数 当月迟到天数
当月旷工天数
当月加班天数
当月出差天数
数据类型 Varchar2 Varchar2 number number number number Number
长度 20 20
是否为主属性 是
是否为外键 是
约束条件 Not null Not null 20~31 0~31 0~31 0~31 0~31
考勤净奖励 number
17
13级计算机专业2班数据库应用系统课程设计课程论文
表13工资关系模式
属性名 Enumber BasicWage
含义 员工 基本工资
数据类型 Varchar2 number number number number
长度 20
是否为主属性 是
是否为外键
约束条件 Not null 2000~5000
AdditionalWage 附加工资 Allowance Wage
表14福利关系模式
岗位津贴 实发工资
属性名 Pnumber FourGold WorkingMeal Vacation Medicaid Condolences PhysicalExamination ServicePayments TrafficSubsidy
含义 岗位号 四金 工作餐 节假日 医疗补助计划 慰问金 健康体检 长期服务津贴 交通补贴
数据类型 Varchar2 number number number number number number number number number number number number
长度 20
是否为主属性 是
是否为外键
约束条件 Not null
CommunicationAllowance 通信补贴 Training TourismBenefits TotalSubsidy
表15奖惩记录关系模式
培训计划 旅游福利 补贴总计
属性名 RPRnumber Enumber RewardCategories
含义 奖惩记录编号 员工, 奖惩类别
数据类型 Varchar2 Varchar2 Varchar2
长度 20 20 12
18
是否为主属性 是
是否为外键 是
约束条件 Not null Not null {大功,小功,
13级计算机专业2班数据库应用系统课程设计课程论文
嘉奖,通报表扬,一次性奖金,开除,记大过,记小过,警告,通报批评,一次性罚款}
ReplyDepartement 批复部门 ReplyDate RewardMoney
批复时间
Varchar2 date
10
净奖励金额 number
表16培训记录关系模式
属性名 TRAnumber Enumber TrainCategories TrainDate TrainDuration
含义 培训记录编号 员工 培训类型 培训日期 培训时长
数据类型 Varchar2 Varchar2 Varchar2 date Varchar2 Varchar2
长度 20 20 10 10 6
是否为主属性 是
是否为外键 是
约束条件 Not null Not null
TrainAssessment 培训评价
表17考核成绩关系模式
属性名 Enumber
含义 员工
数据类型 Varchar2 number number number Varchar2 Varchar2
长度 20 20 20
是否为主属性 是
是否为外键
约束条件 Not null 0~100 0~100 0~100
SuperiorAssessment 上级评价 StaffAssessment Comprehensive AssessmentClass Reward 附录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,
19
13级计算机专业2班数据库应用系统课程设计课程论文
School 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,
20
13级计算机专业2班数据库应用系统课程设计课程论文
Signingdate date,
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,
21
13级计算机专业2班数据库应用系统课程设计课程论文
OverDate date, 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
22
13级计算机专业2班数据库应用系统课程设计课程论文
(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(合同编号,职工编号,姓名,性别,签约日期,到期时间,签约时长) as
select Cnumber,Covenant.Enumber,EName,Gender,Signingdate,Maturitydate,SigningDuration from Covenant,Employee
where months_between(sysdate,Maturitydate) = 1 and Covenant.Enumber = Employee.Enumber;
create view LeaveINF(请假记录编号,职工编号,姓名,性别,所属部门,职位,请假日期,请假时长,请假类别) as select
Vnumber,Leave.Enumber,EName,Gender,DName,Postname,LeaveDate,LeaveDuration,LeaveReason
from Leave,Employee,Position,Departement
23
13级计算机专业2班数据库应用系统课程设计课程论文
where Leave.Enumber = Employee.Enumber and Employee.Position = Position.Pnumber and Position.Departement = Departement.Dnumber;
create view WageTable(职工编号,姓名,性别,所属部门,职位,基本工资,岗位津贴,附加工资,实发工资) as select
Wage.Enumber,Ename,Gender,DName,Postname,Wage.Basicwage,Wage.Allowance,Wage.Additionalwage,Wage.Wage
from Wage,Employee,Position,Departement
where Wage.Enumber = Employee.Enumber and Employee.Position = Position.Pnumber and Position.Departement = Departement.Dnumber;
create view Attendance_statistics(职工编号,姓名,性别,所属部门,职位,当月应出勤天数,当月旷工天数,当月迟到天数,当月出差天数,当月加班天数,考勤净奖励) as select
Attendance.Enumber,Ename,Gender,DName,Postname,AttendanceDays,AbsenteeismDays,LateDays,TraveDays,OvertimeDays,CheckReward from Attendance,Employee,Position,Departement
where Attendance.Enumber = Employee.Enumber and Employee.Position = Position.Pnumber and Position.Departement = Departement.Dnumber;
create view TrainINF(培训记录编号,职工编号,姓名,性别,培训日期,培训时长,培训类别,培训评价) as select
TRAnumber,Train.Enumber,Ename,Gender,TrainDate,TrainDuration,TrainCategories,TrainAssessment
from Train,Employee
where Train.Enumber = Employee.Enumber;
create view TextGrade(职工编号,姓名,性别,所属部门,职位,上级评价,员工评价,综合评价,评价等级) as select
Text.Enumber,EName,Gender,DName,Postname,SuperiorAssessment,StaffAssessment,Comprehensive,AssessmentClass
from Text,Employee,Position,Departement
where Text.Enumber = Employee.Enumber and Employee.Position = Position.Pnumber and
24
13级计算机专业2班数据库应用系统课程设计课程论文
Position.Departement = Departement.Dnumber;
create view RPRecord(职工编号,姓名,性别,所属部门,职位,奖惩类别,批复部门,批复时间,净奖励金额) as select
RPR.ENUMBER,EName,Gender,DName,Postname,RewardCategories,ReplyDepartement,ReplyDate,RewardMoney
from RPR,Employee,Position,Departement
where RPR.Enumber = Employee.Enumber and Employee.Position = Position.Pnumber and Position.Departement = Departement.Dnumber; 索引
create index I1 on Employee(Ename);
create index I2 on leave(Enumber);
create index I3
on departement(dname); 存储过程 MobilizeRecord:
create or replace procedure MobilizeRecord(Nd in Departement.DNumber%type, NP in Position.PNumber%type,NE in Employee.Enumber%type) is
NPname Position.Postname%type; begin
update Employee set Position = NP where Enumber = NE; commit;
select Postname into NPname from Position where PNumber = NP; commit;
if NPname = '部门经理' or NPname = '总经理'
then update Departement set Departement.Manager = Ne where Dnumber = ND;
25
13级计算机专业2班数据库应用系统课程设计课程论文
commit; end if;
end MobilizeRecord; 调用 declare
Nd Departement.DNumber%type; NP Position.PNumber%type; NE Employee.Enumber%type; cursor c3 is
select mobilize.newdepartement,mobilize.newpost,mobilize.enumber from mobilize; begin open c3; loop
fetch 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 is begin
update attendance
set checkreward = overtimedays*20+travedays*30-latedays*5-absenteeismdays*30; commit;
end count_checkreward; 调用 begin
count_checkreward; end; count_text:
create or replace procedure count_text is begin update text
set comprehensive = superiorassessment *0.6 + staffassessment*0.4; commit; end count_text; count_text_fu:
create or replace procedure count_text_fu is
26
13级计算机专业2班数据库应用系统课程设计课程论文
cursor c2 is
select comprehensive from text;
v_com text.comprehensive%type; v_class text.assessmentclass%type; begin open c2; loop
fetch c2 into v_com; exit when c2%notfound;
if v_com >=0 and v_com < 60 then v_class :='';
else if v_com>=60 and v_com <=80 then v_class :='加薪'; else v_class :='升职'; end if; end if; update text
set text.assessmentclass = v_class where text.comprehensive = v_com; commit; end loop; close c2; end count_text_fu; 调用 begin count_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; begin
select position.basicwage,position.allowance into w_bwage,w_all from position,Employee
27
13级计算机专业2班数据库应用系统课程设计课程论文
where w_Empe = Employee.Enumber and Employee.Position = position.pnumber; commit;
select totalsubsidy,checkreward into w_tot,w_check
from welfare,attendance,Employee where commit;
w_awage := w_tot +w_check; update wage
set basicwage = w_bwage,additionalwage = w_awage, allowance = w_all where wage.enumber =w_Empe; commit; update wage
set wage = basicwage+additionalwage+allowance; commit;
end count_wage; 调用 declare
w_number wage.enumber%type; cursor c1 is
select enumber from wage; begin open c1; loop
fetch 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 is begin
update welfare set
nts+TrafficSubsidy
+communicationAllowance+Training+TourismBenefits;
28
w_empe = attendance.enumber and w_Empe = Employee.Enumber and
Employee.Position = welfare.pnumber;
totalsubsidy =
FourGold+WorkingMeal+Vacation+Medicaid+Condolences+PhysicalExamination+ServicePayme
13级计算机专业2班数据库应用系统课程设计课程论文
commit;
end count_welfare; 调用 begin
count_welfare; end; 触发器: overWorkRecord
create or replace trigger overWorkRecord after insert on overwork for each row declare
NEWOver number; NEWENum varchar2(20); begin
NEWOver := :new.overduration; NEWENum := :new.Enumber;
overWork_Record(NEWOver,NEWENum); end overWorkRecord; overWork_Record:
create or replace procedure overWork_Record(NEWOver overwork.enumber%type) is begin
update attendance
set overtimedays = overtimedays+NEWOver where NEWENum = attendance.Enumber; end overWork_Record;
TraveRecord:
create or replace trigger TraveRecord after insert on Trave for each row declare
NEWOver number; NEWENum varchar2(20); begin
NEWOver := :new.Traveduration; NEWENum := :new.Enumber; Trave_Record(NEWOver,NEWENum);
29
in number, NEWENum in 13级计算机专业2班数据库应用系统课程设计课程论文
end TraveRecord; Trave_Record: create begin
update attendance
set travedays = travedays+NEWOver where NEWENum = attendance.Enumber; end Trave_Record; turnover_record
create or replace trigger turnover_record after insert on turnover for each row begin delete from employee
where employee.Enumber = :new.enumber;
end turnover_record;
or
replace
procedure
Trave_Record(NEWOver
in
number,
NEWENum
in
Trave.enumber%type) is
30