数据库-教务管理系统-综合实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

华北科技学院计算机系综合性实验

实验报告

课程名称《数据库系统A》

实验学期2011 至2012 学年第 2 学期学生所在系部计算机学院

年级2010 专业班级网络B101班

学生姓名学号

任课教师

实验成绩

计算机系制

《数据库系统A》课程综合性实验报告

开课实验室:软件开发实验室(一)2012年6月6日

在将E-R图向关系模型转换后,还应根据局部应用的需求,对不同级别的用户定义不同的视图,这样不仅可以在视图中重新定义某些属性名,使用户使用更方便,而且还可以通过视图保证系统的安全性。

在本次的教务管理系统数据库中,我针对使用该数据库最频繁的学生和教师用户建立了相关视图,其中包括对系别、教师、课程的分配视图;对学生学号、成绩、等相关信息的查询和教师基本信息的查询等三个视图,这样,对这些经常使用的查询,用户就可以通过视图来查询,大大简化了用户的使用。

创建的三个视图的截图如下:

教师授课安排视图:

学生成绩查询视图:

教师基本信息查询视图:

4.物理设计

该数据库中每一个关系模式的主码分别为系统自动设置的索引,如学生关系模式中的学号,教师关系模式中的工作证号,系别中的系别号等,同时,通过对实际操作的思考,为了查询某系的老师的方便,我们还需要在Teacher表中建立一个“系代号”Dno的索引;又因为查询操作很多都通过学生姓名查找的,所以还需要在Student表姓名列sname上建立一个索引等,这样大大简化查询操作。

5.数据库的实现

(1)创建库、表

在该教务管理系统中包括了学生表、教师表、选课表、系别表、班级表、课程表、教师与班级的联系表等多个表。在此,我以学生表为例进行说明表的创建。

一个完整的表必须包括对实体完整性、参照完整性、用户定义完整性的三种完整性的定义。

在学生表中,首先考虑表的实体完整性要求,在该学生表中学号被设为主码,用PRIMARY KEY定义,且该表含有多个属性,所以学号就是表级约束条件,从而完成了学生表的实体完整性的定义。

其次,对于学生表的参照完整性,系号(Dno)、班号(Class)是该学生表的外码,同时它还是班级系别Sdept表、Class表的主码,所以对其用FOREING KEY短语进行定义,并用REFERENCES短语指明该外码是参照那些表的主码,从而完成对表的参照完整性的定义。

最后,是表的用户定义完整性,在该学生表中,结合实际情况我们不难想到应该定义一个姓名Sname为非空的约束条件和性别Ssex只能为“男”或“女”二者选其一的约束条件,其中姓名的非空用UNIQE定义即可,而性别用CHECK语句定义即可。

此外,除了对这三种完整性性要求的定义外,再加上该表中的一些其他的属性列如年龄Sage的创建,从而共同完成了学生表的创建。

创建学生表的代码为:

CREATE TABLE student

(Sno CHAR(10) PRIMARY KEY,

Sname CHAR(20) NOT NULL,

Ssex CHAR(2) CHECK(Ssex IN ('男','女')),

Sage SMALLINT,

Dno CHAR(10),

Class CHAR(10),

FOREIGN KEY (Class) REFERENCES Class(Class)

);

创建的学生表截图如下:

另外,在创建表的同时还要注意有时需要创建两个表之间的级联,例如,此教务管理系统中SC表是参照学生表的学号和课程表的课号建立的,所以应该在SC表中建立其与Student 表与Course表的级联;课程表又是参照教师表中的教师工作证号建立的,所以应该建立一个course表与教师teacher表的级联;班级表也是参照教师表中的教师工作证号建立的,所以也应该建立一个class表与教师teacher表的级联,这样当参照表发生改变时能同时在目标表中也发生相应改变,保证数据库中数据的正确有效性。

(2)创建用户

该教务管理系统的主要用户有学生用户,老师用户,教务管理员和系统管理员等四种,所以需要创建这四种类型的用户,并授予其相应的权限。

对于学生用户就只能授予其查询学生基本信息student表的权限,老师相关信息视图V-teacher表的权限,查询学生成绩视图V_student表的权限,以及查询教师授课分配图DTC 表的权限;

教师则具有查询学生基本信息Student表的权限,查询教师授课的视图DTC表的权限,

还具有修改自己基本信息teacher表的权限,还有登记插入学生成绩信息即修改SC表的权限;

教务管理员具有修改本系一切相关信息的权力,包括查询、删除、增添、修改,而系统管理员具有创建各种表、视图、触发器及存储过程并对各个用户进行相应授权的权力。

(3)使用触发器、存储过程等相关技术。

在教务管理数据库中,鉴于存在教师的退休及学生退学或毕业的情况,所以必然会有删除这些信息的操作,为了方便起见,所以有必要设计一个“删除教师信息”触发器以及“删除学生信息”触发器。同时教务管理系统的数据库必然涉及到学生选课退课的问题,所以还需要设计一个关于选课退课系统的“选课”触发器与“删除选课”触发器。

“删除教师信息”与“删除学生信息”触发器的过程大致相同,就“删除教师信息”触发器来说,当删除教师时如果该教师在course表中有其授课信息,则当删除该教师后必会引起course表不可用,所以创建的该触发器当所要删除的教师号存在于course表里时,系统就应该给出“course表里有该教师的课程,请先删除course表里的记录!”的提示信息;就“删除学生信息”触发器来说,如果该学生退学时在选课表里仍有其选课记录,则当删除该学生信息后,在SC表里的相关选课记录必然成为无效,所以在此设置了一个判断即将退学的学生是否能删除的触发器,当退学学生在SC表里有该学生的记录时应该给出“SC表里有该学生的选课课程,请先删除SC表里的记录!”的信息提示。

“删除教师信息”触发器操作演示如下所示:

“选课”与“删除选课”触发器的过程大致相同,就“选课”触发器来说当所选课程的课程号存在于课程表里时,系统就会将该条的选课记录添加到SC表中,并给出“选课成功”的信息提示,同样删除选课与此类似,当要删除的选课的课程号存在于SC表时,系统就会将该条的选课记录从SC表中删除,并给出“删除选课成功”的信息提示。

演示执行“选课”触发器的操作结果截图如下:

相关文档
最新文档