1、数据库管理与维护设计报告题 目: 学生考勤系统 学 号: 131006406 学生姓名: 关文飞 指导教师: 余建国 提交时间: 2015-11-21 目录第 1 章 需求分析 11.1 需求调查 11.2 系统功能分析 21.3 面对用户需求分析 3第 2 章 面向对象分析和设计 4第 3 章 逻辑结构设计 83.1 类和对象向关系模式转换 103.2 关系模式优化 11第 4 章 数据库物理结构设计 114.1 存取方法设计 114.2 存储结构设计 114.3 物理设计 12第 5 章 数据库完整性设计 155.1 主键及唯一性索引 155.2 参照完整性设计 165.3 Check 约
2、束 .175.4 Default 约束 .175.5 触发器设计 17第 6 章 数据库视图设计 19第 7 章 数据库存储过程设计 20第 8 章 权限设计 22总结 22参考文献: 23数据库管理与维护设计报告第 1 页 共 26 页学生考勤系统的 Oracle 实现第 1 章 需求分析随着高校校园信息化的逐步完善,有效地借助网络、数据库等技术提高工作和管理效率。如今针对师生的成绩查询系统、教务管理系统、招生就业系统、BBS、校园网站等系统在各大高校纷纷出现,对全校师生的学习、生活、管理、办公带来了便利。因此学生考勤管理系统能进一步加强高校学风建设,维护正常的教学秩序,给学生创造一个优良的
3、学习环境。目前高校学生上课考勤管理都是以任课老师上课点名,记录学生上课情况,对于时间比较长的请假,需要通过递交请假申请让班主任、院系领导都批准方能生效。这种模式在目前高校管理中暴露了不可避免的弊端:1、学生请假不方便;2、学生请假对任课老师不透明; 3、学生对自己整个学期的上课出勤情况没有整体的统计信息;4、班主任对本班学生整个学期的上课出勤情况不易查看;5、院系领导、学校领导不容易把握学生上课的出勤情况。因此一个好的学生考勤管理系统在一定程度上可以解决这些弊端,本系统主要针对目前高校学生在线请假以及学生上课出勤管理而设计的信息系统。本系统涉及到高校六大类用户:学生、任课老师、班主任、院系领导
4、、学校领导、系统管理员。1.2 系统功能分析根据系统用户的需求,将本系统按功能划分成三大功能模块:请假系统、考勤系统、后台管理模块,涉及到六大类用户:学生、任课教师、班主任、院系领导、学校领导、系统管理员。1.2.1 请假系统模块本模块的功能是在线请假的实现及管理,主要涉及三大类用户:学生、班主任及院系领导用户,学生通过此功能模块进行在线请假及查看请假记录信息;班主任在线审批学生请假及查看请假记录信息;院系领导在线审批学生长时间的请假及查看请假记录信息。1.2.2 考勤系统模块本模块的功能是学生考勤信息统计的实现、查看及管理,涉及六大类用户中的所有用户。学生在线查看自己所有学年的出勤信息;任课
5、老师在线管理学生出勤信息;班主任、院系领导、学校领导查看不同的范围的学生出勤信息。数据库管理与维护设计报告第 2 页 共 26 页1.2.3 后台管理管理本模块的功能实现整个系统数据的同步更新及维护,只涉及系统管理员用户。系统管理员动态的管理学生信息、课表安排、学年安排等信息,是整个系统实现的基础。1.3 面对用户需求分析通过对各个用户的调查,该教务管理系统有如下需求:1、学生对本系统的主要需求是:在线请假以及查看在校期间所有的上课出勤信息。2、在线请假需求:学生请假的全过程当中,学生可以随时查看请假的详细进展情况。3、查看出勤信息需求:学生可以查看在校期间所有学期上课出勤的详细信息,如:查看
6、“Oracle 数据库管理与应用”这门课程在整个学期请假、旷课多少次等信息。4、任课老师对系统的主要需求是:管理所教班级学生的上课出勤信息以及查看所教班级学生的上课出勤信息。5、管理学生上课出勤需求:随着时间的变化,自动列出还没有在网上公布的学生上课出勤信息,系统自动根据学生请假系统,决定学生上课出勤的最终结果。6、查看学生出勤信息需求:查看所教班级学生整个学期出勤情况。7、审批学生请假需求:本班学生本学期在线请假申请后,自动提示班主任有等待审批的请假信息,班主任针对请假申请信息进行学生请假审批。8、查看学生上课出勤信息需求:查看本班学生整个学期有关课程的出勤统计信息及详细信息。数据库管理与维
7、护设计报告第 3 页 共 26 页1.3.1 学生考勤系统的 E-R 模型n1 n1nm n1n1m1 nnn1教师班级学生学院领导学院专业课程假条开设考勤属于 属于授课聘请班主任管理请假学号姓名 性别班级专业 院系编号名称编号 专业名称所属学院编号姓名 性别 所属院系课程号课程名课程性质编号 名称编号姓名 性别所属院系职称编号姓名性别所属专业所属学院班主任编号学号 原因数据库管理与维护设计报告第 4 页 共 26 页第 2 章 数据字典设计名字:管理员信息描述:每一位管理员的具体信息定义:管理员信息=编号+ 姓名+ 性别+职称+密码名字:学院领导信息描述:每一位学院领导的具体信息定义:学院领
8、导信息=编号+ 姓名+ 性别+职称+ 所属学院名字:院系信息描述:每一个学院的具体信息定义:院系信息=编号+ 院系名称名字:专业信息描述:每一位管理员的具体信息定义:专业信息=编号+ 姓名+所属院系名字:课程信息描述:每一门课程的具体信息定义:课程信息=课程号+ 课程名+ 课程性质名字:教师信息描述:每一位教师的具体信息定义:教师信息=编号+ 姓名+性别+所属院系名字:班级信息描述:每一个班级的具体信息定义:班级信息=编号+ 班级名称+ 班主任名字:班主任信息描述:每一位班主任的具体信息定义:班主任信息=编号+ 姓名+ 性别+所属学院+所属专业名字:学生信息描述:每一位学生的具体信息定义:学生
9、信息=学号+ 姓名+性别+专业+院系+ 班级名字:请假条信息描述:每一请假条的具体信息定义:请假条信息=请假代号+班级代号+学生学号+ 请假原因+开始时间+结束时间+ 请假天数+申请请假时间+班主任审批状态+班主任审批时间+院系领导审批状态+院系领导代号+ 院系领导审批时间数据库管理与维护设计报告第 5 页 共 26 页第 3 章 逻辑结构设计(1)系统管理员表 admin字段名 数据类型 可否为空 键引用 备注admin_no char(5) 否 主键 管理员编号admin_name char(10) 否 管理员姓名admin_sex char(2) 否 性别admin_title char
10、(20) 否 职称admin_password varchar2(20) 否 登入密码(2)学生表 student字段名 数据类型 可否为空 键引用 备注stu_no char(10) 否 主键 学生学号stu_name varchar(30) 否 学生姓名stu_sex char(2) 否 性别stu_class char(13) 否 外键 所属班级stu_major char(30) 否 外键 所属专业stu_faculty char(40) 否 外键 所属学院(3)院系表 faculty字段名 数据类型 可否为空 键引用 备注faculty_id number 否 主键 院系编号facu
11、lty_name char(20) 否 院系名称(4)专业表 major字段名 数据类型 可否为空 键引用 备注major_id number 否 主键 专业编号major_name char(20) 否 专业名称major_faculty number 否 外键 所属院系(5)教师表 teacher字段名 数据类型 可否为空 键引用 备注tea_no char(10) 否 主键 任课老师编号tea_name char(20) 否 任课老师姓名tea_sex char(2) 否 性别tea_faculty number 否 外键 所属学院数据库管理与维护设计报告第 6 页 共 26 页(6)班
12、主任表 classteacher字段名 数据类型 可否为空 键引用 备注classtea_no char(5) 否 主键 任课老师编号classtea_name char(20) 否 任课老师姓名classtea_sex char(2) 否 性别classtea_major number 否 外键 所属专业classtea_faculty number 否 外键 所属学院(7)院领导表 collegeleader字段名 数据类型 可否为空 键引用 备注collegeleader_no char(5) 否 主键 学院领导编号collegeleader_name char(20) 否 学院领导姓名
13、collegeleader_sex char(2) 否 性别collegeleader_faculty number 否 外键 所属学院title char(20) 否 职称(8)学校领导表 schoolleader字段名 数据类型 可否为空 键引用 备注schoolleader_no char(5) 否 主键 学校领导编号schoolleader_name char(20) 否 学校领导姓名schoolleader_sex char(2) 否 性别dept char(20) 否 所属部门title char(25) 否 职称(9)学生上课出勤记录表 kaoqin_record字段名 数据类型
14、 可否为空 键引用 备注kaoqin_id char(13) 否 主键 上课出勤编号sk_time datetime 否 上课时间stu_number char(10) 否 外键 学生学号stu_status char(10) 否 学生上课考勤状态teacher_no char(10) 否 外键 教师编号course_no char(13) 否 外键 课程编号(10)课程信息表 course字段名 数据类型 可否为空 键引用 备注course_no char(13) 否 主键 课程编号course_name char(20) 否 课程名称course_xz char(4) 否 课程性质数据库管
15、理与维护设计报告第 7 页 共 26 页(11)班级表 classes字段名 数据类型 可否为空 键引用 备注class_no char(10) 否 主键 课程编号class_name char(20) 否 课程名称classtea_no char(5) 否 外键 课程性质(12)请假信息表 qingjia字段名 数据类型 可否为空 键引用 备注id number 否 主键 请假代号class_id char(10) 否 外键 班级代号stu_no varchar2 (20) 否 外键 学生学号leave_reason varchar2 (200) 否 请假原因start_time datet
16、ime 否 开始时间end_time datetime 否 结束时间day_number number 否 请假天数qingjia_time datetime 否 申请请假时间class_tea_id char(5) 否 外键class_tea_sp_status char(10) 否 班主任审批状态class_tea_sp_time datetime 否 班主任审批时间coll_leader_sp_statuschar(10) 否 院系领导审批状态coll_leader_id char(5) 否 外键 院系领导代号coll_leader_sp_time datetime 否 院系领导审批时间
17、备注:status 表示审批状态: 0 为等待审批,1 为同意请假,2 为不同意请假。3.1 类和对象向关系模式转换管理员信息描述:每一位管理员的具体信息(编号 姓名 性别 职称 密码)学院领导信息描述:每一位学院领导的具体信息(编号 姓名 性别 职称 所属学院)院系信息描述:每一个学院的具体信息(编号 院系名称) 专业信息描述:每一位管理员的具体信息(编号 姓名 所属院系)课程信息描述:每一门课程的具体信息(课程号 课程名 课程性质)教师信息描述:每一位教师的具体信息(编号 姓名 性别 所属院系)数据库管理与维护设计报告第 8 页 共 26 页班主任信息描述:每一位班主任的具体信息(编号 姓
18、名 性别 所属学院 所属专业)班级信息描述:每一个班级的具体信息(编号 班级名称 班主任)学生信息描述:每一位学生的具体信息(学号 姓名 性别 专业 院系 班级)请假条信息描述:每一请假条的具体信息(请假代号 班级代号 学生学号 请假原因 开始时间 结束时间 请假天数 申请请假时间 班主任审批状态 班主任审批时间 院系领导审批状态 院系领导代号 院系领导审批时间)3.2 关系模式优化学生信息(学号 姓名 性别 专业 院系 班级)班主任信息(编号 姓名 性别 所属学院 所属专业)课程信息(课程号 课程名 课程性质)专业信息(编号 姓名 所属院系)请假条信息(请假代号 班级代号 学生学号 请假原因
19、 开始时间 结束时间 请假天数 申请请假时间 班主任审批状态 班主任审批时间 院系领导审批状态 院系领导代号 院系领导审批时间)第 4 章 数据库物理结构设计4.1 设计表空间创建一般的字典管理类表空间,目的是为了方便利用 SQL 字典跟踪磁盘的使用情况。使用如下命令创建表空间:create tablespace linpeng_datadatafile /u01/oracle/oradata/tab01.dbf size 100Mdefault storage(initial 512K next 128K minextents 2 maxextents 999 pctincrease 0)o
20、nline;4.2 物理设计-创建表4.2.1 创建系统管理员表 admincreate table admin(admin_no char(5) not null,admin_name char(10) not null,admin_sex char(2) check (admin_sex=男 or admin_sex=女),admin_title char(20) not null,admin_password varchar(20) not null,数据库管理与维护设计报告第 9 页 共 26 页constraint pk_admin primary key (admin_no)tab
21、lespace linpeng_data;4.2.2 学生表 studentcreate table student(stu_no char(10) not null,stu_name varchar(30) not null,stu_sex char(2) check (stu_sex=男 or stu_sex=女),stu_class char(5) foreign key references classes(class_no),stu_major number foreign key references major(major_id),stu_faculty number forei
22、gn key references faculty(faculty_id),constraint pk_student primary key(stu_no)tablespace linpeng_data;4.2.3 院系表 facultycreate table faculty(faculty_id number not null,faculty_name char(10) not null,constraint pk_faculty primary key (faculty_id)tablespace linpeng_data;4.2.4 专业表 majorcreate table maj
23、or(major_id number not null,major_name char(10) not null,major_faculty number foreign key references faculty(faculty_id),constraint pk_major primary key (major_id)tablespace linpeng_data;数据库管理与维护设计报告第 10 页 共 26 页4.2.5 教师表 teachercreate table teacher(tea_no char(10) not null,tea_name char(20) not nul
24、l,tea_sex char(2) check (tea_sex=男 or tea_sex=女),tea_faculty number foreign key references faculty(faculty_id),constraint pk_teacher primary key (tea_no)tablespace linpeng_data;4.2.6 班主任表 classteachercreate table classteacher(classtea_no char(5) not null,classtea_name char(20) not null,classtea_sex
25、char(2) check (classtea_sex=男 or classtea_sex=女),classtea_major number foreign key references major(major_id),classtea_faculty number foreign key references faculty(faculty_id),constraint pk_classteacher primary key (classtea_no)tablespace linpeng_data;4.2.7 院领导表 collegeleadercreate table collegelea
26、der(collegeleader_no char(5) primary key,collegeleader_name char(20) not null,collegeleader_sex char(2) check(collegeleader_sex in(男,女),collegeleader_faculty number foreign key references faculty(faculty_id),title char(20) not null)tablespace linpeng_data;4.2.8 学校领导表 schoolleadercreate table schooll
27、eader(数据库管理与维护设计报告第 11 页 共 26 页schoolleader_no char(5) primary key not null,schoolleader_name char(20) not null,schoolleader_sex char(2) check(schoolleader_sex in(男,女),dept char(20) not null,title char(20) not null)tablespace linpeng_data;4.2.9 学生上课出勤记录表 kaoqin_recordcreate table kaoqin_record(kaoqi
28、n_id char(13) primary key not null,sk_time datetime not null,stu_number char(10) foreign key references student(stu_no),stu_status char(10) not null,teacher_no char(10) foreign key references teacher(tea_no),course_no char(13) foreign key references course(course_no)tablespace linpeng_data;4.2.10 课程
29、信息表 coursecreate table course(course_no char(13) primary key,course_name char(20) not null,course_xz char(4) not null)tablespace linpeng_data;4.2.11 班级表 classescreate table classes(class_no char(10) primary key,class_name char(20) not null,classtea_no char(5) foreign key references classteacher(clas
30、stea_no)tablespace linpeng_data;数据库管理与维护设计报告第 12 页 共 26 页4.2.12 请假信息表 qingjiacreate table qingjia(id number primary key,class_id char(10) foreign key references classes(class_no),stu_no char(10) foreign key references student(stu_no),leave_reason varchar2(200) not null,start_time datetime not null,e
31、nd_time datetime not null,day_number nubmer not null,qingjia_time datetime not null,class_tea_id char(5) foreign key references classteacher(classtea_no),class_tea_sp_status char(10),class_tea_sp_time datetime,coll_leader_sp_status char(10),coll_leader_id char(5) foreign key references collegeleader
32、(collegeleader_no),coll_leader_sp_time datetime)tablespace linpeng_data;第 5 章 数据库完整性设计5.1 创建存储过程用于统计学生查询某门课程的出勤情况create or replace procedure getMessage(stu_no in varchar2, course_no in varchar2, total_times out number)asabsence_times number;beginselect count(*) in to absence_times from kaoqin_record
33、 where stu_number=stu_no and course_no=course_no;total_times=absence_times;end;5.2 创建视图,使不同院系的领导只能查询到自己学院学生上课的考勤信息,假设软学院的 ID 为 5,以下代码为创建一个用于给软件学院领导查看本学院学生考勤信息的视图。create view rjxy as 数据库管理与维护设计报告第 13 页 共 26 页select kaoqin_record.kaoqin_id,kaoqin_record.sk_time,kaoqin_record.stu_number,kaoqin_record.s
34、tu_status,kaoqin_record.teacher_no,kaoqin_record.course_no from kaoqin_record,student where student.stu_no=kaoqin_record.stu_number and student.stu_faculty=5;5.3 创建触发器,当某学生某课程的缺勤次数超过一定次数时给出提示信息create or replace trigger alertMessageafter insert on kaoqin_record for each rowdeclarecurrent_times number
35、;beginselect count(*) into current_times from kaoqin_record where stu_number=:new.stu_number and course_no=:new.course_no;if(current_times = 3) thendbms_output.put_line(学号为: | :new.stu_number | 的学生该门课程被取消考试资格!);end if;end;总结这次课程设计,完成课题是教务管理系统 ,在教务管理系统的开发中采用了完整的数据库设计的全过程,从需求分析到概念结构设计,到逻辑结构设计,最后到数据库的实
36、施和维护,每一步都认真的分析和实施。当然,在本次课程设计的成果中还存在许多的不足之处,这就需要我们学习更多的知识,进行更深研究。通过本次 Oracle 数据库课程设计,将本学期所学的 Oracle 知识及数据库基础方面的知识得到了一综合性的应用,使我基本掌握了在软件项目的开发过程中数据库设计的基本流程,从需求分析到数据库的逻辑结构设计,再到数据库的物理结构设计等。为了提高系统的效率和可靠性,一些比较关键的功能都采用存储过程或函数封装在数据库端,在其它程序设计语言中直接调用。最后,感谢余老师在这次课程设计中给予我支持和帮助。参考文献:1 王永贵 Oracle 数据库管理与应用 中国矿业大学出版社
37、20092 赵文涛,数据库系统原理,中国矿业大学出版社,20063 安葳鹏,软件工程,中国矿业大学出版社,20074 张晓东 ,JSP+Oracle 数据库开发与实例, 清华 大学出版社 20085 向隅编 数据库基础及应用 邮电大学 出版社 2008数据库管理与维护设计报告第 14 页 共 26 页数据库管理与维护设计报告评分标准选题合理,功能简单 (D)有一定的工作量和实用价值 (C)功能设计丰富,有一定的难度系数 (B)选题及功能设计功能设计合理全面,能体现数据库的存储和整理数据的功能 (A)具备基本的数据表,数据量较少,但能够实现系统基本需要 (D)具备基本的数据表,数据量适中,实现了
38、一定的数据完整性 (C) 有多个数据表,数据量适中,有完善的数据完整性(B) 数据表和数据量有多个数据表,数据量充足,具有较强的数据安全性和数据完整性 (A)具备基本的数据表,有主外键约束 (D)创建了若干种的数据库对象,并加以利用 (C) 在实际应用中合理利用了各类数据库对象 (B)数据库对象具有身份验证、数据备份等较复杂的数据管理功能(A)利用存储过程实现了各种查询功能 (D)除查询功能,还实现了各种数据操作功能 (C)在上一条基础上,还实现了数据统计汇总功能 (B)功能实现合理利用函数、存储过程、触发器实现各种数据查询、操作、管理功能 (A)完成设计报告,阐述了系统功能,结构较完整 (D)开题报告反映设计思路,结构完整,格式较规范 (C)报告内容完整,图表使用准确,格式清晰,功能描述详尽 (B)设计报告报告内容完整,图表使用准确,描述详细,代码阐述清楚,反映系统执行流程 (A)教师签字: 总评成绩:数据库管理与维护设计报告第 15 页 共 26 页