《2022年数据库实训宣贯》由会员分享,可在线阅读,更多相关《2022年数据库实训宣贯(18页珍藏版)》请在金锄头文库上搜索。
1、1 JIANGXI AGRICULTURAL UNIVERSITY 本 科 课 程 实 训题目:数据库排课系统课程设计学院:软件学院小组成员:曾凡蔡玉洁学号: 20101509 20101508 专业:软件工程班级:软件 1002 班指导教师:黄欣职 称:教师二 0 一一年十二月名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 18 页 - - - - - - - - - 2 目录目录 . 2引言 . 3一.需求分析 . 3二.数据库设计 . 41.概念结构设计 . 42.
2、所有表的汇总和触发器 . 83. 存储过程(实现排课的时间不冲突等) . 16三.实训小结 . 16 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 18 页 - - - - - - - - - 3 引言目前我院教务处的许多事务都采用机进行管理,如学生选课系统、成绩查询系统等,但在每学期中,各科教师在拿到教务部门下发的实验任务后, 就必须到计算中心进行排课登记,排课人员面对这么多的上机实验课程,如何高效而迅速地安排机房。一直以来排课人员都是使用一张手工排课表,查找到空余机
3、房后再将该课程的排课信息填入其中,最后录入电脑进行打印后张贴到值班室,以供值班人员查阅。这样不仅工作繁琐,效率低下,而且只能安排上机的时间, 无法具体安排所用教室,增加了不少工作量,同时也不便于课程和机房的查询以及信息的分类汇总与统计。为解决这一系列的问题,我们设计和开发了排课系统。一.需求分析(1)部门分类:学校包括多个院,如软件院,经贸院、工学院、外语院、计信院,生工院等,而每个院又分为许多专业,每个专业又分为不同的班级;(2)课程分类:大中小班上课、计算机课、实训课(3)目标:自动排课系统将最复杂的排课部分交给计算机来完成,避免了手工排课容易产生教师时间安排冲突(即一位老师在名师资料总结
4、 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 18 页 - - - - - - - - - 4 同一时间只能给一个班上课)和教室时间安排冲突 (即一个教室同一时间只能有一个班上课)的缺点。用户只要将班级、课程和教室的各项资料输入, 确定合班上课的班级,剩下的排课部分则完全交给计算机。 如果资料输入有错误, 可以对各项资料进行添加、删除和修改,各项资料有所变动之后,则可以重新确定合班上课的班级,清除排课之后再重新进行自动排课。(3)故障处理要求: 当用户输入不合理时输出明确的错误提示
5、,比如输入为空,数据格式不正确等。(4)系统运行环境具有输入设备,安装了SQL SERVER 7.0或者 SQL SERVER 2000 数据库以及浏览器的WIN 98 或者 WIN 2000 环境。二.数据库设计1.概念结构设计1.实体型集:学校 .,学院、班级、学生、教师、课程、教学楼、教室2.实体型之间的联系:学校和学院:一个学院只能在一个学校,一个学校可由多个学院组成;存在“组成”的关系: 1:N 学院和班级:一个班级只能在一个学院,一个学院可由多个班级组成;存在“组成”的关系: 1:N 学院和学生:一个学生只能在一个学院,一个学院可由多个学生组成;存在“组成”的关系: 1:N 班级和
6、学生:一个学生只能属于一个班级,一个班级拥有多个学生;存在“属于”的关系: 1:N 学院和教师:一个教师只属于一个学院,一个学院拥有多个教师;存在“属于”的关系: 1:N 学生和课程:一个学生要学习多门课程,一门课程可以有多个学生学习;存在“学习”的关系: N:M 班级和课程:一个班级要学习多门课程,一门课程可以有多个班级学习;名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 18 页 - - - - - - - - - 5 存在“学习”的关系: N:M 教师和班级:一个教
7、师可以教多个班级,一个班级可以有多个任课教师;存在“任课”的关系: N:M 教师和课程:一个教师可教授多门课程,一门课程可由多个老师教;存在“授课”的关系: N:M 教学楼和教室:一个教室只能在一个教学楼,一个教学楼拥有多个教室;存在“拥有”的关系: 1:N 3.属性集:(1)实体型属性:学校.:学校代码,学校名称学院:学院代码,学院名称班级:班级码,班级名,年级,人数学生:学号 ,姓名,教师:教工号,姓名课程:课程号,课程名,学分,周学时,起止时间,任课老师教学楼:楼号,名称教室:教室编号,教室类型4.画出 ER 图,如下所示:(1)第一 .画出各个存在联系的实体型的ER 图:N 1 组成学
8、院院代码院名学校学 校 代学 校 名1 学院院代院名组成班级班 级码班 级名年级人数N N 1 组成学生学号姓名学院学院代码学院名称学院院代码院名属于教师教工号姓名1 N 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 18 页 - - - - - - - - - 6 班级班级码班 级名年级人数属于学生学号姓名1 N 学生学号姓名学习课程课程名起 止 时周学时课程号任 课 老M N学班级课程N M 课 程起 止 时周学任 课 老班 级码班 级名年级学习课 程人数学1 教师
9、教工姓名任课班级班 级号班 级名年级人数N 教师教工号姓名任课课程课程名起 止 时周学时课程号任 课 老M N学教学楼楼号名称拥有教室教 室 编号教室类型1 N 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 18 页 - - - - - - - - - 7 (2)总的 ER 图如下所拥有N 教学楼拥有N 学院教师属于1 N 1 N M N 组成任课M M N M N N 1 班级学生属学习开设教室课程授N 1 学习M N 组成1 M 学校1 组成1 M 名师资料总结 -
10、 - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 18 页 - - - - - - - - - 8 2.所有表的汇总和触发器(1)University 列名数据类型(精度范围)空/非空约束条件说明UniversityID Char(4) 非空Primary key 学校代码UniversityName Varchar(16)非空学校名称Create table University ( UniversityID Char(4) Primary key not null , -将学校代码设置
11、为主表名功能说明XUEYUAN 存储每个学院的信息CLASS 存储班级的基本信息STUDENT 存储学生的基本信息TEACHER 存储教师的基本信息COURSE 存储各个课程的基本信息TeacherBurring 存储教学楼的基本信息ClassRoom 存储教室的基本信息AssumeCourse存储教师在班级的任课信息TeachingCourse存储教师教授课程的信息StudyCourse存储班级学习课程的信息RoomandCourse存储教室与课程关系的信息ClassCourse CRoom存储班级、课程、教室之间关系的信息University存储学校的信息名师资料总结 - - -精品资料欢
12、迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 18 页 - - - - - - - - - 9 键,并不允许为空UniversityName Varchar(16)not null , -将学校名称设置不允许为空) Create trigger University_xuexiao On University For insert As begin Declare UniversityID Char(4) , UniversityName Varchar(16)Set UniversityID =(se
13、lcect UniversityID from inserted) Set UniversityName=(select UniversityName from insered) If( UniversityID=null and UniversityName=null) Begin Rollback End Else Insert into University values( UniversityID , UniversityName ) End (2) XUEYUAN列名数据类型(精度范围)空 / 非空约束条件说明YUANIDChar(4) 非空Primary key 院代码Univer
14、sitID Char(4) 非空Foreign key 学校代码YUANName Varchar(20) 非空院名Create table XUEYUAN(YUANID Char(4) Primary key not null , -将院代码设置为主键,并不允许为空UniversitID Char(4) not null , -将学校代码设置为不允许为空YUANName Varchar(20) not null , -将院名设置为不允许为空Foreign key UniversitID references University(UniversitID) -将学校代码设置为外键,被参照 表是
15、University,被参照列是 UniversitID)Create trigger XUEYUAN_xueyuan On XUEYUAN For insert As begin Declare YUANIDChar(4), UniversitIDChar(4),YUANName Varchar(20), i intSet YUANID=(select YUANID from inserted) Set UniversitID=(select UniversitID from inserted) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - -
16、 - - - - 名师精心整理 - - - - - - - 第 9 页,共 18 页 - - - - - - - - - 10 Set YUANName=(select YUANName from inserted) Set i=(select count(YUANID) from inserted If (i1) Begin Rollback End If(YUANID =null and UniversitID =null and YUANName=null) Begin Rollback End Else Insert into XUEYUANvalues(YUANID , Univer
17、sitID, YUANName) End (3) CLASS列名数 据 类 型 ( 精 度 范围)空 /非空约束条件说明ClassIDChar(4) 非空Primary key 能被唯一识别的班级号Year Char(4) 非空年级YUANID Char(4) 非空Foreign key 院代码ClassName Varchr(20) 非空班级名Total Char(3) 非空班级人数Create table CLASS(ClassID Char(4) Primary key not null , -将班级号 设置为主键,并不允许为空Year Char(4) not null , -将年级设置
18、为不允许为空YUANID Varchar(4) not null , -将院代码设置为不允许为空ClassName Varchr(20) not null , -将班级名设置为不允许为空Total Char(3) not null , -将班级人数设置为不允许为空Foreign key YUANID references XUEYUAN(YUANID) -将学院代码设置为外键,被参照 表是XUEYUAN,被参照列是YUANID)Create trigger CLASS_banji On CLASS For insert As begin Declare ClassID Char(4), Yea
19、rChar(4),YUANIDVarchar(4), ClassName Varchr(20), Total Char(3) ,i intSet YUANID=(select YUANID from inserted) Set ClassID =(select ClassID from inserted) Set Year =(select Year from inserted) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 18 页 - - - - - - - -
20、- 11 Set ClassName =(select ClassName from inserted) Set Total =(select Total from inserted) Set i=(select count(ClassID) from inserted If (i1) Begin Rollback End If(YUANID =null and ClassID =null and Year =null and ClassName =null and Total =null) Begin Rollback End Else Insert into CLASSvalues(YUA
21、NID , ClassID, Year, ClassName, Total) End (4) STUDENT列名数据类型(精度范围)空 / 非空约束条件说明StudentID Char(10) 非空Primary key 学生学号StudentName varChar(8) 非空学生姓名ClassID Char(4) 非空Foreignkey 能被唯一识别的班级号Create table STUDENT(StudentID Char(10) Primary key not null , -将学生学号设置为主键,并不允许为空StudentName varChar(8) not null , -将
22、学生姓名设置为不允许为空ClassID Char(4) not null , -将班级号 设置为不允许为空Foreign key ClassID references Class (ClassID) -将班级号 设置为外键,被参照表是 Class,被参照列是 ClassID)Create trigger STUDENT _xuesheng On STUDENT For insert As begin Declare StudentID Char(4), StudentName Char(4),ClassIDVarchar(20), i intSet StudentID =(select Stu
23、dentID from inserted) Set StudentName =(select StudentName from inserted) Set ClassID =(select ClassID from inserted) Set i=(select count(YUANID) from inserted 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 18 页 - - - - - - - - - 12 If (i1) Begin Rollback End
24、If(StudentID =null and StudentName =null and ClassID =null) Begin Rollback End Else Insert into STUDENTvalues(StudentID , StudentName, ClassID) End (5) TEACHER列名数 据 类 型 ( 精 度 范围)空/非空约束条件说明TeacherID Char(5) 非空Primary key 教工号TeacherName varChar(8) 非空教师名称YUANID Char(4) 非空Foreign key 院代码Create table TEA
25、CHER(TeacherID Char(5) Primary key not null , -将教工号设置为主键, 并不允许为空TeacherName varChar(8) not null , -将教师姓名设置为不允许为空YUANID Char(4) not null , -将院代码 设置为不允许为空Foreign key YUANID references XUEYUAN(YUANID) -将院代码 设置为外键,被参照 表是XUEYUAN,被参照列是YUANID)Create trigger TEACHER _teacher On TEACHERFor insert As begin De
26、clare TeacherIDChar(4), TeacherName Char(4), YUANIDVarchar(20), i intSet TeacherID =(select TeacherID from inserted) Set TeacherName =(select TeacherName from inserted) Set YUANID =(select YUANID from inserted) Set i=(select count(YUANID) from inserted If (i1) Begin Rollback End If(TeacherID =null a
27、nd TeacherName =null and YUANID =null) Begin 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 18 页 - - - - - - - - - 13 Rollback End Else Insert into Teacher values(TeacherID , TeacherName, YUANID) End (6) COURSE列名数 据 类 型 ( 精 度 范围)空/非空约束条件说明CourseIDChar(4) 非空Pri
28、mary key 课程号CourseName Varchar(20) 非空课程名称Credit Char(3) 非空学分Week Period Char(6) 非空周学时Start and End Char(5) 非空起止时间TeacherID Char(4) 非空Foreignkey 任课老师Create table COURSE(CourseID Char(4) Primary key not null , -将课程号设置为主键,并不允许为空CourseName Char(20) not null , -将课程名称设置为不允许为空Credit Char(3) not null , -将学分
29、设置为不允许为空Week Period char(6) not null , -将周学时 设置为不允许为空Start and End char(5) not null , -将起止时间 设置为不允许为空TeacherID Char(4) not null , -将教工号 设置为不允许为空Foreign key TeacherID references TEACHER(TeacherID) -将教工号 设置为外键,被参照 表是TEACHER,被参照列是 TeacherID)(7) TeacherBurring列名数据类型(精度范围)空 / 非空约束条件说明TeachingBuildingName
30、 Varchar(20)非空教学楼名UniversityID Char(4) 非空Foreign key 学校代码Create table TeacherBurring(TeachingBuildingName Varchar(20)not null , -将教学楼名 设置为不允许为空UniversityID Char(4) not null , -将学校代码 设置为不允许为空Foreign key UniversityID references University (UniversityID ) -将院代码 设置为外键,被参照 表是 University,被参照列是 UniversityI
31、D)(8) ClassRoom列名数 据 类 型 ( 精 度 范围)空/非空约束条件说明ClassroomID Varchar(10)非空Primary key 教室编号名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 18 页 - - - - - - - - - 14 Teaching BuildingName Varchar(20)非空教学楼名Style Varchar(20) 非空类型Create table ClassRoom(ClassroomID Varcha
32、r(10)Primary key not null , -将教室编号 设置为主键,并不允许为空Teaching BuildingName varChar(20) not null , -将教学楼名 设置为不允许为空Style Varchar(20) not null , -将类型设置为不允许为空)(9)AssumeCourse列名数 据 类 型 ( 精 度 范围)空/非空约束条件说明ClassIDVarchar(10)非空Foreign key 班级号TeacherID Char(4) 非空Foreign key 教工号Create table AssumeCourse(ClassID Var
33、char(10)not null , -将班级号 设置为主键不允许为空TeacherID Char(4) not null , -将教工号 设置为不允许为空Foreign key TeacherID references Teacher (TeacherID) -将院代码 设置为外键,被参照 表是 Teacher ,被参照列是 TeacherID)(10)TeachingCourse列名数 据 类 型 ( 精 度 范围)空/非空约束条件说明TeacherIDChar(4) 非空Foreign key 教工号CourseIDChar(4) 非空Foreign key 课程号StudyYear C
34、har(9) 非空学年Studyterm Char(2) 非空学期Create table TeachingCourse(TeacherID char(4)not null , -将教工号 设置为不允许为空CourseID Char(4) not null , -将课程号 设置为不允许为空StudyYear Char(9) not null , -将学年设置为不允许为空Studyterm Char(2) not null , -将学期设置为不允许为空Foreign key TeacherID references Teacher (TeacherID) -将院代码 设置为外键,被参照 表是 T
35、eacher ,被参照列是 TeacherID Foreign key CourseID references Course (CourseID) -将院代码设置为外键,被参照表是 Course,被参照列是 CourseID)(11)StudyCourse列名数 据 类 型 ( 精 度 范空/非空约束条件说明名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 18 页 - - - - - - - - - 15 围)ClassIDchar(4)非空Foreign key 班级
36、号CourseIDChar(4) 非空Foreign key 课程号StudyYear Char(9) 非空学年Studyterm Char(2) 非空学期(ClassID char(4)not null , -将班级号 设置为不允许为空CourseID Char(4) not null , -将课程号 设置为不允许为空StudyYear Char(9) not null , -将学年设置为不允许为空Studyterm Char(2) not null , -将学期设置为不允许为空Foreign key ClassID references Class (ClassID) -将院代码 设置为外
37、键,被参照表是 Class,被参照列是 ClassID Foreign key CourseID references Course (CourseID) -将院代码设置为外键,被参照表是 Course,被参照列是 CourseID)(12)RoomandCourse列名数 据 类 型 ( 精 度 范围)空/非空约束条件说明CourseID Char(4) 非空Foreign key 课程号ClassroomID Varchar(4)非空Foreign key 教室编号Week Char(6)非空星期schooltime Char(10)非空上课时间(CourseID char(4)not n
38、ull , -将课程号 设置为不允许为空ClassroomID Char(4) not null , -将教室编号 设置为不允许为空Week Char(6) not null , -将星期设置为不允许为空schooltime Char(10) not null , -将上课时间 设置为不允许为空Foreign key ClassroomID references Classroom (ClassroomID) -将院代码 设置为外键,被参照 表是 Class ,被参照列是 ClassID Foreign key CourseID references Course (CourseID) -将院
39、代码设置为外键,被参照表是 Course,被参照列是 CourseID)(13)ClassCourse Room列名数 据 类 型 ( 精 度 范围)空/非空约束条件说明ClassID Char(4) 非空Foreign key 班级号CourseID Char(4) 非空Foreign key 课程号ClassroomID Varchar(4)非空Foreign key 教室编号Week Char(6)非空星期schooltime Char(10)非空上课时间(ClassID char(4)not null , -将班级号 设置为不允许为空CourseID char (4)not null
40、, -将课程号设置为不允许为空ClassroomID Char(4) not null , -将教室编号 设置为不允许为空Week Char(6) not null , -将星期设置为不允许为空schooltime Char(10) not null , -将上课时间 设置为不允许为空Foreign key ClassroomID references Classroom (ClassroomID) -将院代码 设置为名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 15 页,共 18
41、 页 - - - - - - - - - 16 外键,被参照 表是 Class ,被参照列是 ClassID Foreign key CourseID references Course (CourseID) -将院代码设置为外键,被参照表是 Course,被参照列是 CourseID Foreign key ClassID references Class (ClassID) -将院代码 设置为外键,被参照表是 Class,被参照列是 ClassID)3. 存储过程(实现排课的时间不冲突等)Create procedure paike (renshu int,banjihao char(4)
42、, As Begin Declare style char(4),countrenshu char(4) If(renshu100) Begin Insert into student(Week) values(Select Weekfrom ClassCourse Room where ClassroomID in(Select ClassroomID from classroom where style= da ) End If(renshu45and renshu100) Begin Insert into student(Week) values(Select Week from Cl
43、assCourse Room where ClassroomID in(Select ClassroomID from classroom where style= zhong ) End If(renshu45) Begin Insert into student(Week) values(Select Week from ClassCourse Room where ClassroomID in(Select ClassroomID from classroom where style= xiao ) end 三.实训小结通过这次的实训使我们学到了很多,同时也让我们意识到我们要学的更多。
44、从需求分析到数据库的设计,编写、画图、 调试、修改、完善、到最后的实训报告, 每个人都付出了时间和精力去做好自己的任务帮助队友,所以团队的合作和队友之间的相互协助非常重要。通过实训让我们更深一步的对自己的专业,对自己的能力, 对自己所学的有正确的认名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 16 页,共 18 页 - - - - - - - - - 17 识,并且能在以后的学习中不断提高和完善自己。这次实训在大家的帮助下,得以圆满的成功,无论是团队合作这方面还是个人动手这方面,我
45、们都得到了很好的锻炼。也通过这次实训,我们对数据库这门课有了对知识更进一步的渴望。我相信,汗水不会白费的,我们以后的成功是有目共睹的。本学期的课业接近尾声,感谢黄老师, ,感谢老师教我们这门课,老师教的很好,只是我们领悟的不够。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 17 页,共 18 页 - - - - - - - - - 18 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 18 页,共 18 页 - - - - - - - - -