第一篇:数据库项目总结(完整的教务系统设计流程)
网络工程3组
系统名称:系教务管理系统
组员:刘宇明,林昉,李龙騑,黄德志,胡严正,曾宇燎
主要界面:
----功能选择界面
-------------登陆界面!
--排课界面
----专业介绍
----专业添加界面
---课程添加界面
-----教师添加界面
-----教材添加界面
-----修改密码界面
---关于界面
----退出界面
第二篇:教务系统数据库总结报告
教务系统数据库总结报告
常州信息学院 网络095 在信息时代的今天,数据成为传递信息的重要载体,而随着信息的不断增加,数据也变得相当繁琐。因此数据库的出现,正是为数据的处理提供了良好的媒介。
例如一所大学,通常由校长办公司、教务处、财务处、学工处、团委、招就处、科技处。同时下设各系以及各分处。因此这些工作如果处理起来,或许需要几百人,而且还不能保证信息处理的有效性与正确率。如果使用数据库,我们可以轻松解决这些问题。学校行政管理,可以使用数据库系统,保证每个教师的所带课程,上班情况,工资情况以及每位教师获奖与资历等信息,都可以通过数据库统一管理。学生方面,每个学生自从正式录取输入档案信息后,到入学注册都可用教务系统数据库来管理。学生的选课、排课,考试成绩、课堂表现,在校表现,生活状况等、以及就业乃至毕业离校都可以通过系统来自动管理。
系统处理信息方便而准确,近一万人的学生和老师,系统可以用很短的时间处理。所需的工作仅是首次的信息输入,如果需要,便可以永久保存。信息处理准确性高,虽然数据信息量大,但是系统依然能很好的处理。因此对于学校来说,教务管理系统的使用可以极大的方便教务教学任务,很大幅度的提高工作效率。
数据库可以说是信息处理的载体,庞大的数据通过数据库实现了有序而快速的调入与调出。数据库之所以能如此高效率的工作,得益于其工作原理。在关系数据库中,对数据的操作几乎全部建立在一个或多个关系表格上,通过对这些关系表格的分类、合并、连接或选取等运算来实现数据的管理。dBASEII就是这类数据库管理系统的典型代表。对于一个实际的应用问题(如人事管理问题),有时需要多个关系才能实现。用dBASEII建立起来的一个关系称为一个数据库(或称数据库文件),而把对应多个关系建立起来的多个数据库称为数据库系统。dBASEII的另一个重要功能是通过建立命令文件来实现对数据库的使用和管理,对于一个数据库系统相应的命令序列文件,称为该数据库的应用系统。因此,可以概括地说,一个关系称为一个数据库,若干个数据库可以构成一个数据库系统。数据库系统可以派生出各种不同类型的辅助文件和建立它的应用系统。因此具备这样的功能,数据库才能在信息处理中发挥着重要的作用。、在数据库的学习中,我们可以利用企业管理器和查询分析器两种方式快速尔简单的使用数据库。利用企业管理器操作起来全部是图形界面,简单易学。查询分析器全部用代码实现,虽然代码比较繁琐,但是这样实现快捷,功能强大。在数据库的学习中,刚开始主要是利用企业管理器,去创建一些数据库,表格及一些属性关系及应用。后来,可以使用
查询分析器借助代码做一些简单的查询,数据库和表格的创建。但是其中的一些关系及属性无法创建,这也正是数据库学习的核心与关键。
得力于数据库在信息处理中扮演如此重要的作用,因此数据库的学习应该作为以后学习的重点,相信在不久的将来,数据库一定会在互联网中发挥着更加重要的作用,数据库也定会成为今后的热门专业和学习方向。
第三篇:教务管理系统 数据库实例设计
第17章 数据库系统设计实例
本章以一个考务管理系统的设计过程为例,介绍在VB 6.0+SQL Server 2000环境中开发数据库系统的一般方法。
17.1 系统概述
17.1.1 系统功能
本系统用于从考生报名、产生准考证到录取考生和打印成绩单即对考生考试和录取全过程进行管理的考务系统,包含主要功能如下:
考生报名,按报名顺序产生报名号
产生准考生号和以紧凑方式打印准考证 输入考生考试成绩和输入录取合格标准 根据合格标准录取上线考生 打印考生成绩单和考生录取通知书 设置系统用户和系统初始化
17.1.2 设计技巧
本系统设计中的一些技巧如下: 公共模块设计(参见17.4节的Module1.Bas模块)SQL Server数据库设计(参见17.3节)VB菜单设计方法(包括菜单项的有效性设计,对于“一般操作员”,使若干菜单项无效。参见menu多文档窗体设计过程)统一的数据编辑设计方法:以ksb表为例进行说明:为了编辑其记录,设计了edks窗体,在其中的DataGrid数据网格控件中显示所有已输入的考生记录。用户可以先通过“设置条件”框架查找到满足指定条件的考生记录,然后选择“修改”或“删除”命令按钮进行考生记录的修改或删除,或者选择“添加”命令按钮输入新的考生记录。 VB报表设计方法(包括使用Data Report设计器和PrintForm方法)图像数据的存取方法(参见edks窗体设计过程)事件编程技术:一些数据编辑窗体(如edks等窗体)上有两个事件过程即Load和Activate,它们的执行过程是:在启动本窗体时先执行Load(仅执行一次)事件过程,
第四篇:数据库程序设计---教务辅助管理系统
数据库设计实例 教务管理系统
数据库实验七 数据库设计
题目要求:
设计一个教务管理系统。要求管理包括:学生的档案,学生选课的情况,学生每学期的综合测评,教师档案,教师工作量等等。具体考核方法根据自己了解的实际情况处理。
假设此次设计的教务系统是整个学生管理系统数据库中的一部分,整个系统至少还包括学籍管理等其他子系统。
在初期设计时,先关注与教务系统有关的数据。在完成对教务管理系统的建模后再对整个系统进行合并,总终得到整个系统的设计方案。
一、需求分析
1、根据分析可以画出该教务管理系统的数据流图:
学生 选课 上课 考试 测评 选课单 允许考试 成绩单 老师档案 课程简介 教室安排 试卷 考场安排 测评报告单 学生名单 教师 选定教材 申报 课表
2、数据字典
数据结构:学生
含义说明:是教务管理系统的一个核心数据结构,定义了学生的有关信息
组成:学号、姓名
数据项:学号
含义说明:唯一标识每一个学生
别名:学生编号 类型:字符型 长度:9位
取值范围:190000000 – 999999999
取值含义:前四位表明学生所在年级,后五位安顺序编号
数据项:姓名
含义说明:表示学生的姓名 类型:字符型 长度:10位
取值范围:任意字符
数据结构:教师
含义说明:教务管理系统的核心数据结构之一,定义了教师的有关信息 组成:教师号,教师姓名
数据项:教师号
含义说明:教师的编号 类型:字符型 长度:5位
取值范围:10000 – 99999
数据项:教师姓名
含义说明:教师的姓名 类型:字符型 长度:10位
取值范围:任意合法的字符
数据结构:课程
含义说明:教务管理系统的核心数据结构之一,定义了课程的有关信息 组成:课程号,课程名,课程描述,教师,教室,教科书,学分
数据项:课程号
含义说明:课程的编号 类型:字符型 长度:4
取值范围:0001 – 9999
数据项:课序号
含义说明:对于同一课程,由不同老师教授,用课序号来区分 类型:字符型 长度:2
取值范围:01 – 99
数据项:课程名
含义说明:课程的名称 类型:字符型 长度:10
取值范围:任意合法的字符
数据项:课程描述
含义说明:课程内容的基本描述 类型:字符型 长度:200
取值范围:任意合法字符
数据项:教科书
含义说明:课程所用的教科书 类型:字符型 长度:20
取值范围:任意合法字符
数据项:学分
含义说明:课程的学分 类型:整型 长度:1
取值范围:1-9
数据结构:教室
含义说明:上课所用的教室
组成:教室编号,教室地址,教室容量
数据项:教室编号
含义说明:教室的编号 类型:字符 长度:5
取值范围:00001-99999
数据项:教室地址
含义说明:标明教室的地址 类型:字符 长度:30
取值范围:任意合法的字符
数据项:教室容量
含义说明:教室的容纳学生的数量 类型:整型
取值范围:正整数
数据结构:选课记录
含义说明:纪录学生选课的纪录 组成:学生,课程,成绩
数据项:成绩
含义说明:选课学生本学期的成绩
类型:浮点数
范围:0.0 – 100.0
处理过程:分配教室
说明:为所有课程分配上课教室 输入:课程,教室 输出:教室安排
处理:学期课程决定后,要为每个课程安排上课地点,要求上课的地点不能冲突且上课人数不能超过教室容量。
处理过程:分配考场
说明:在考试日期,为所有课程分配考场
输入:课程,教室
输出:考场安排
处理:为每个课程安排考场,考试时间和地点不能冲突且考试人数不能超过考场容量。
数据存储:成绩单
说明:记录学生本学期所有课程成绩 流入数据流:学生所有的选课记录 流出数据流:学生的成绩单 数据量:由学生的人数决定 存取方式:随机存取
二、概念结构设计
1、根据需求分析画出E-R图:
选修 学生 教师 课程 m n 讲授 1 n 教科书 n
成绩 教室 开设 1 n
2、根据E-R图写出各个实体的属性描述
学生:{学号,姓名}
课程:{课程号,课程名,课程描述,学分} 教师:{教师号,教师名,课程数} 教室:{教室编号,地址,容量}
3、视图的集成
假设在学生管理系统的学籍管理系统中存在另一个学生实体,其中还包括以下信息:性别,所属专业,所属班级。为了使两个实体保持一致,对两个实体取并集得到新的学生实体: 学生:{学号,姓名,性别,专业,班级}
三、逻辑结构设计
1、由E-R图向数据模型的转换
一个实体型转换为一个关系模式。实体的属性就是关系的属性。实体的码就是关系的码。所以,E-R图中的属性描述可直接转换为相应的关系模式。
2、对于剩余的一对多和多对多联系可以如下表示
学生-课程:{学号,课程号,课序号,成绩} 课程-教师:{课程号,课序号,教师号} 课程-教科书:{课程号,课序号,教科书}
教室-课程:{教室号,时间,课程号,课序号}
其中 课程-教师 与 课程-教科书 具有相同的主码,可以合并成一个关系 教学:{课程号,课序号,教师号,教科书}
最后得到的关系模式为
学生:{学号,姓名,性别,专业,班级} 课程:{课程号,课程名,课程描述,学分} 教师:{教师号,教师名,课程数} 教室:{教室号,地址,容量}
学生-课程:{学号,课程号,课序号,成绩} 教学:{课程号,课序号,教师号,教科书} 教室-课程:{教室号,时间,课程号,课序号}
3、用户外模式
根据需求,为计算综合测评增加一个外模式,因为综合测评只在学期末进行,查询次数不多,所以没有必要用冗余的方法来提高查询效率,只需要建立一个外模式视图即可。
测评{学号,学生姓名,平均成绩}
4、根据设计写出相应的SQL语句:
CREATE TABLE student(Sno
VARCHAR(9)
CONSTRAINT pk_student PRIMARY KEY,Sname
VARCHAR(10)NOT NULL,Sex
VARCHAR(1)
NOT NULL,Major
VARCHAR(10)
NOT NULL,Class
VARCHAR(10)
NOT NULL,CHECK
(Sex = 'f' OR Sex = 'm'))
CREATE TABLE course(Cno
VARCHAR(4)
CONSTRAINT pk_course PRIMARY KEY,Cname
VARCHAR(10)
NOT NULL,Describe
VARCHAR(200),Mark
INTEGER)
CREATE TABLE teacher(Tno
VARCHAR(5)
CONSTRAINT teacher_pk PRIMARY KEY,Tname
VARCHAR(10)
NOT NULL,Ccnt
INTEGER
NOT NULL DEFAULT 0)
CREATE TABLE classroom(Rno
VARCHAR(5)CONSTRAINT pk_classroom PRIMARY KEY,Locate
VARCHAR(30)NOT NULL,Cap
INTEGER CHECK
(Cap > 0))
CREATE TABLE tech(Cno
VARCHAR(4)NOT NULL CONSTRAINT fk_course_cno FOREIGN KEY REFERENCES course(Cno)ON UPDATE CASCADE
--级联更新
ON DELETE CASCADE,--级联删除
SCno
VARCHAR(2)NOT NULL,Tno
VARCHAR(5)CONSTRAINT fk_teacher_tno FOREIGN KEY REFERENCES teacher(Tno)
ON UPDATE CASCADE
ON DELETE CASCADE,Book
VARCHAR(20)
CONSTRAINT pk_tech PRIMARY KEY(Cno,SCno))
CREATE TABLE SC(Sno
VARCHAR(9)NOT NULL CONSTRAINT fk_student_sno FOREIGN KEY REFERENCES student(Sno)
ON UPDATE CASCADE
ON DELETE CASCADE,Cno
VARCHAR(4)NOT NULL CONSTRAINT fk_sc_course_cno FOREIGN KEY REFERENCES course(Cno)
ON UPDATE CASCADE
ON DELETE CASCADE,SCno
VARCHAR(2)NOT NULL,Score FLOAT
CONSTRAINT pk_sc PRIMARY KEY(Sno,Cno,SCno))
CREATE TABLE RC(Rno
VARCHAR(5)CONSTRAINT fk_classroom_rno FOREIGN KEY REFERENCES classroom(Rno)
ON UPDATE CASCADE
ON DELETE CASCADE,Time
DATETIME,Cno
VARCHAR(4)NOT NULL CONSTRAINT fk_rc_course_cno FOREIGN KEY REFERENCES course(Cno)
ON UPDATE CASCADE
ON DELETE CASCADE,SCno
VARCHAR(2)NOT NULL
CONSTRAINT pk_rc PRIMARY KEY(Rno,Time))
为进行综合测评增加一个外模式 CREATE VIEW assess AS
SELECT SC.sno, sname, AVG(score)as average FROM SC,Student where SC.sno = student.sno
GROUP BY SC.sno,sname
为了符合数据的参照完整性约束,避免学生选课的时候选择一个不存在的课程号-课序号组,增加一个外键约束。ALTER TABLE sc
ADD CONSTRAINT fk_sc_tech FOREIGN KEY(Cno,SCno)REFERENCES tech(Cno,SCno)
ON UPDATE CASCADE
ON DELETE CASCADE
为了在插入一个新课程时能级联更新教师的工作量,增加一个触发器。此任务也可以通过建立一个外模式视图来动态统计,为了练习的目的这里采用了触发器
CREATE TRIGGER workcnter On tech AFTER INSERT ,UPDATE, DELETE AS BEGIN
DECLARE @T VARCHAR(5)
IF EXISTS
(SELECT TOP 1 Tno FROM INSERTED)
BEGIN
SET @T =(SELECT TOP 1 Tno FROM INSERTED)
UPDATE teacher SET Ccnt = Ccnt + 1 WHERE Tno = @T
END
IF EXISTS
(SELECT TOP 1 Tno FROM DELETED)
BEGIN
SET @T =(SELECT TOP 1 Tno FROM DELETED)
UPDATE teacher SET Ccnt = Ccnt1 WHERE Tno = @T END END 关于课程容量:如何保证选课的学生数量不超过教室的容量?
初步解决办法是:在学生选课时建立暂时不考虑容量问题,都加渗透一个临时的SC表中。然后,在选课结束后将未超额的记录直接加渗透SC表,超额的课程进行抽签,将命中部分学生的选课记录插入SC表,直到人数符合课程容量的要求为止。
抽签的功能较适合用顶层的高级语言来实现。在选课结束后,选超额课程的学生需登陆选课系统进行抽签,抽签的过程可以使用概率算法,如果抽中,系统再将选课记录插入SC表,否则就从临时表中删除。所以,在数据库系统中,没有对SC表的插渗入渗出操作进行约束。
本文来自CSDN博客,转载请标明出处: http://blog.csdn.net/lesky/archive/2006/12/25/1460 966.aspx
数据库设计---教务管理系统
2009年12月03日 星期四 11:04 P.M.题目要求:
设计一个教务管理系统。要求管理包括:学生的档案,学生选课的情况,学生每学期的综合测评,教师档案,教师工作量等等。具体考核方法根据自己了解的实际情况处理。
假设此次设计的教务系统是整个学生管理系统数据库中的一部分,整个系统至少还包括学籍管理等其他子系统。
在初期设计时,先关注与教务系统有关的数据。在完成对教务管理系统的建模后再对整个系统进行合并,总终得到整个系统的设计方案。
一、需求分析
1、根据分析可以画出该教务管理系统的数据流图: 学生
选课
上课
考试
测评
选课单
允许考试
成绩单
老师档案
课程简介
教室安排
试卷
考场安排
测评报告单 学生名单
教师
选定教材
申报
课表
2、数据字典 数据结构:学生
含义说明:是教务管理系统的一个核心数据结构,定义了学生的有关信息 组成:学号、姓名 数据项:学号
含义说明:唯一标识每一个学生 别名:学生编号 类型:字符型 长度:9位
取值范围:190000000 – 999999999
取值含义:前四位表明学生所在年级,后五位安顺序编号 数据项:姓名
含义说明:表示学生的姓名 类型:字符型 长度:10位 取值范围:任意字符
数据结构:教师 含义说明:教务管理系统的核心数据结构之一,定义了教师的有关信息
组成:教师号,教师姓名
数据项:教师号
含义说明:教师的编号
类型:字符型
长度:5位
取值范围:10000 – 99999
数据项:教师姓名
含义说明:教师的姓名
类型:字符型
长度:10位
取值范围:任意合法的字符
数据结构:课程
含义说明:教务管理系统的核心数据结构之一,定义了课程的有关信息 组成:课程号,课程名,课程描述,教师,教室,教科书,学分
数据项:课程号 含义说明:课程的编号 类型:字符型 长度:4 取值范围:0001 – 9999 数据项:课序号
含义说明:对于同一课程,由不同老师教授,用课序号来区分 类型:字符型 长度:2
取值范围:01 – 99 数据项:课程名 含义说明:课程的名称 类型:字符型 长度:10
取值范围:任意合法的字符 数据项:课程描述
含义说明:课程内容的基本描述 类型:字符型 长度:200
取值范围:任意合法字符 数据项:教科书
含义说明:课程所用的教科书 类型:字符型 长度:20
取值范围:任意合法字符 数据项:学分 含义说明:课程的学分 类型:整型 长度:1 取值范围:1-9 数据结构:教室
含义说明:上课所用的教室
组成:教室编号,教室地址,教室容量 数据项:教室编号 含义说明:教室的编号 类型:字符 长度:5
取值范围:00001-99999 数据项:教室地址 含义说明:标明教室的地址 类型:字符 长度:30
取值范围:任意合法的字符 数据项:教室容量
含义说明:教室的容纳学生的数量 类型:整型 取值范围:正整数 数据结构:选课记录
含义说明:纪录学生选课的纪录 组成:学生,课程,成绩
数据项:成绩
含义说明:选课学生本学期的成绩
类型:浮点数 范围:0.0 – 100.0 处理过程:分配教室
说明:为所有课程分配上课教室 输入:课程,教室 输出:教室安排
处理:学期课程决定后,要为每个课程安排上课地点,要求上课的地点不能冲突且上课人数不能超过教室容量。
处理过程:分配考场
说明:在考试日期,为所有课程分配考场
输入:课程,教室
输出:考场安排
处理:为每个课程安排考场,考试时间和地点不能冲突且考试人数不能超过考场容量。
数据存储:成绩单
说明:记录学生本学期所有课程成绩 流入数据流:学生所有的选课记录 流出数据流:学生的成绩单 数据量:由学生的人数决定 存取方式:随机存取
二、概念结构设计
1、根据需求分析画出E-R图:
选修
学生
教师
课程
m n 讲授 n 教科书
n 成绩
教室
开设 n
2、根据E-R图写出各个实体的属性描述 学生:{学号,姓名}
课程:{课程号,课程名,课程描述,学分} 教师:{教师号,教师名,课程数} 教室:{教室编号,地址,容量}
3、视图的集成
假设在学生管理系统的学籍管理系统中存在另一个学生实体,其中还包括以下信息:性别,所属专业,所属班级。为了使两个实体保持一致,对两个实体取并集得到新的学生实体: 学生:{学号,姓名,性别,专业,班级}
三、逻辑结构设计
1、由E-R图向数据模型的转换
一个实体型转换为一个关系模式。实体的属性就是关系的属性。实体的码就是关系的码。所以,E-R图中的属性描述可直接转换为相应的关系模式。
2、对于剩余的一对多和多对多联系可以如下表示 学生-课程:{学号,课程号,课序号,成绩} 课程-教师:{课程号,课序号,教师号} 课程-教科书:{课程号,课序号,教科书} 教室-课程:{教室号,时间,课程号,课序号}
其中 课程-教师 与 课程-教科书 具有相同的主码,可以合并成一个关系 教学:{课程号,课序号,教师号,教科书} 最后得到的关系模式为
学生:{学号,姓名,性别,专业,班级} 课程:{课程号,课程名,课程描述,学分} 教师:{教师号,教师名,课程数} 教室:{教室号,地址,容量}
学生-课程:{学号,课程号,课序号,成绩} 教学:{课程号,课序号,教师号,教科书} 教室-课程:{教室号,时间,课程号,课序号}
3、用户外模式
根据需求,为计算综合测评增加一个外模式,因为综合测评只在学期末进行,查询次数不多,所以没有必要用冗余的方法来提高查询效率,只需要建立一个外模式视图即可。测评{学号,学生姓名,平均成绩}
4、根据设计写出相应的SQL语句: CREATE TABLE student(Sno VARCHAR(9)CONSTRAINT pk_student PRIMARY KEY, Sname VARCHAR(10)NOT NULL, Sex VARCHAR(1)NOT NULL, Major VARCHAR(10)NOT NULL, Class VARCHAR(10)NOT NULL, CHECK(Sex = 'f' OR Sex = 'm'))
CREATE TABLE course(Cno VARCHAR(4)CONSTRAINT pk_course PRIMARY KEY, Cname VARCHAR(10)NOT NULL, Describe VARCHAR(200), Mark INTEGER)
CREATE TABLE teacher(Tno VARCHAR(5)CONSTRAINT teacher_pk PRIMARY KEY, Tname VARCHAR(10)NOT NULL,Ccnt INTEGER NOT NULL DEFAULT 0)
CREATE TABLE classroom(Rno VARCHAR(5)CONSTRAINT pk_classroom PRIMARY KEY, Locate VARCHAR(30)NOT NULL, Cap INTEGER CHECK(Cap > 0))
CREATE TABLE tech(Cno VARCHAR(4)NOT NULL CONSTRAINT fk_course_cno FOREIGN KEY REFERENCES course(Cno)ON UPDATE CASCADE--级联更新 ON DELETE CASCADE,--级联删除 SCno VARCHAR(2)NOT NULL,Tno VARCHAR(5)CONSTRAINT fk_teacher_tno FOREIGN KEY REFERENCES teacher(Tno)ON UPDATE CASCADE ON DELETE CASCADE, Book VARCHAR(20)
CONSTRAINT pk_tech PRIMARY KEY(Cno,SCno))
CREATE TABLE SC(Sno VARCHAR(9)NOT NULL CONSTRAINT fk_student_sno FOREIGN KEY REFERENCES student(Sno)ON UPDATE CASCADE ON DELETE CASCADE,Cno VARCHAR(4)NOT NULL CONSTRAINT fk_sc_course_cno FOREIGN KEY REFERENCES course(Cno)ON UPDATE CASCADE ON DELETE CASCADE, SCno VARCHAR(2)NOT NULL, Score FLOAT
CONSTRAINT pk_sc PRIMARY KEY(Sno,Cno,SCno))
CREATE TABLE RC(Rno VARCHAR(5)CONSTRAINT fk_classroom_rno FOREIGN KEY REFERENCES classroom(Rno)ON UPDATE CASCADE ON DELETE CASCADE, Time DATETIME,Cno VARCHAR(4)NOT NULL CONSTRAINT fk_rc_course_cno FOREIGN KEY REFERENCES course(Cno)ON UPDATE CASCADE ON DELETE CASCADE, SCno VARCHAR(2)NOT NULL
CONSTRAINT pk_rc PRIMARY KEY(Rno,Time))
为进行综合测评增加一个外模式 CREATE VIEW assess AS
SELECT SC.sno, sname, AVG(score)as average FROM SC,Student where SC.sno = student.sno GROUP BY SC.sno,sname
为了符合数据的参照完整性约束,避免学生选课的时候选择一个不存在的课程号-课序号组,增加一个外键约束。ALTER TABLE sc
ADD CONSTRAINT fk_sc_tech FOREIGN KEY(Cno,SCno)REFERENCES tech(Cno,SCno)ON UPDATE CASCADE ON DELETE CASCADE
为了在插入一个新课程时能级联更新教师的工作量,增加一个触发器。此任务也可以通过建立一个外模式视图来动态统计,为了练习的目的这里采用了触发器 CREATE TRIGGER workcnter On tech AFTER INSERT ,UPDATE, DELETE AS BEGIN
DECLARE @T VARCHAR(5)IF EXISTS(SELECT TOP 1 Tno FROM INSERTED)BEGIN
SET @T =(SELECT TOP 1 Tno FROM INSERTED)UPDATE teacher SET Ccnt = Ccnt + 1 WHERE Tno = @T END
IF EXISTS(SELECT TOP 1 Tno FROM DELETED)BEGIN
SET @T =(SELECT TOP 1 Tno FROM DELETED)UPDATE teacher SET Ccnt = Ccnt-1 WHERE Tno = @T END END 关于课程容量:如何保证选课的学生数量不超过教室的容量?
初步解决办法是:在学生选课时建立暂时不考虑容量问题,都加入一个临时的SC表中。然后,在选课结束后将未超额的记录直接加入SC表,超额的课程进行抽签,将命中部分学生的选课记录插入SC表,直到人数符合课程容量的要求为止。
抽签的功能较适合用顶层的高级语言来实现。在选课结束后,选超额课程的学生需登陆选课系统进行抽签,抽签的过程可以使用概率算法,如果抽中,系统再将选课记录插入SC表,否则就从临时表中删除。
所以,在数据库系统中,没有对SC表的插入操作进行约束。
第五篇:数据库实习报告-教务管理系统.
数据库系统课程设计 学生姓名: 班 学 号: 指导教师:
教务管理系统
1、需求分析 1.1 信息要求: 教务管理系统涉及的实体有: ●教师——工作证号、姓名、职称、电话等;●学生——学号、姓名、性别、出生年月等;●班级——班号、最低总学分等;
●系——系代号、系名和系办公室电话等;●课程——课序号、课名、学分、上课时间及名额等。这些实体之间的联系如下: ●每个学生都属于一个班,每个班都属于一个系,每个教师也都属于一个系。●每个班的班主任都由一名教师担任。
●一名教师可以教多门课,一门课可以有几位主讲老师,但不同老师讲的同一门课其课序号是不同 的(课序号是唯一的。
●一名同学可以选多门课,一门课可被若干同学选中。●一名同学选中的课若已学完,应该记录有相应成绩。
●本单位学生、教师都有重名,工作证号、学号可以作为标识。1.2 处理要求: 教学系统主要提供数据维护、选课和信息查询。其中常见的查询有:系统中各对象的基本信息查询。查 询指定班、系的学生信息(名单、人数等。查询学生的成绩、学分情况。查询教师授课情况和学生选课情 况„„。
1.3 安全性与完整性要求: ●安全性要求: 1.系统应设置访问用户的标识以鉴别是否是合法用户, 并要求合法用户设置其密码, 保证用户身份不被 盗用;2.系统应对不同的数据设置不同的访问级别,限制访问用户可查询和处理数据的类别和内容;
3.系统应对不同用户设置不同的权限,区分不同的用户,如学生,教师,系统管理员。
●完整性要求: 1.各种信息记录的完整性,关键信息记录内容不能为空;2.各种数据间相互的联系的正确性;3.相同的数据在不同记录中的一致性。1.4 系统功能的设计和划分
根据如上得到的用户需求,我们将本系统按照所完成的功能分成以下几部分: 第一部分:用户管理部分 第二部分:管理员管理部分 各部分完成的功能如下:
1、用户管理部分
1、处理用户注册
2、处理用户登录
3、用户可以查询学生信息。
4、用户可以查询快件信息。
5、用户可以提交与查询报修信息。
6、用户可以插入与删除用户自己的离返校信息。
7、用户可以修改用户自己密码。
2、管理员管理部分
1、处理管理员登录
2、管理员可以查询学生信息。
3、管理员可以发布与更新快件信息。
4、管理员可以插入、修改与查询报修信息。
5、管理员可以插入与查询学生夜归信息。
6、管理员可以查询在校与离校学生信息。
7、管理员可以修改管理员密码。
2、概念设计(1 概念模型(E-R 图 :
选修联系的分 E-R 图 负责联系的分 E-R 图
授课联系的分 E-R 图
教务管理系统的总 E-R 图(2 数据字典 :
(3数据流图
查询 课程信息 课程信息表 课程信息 查询 课 程 成绩信息 信 息 教师 学 生 选课信息信 息 查询学 生信息 修改教 师信息 教 师 信 息 系 信 息 课 程 选课信息 信 息 学生 学 生 信 息 选课信息 修改学 教 师 信 息 生信息 查询教 师信息 选课信息 选课 已 选 课 信 息 成绩信息 选 课 表 登记 成绩 成 绩 信 息 查询 选课信息 选课信息 查询 系 信 息 班 级 信 息 学生信息 学生信息表 教师信息 教师信息表 学生信息 教师信息 班 级 信 息 班级信息 查询 系信息 班级信息表 系信息表 总 数 据 流 图 班级信息 查询 系信息
3、逻辑结构设计
-R 图向关系模型的转换(关系的码用下横线表出)教师(工作证号,姓名,职称,电话,系代号)代码表示:Teacher(Tno, Tname, Title, Tel, Dno 此为“教师”实体对应的关系模式。其中 1:n 联系“工作”与此关系模式合并,Dno 为外码。存在的函数 依赖为 Tno →(Tname,Title,Tel,Dno),且不存在多值依赖,所以满足 4NF。学生(学号,姓名,性别,出生年月,班号)代码表示:Student(Sno, Sname, Ssex, Sbirth, Class 此为“学生”实体对应的关系模式。其中 1:n 联系“属于”与此关系模式合并,Class 为外码。存在的函数 依赖为 Sno →(Sname,Ssex,Sbirth,Class),且不存在多值依赖,所以满足 4NF。系(系代号,系名,系办公室电话)代码表示:Department(Dno, Dname, Dphone 此为“系”实体对应的关系模式。存在的函数依赖为 Dno →(Dname,Dphone),且不存在多值依赖,所 以满足 4NF。课程(课序号,课名,学分,上课时间,名额,工作证号)代码表示:Course(Cno, Cname, Credit, Ctime, Cnum, Tno 此为“课程”实体对应的关系模式。其中 1:n 联系“授课”与此关系模式合并,Tno 为外码。存在的函数 依赖为 Cno →(Cname,Credit,Ctime,Cnum,Tno),且不存在多值依赖,所以满足 4NF。选课(学号,课序号,成绩)代码表示:SC(Sno, Cno, Grade 此为 m: 联系 n “选修” 所对应的关系模式。Sno 和 Cno 均为外部码。存在的函数依赖为完全函数依赖(Sno,Cno)→ Grade,且不存在多值依赖,所以满足 4NF。班级(班号,最低总学分,工作证号,系代号)代码表示:Class(Class, TotalCredit, Tno, Dno 此为“班级”实体对应的关系模式。其中 1:n 联系“属于”和 1:1 联系“负责”与此关系模式合并,Tno 和 Dno 为外码。该关系模式中存在传递函数依赖:Class → Tno,(Tno Class,Tno → Dno,可得 Class → Dno,故 Class 不属于
3NF。解决方法是将其模式分解为:Class(Class, TotalCredit, Tno 和 T-D(Tno, Dno,分解后的关系模式满足 4NF,并且 T-D 与 Teacher 的码相同,可合并为同一模式。但 是考虑到系统要经常进行系的学生信息查询,此时就不得不对 Student、Class 和 Teacher 三个表进行连接 查询,而连接是影响查询效率的主要原因,所以取消对 Class 的模式分解。此时 Class 关系模式满足 2NF。
设计用户子模式 为了方便程序查询,建立了如下用户视图:
1、某系的学生信息视图(学号,姓名,性别,出生年月,班号)
2、某系的教师信息视图(工作证号,教师姓名,职称,电话,负责班级)
3、某课程的学生成绩单(学号,姓名,班级,成绩)
4、教师授课信息表(工作证号,教师姓名,职称,教授课程,学分,上课时间)
5、学生已选课表(课序号,课名,学分,授课教师,上课时间,名额)
4、物理设计 4.1 选择存取方法
1、数据库管理系统自动在每个表的主码上建立索引,通常为 B + 树索引。
2、在 Student 表 Sname 列上建立 Stu_name 索引,因为查询操作很多都使通过学生姓名进行的。
3、在 Teacher 表 Tname 列上建立 Tea_name 索引,因为查询操作很多都使通过教师姓名进行的。4.2 确定数据库的存储结构
1、为了提高系统性能,根据具体情况将数据的易变部分与稳定部分、经常存取部分和存取频率较低部 分分开存放。
2、DBMS 产品一般都提供了一些系统配置变量、存储分配参数,根据应用环境确定这些参数值,并且 在系统运行时还要根据系统实际运行情况进行调整,以使系统性能最佳。4.3 评价物理结构 根据所选用的 DBMS,如 SQL Server 2000,从定量估算各种方案的存储空间、存取时间和维护代价入 手,对估算结果进行权衡、比较,选择一个较优的合理的物理结构。
5、系统实施 编写关系模式,载入数据。分期分批地组织数据入库,先输入小批量数据做调试用,待试运行基本合 格后,再大批量输入数据,逐步增加数据量,逐步完成运行评价。需要注意的是,要首先调试运行 DBMS 的 恢复功能,做好数据库的转储和恢复工作。基本 SQL 语言代码如下: CREATE SCHEMA “TeachAffair” AUTHORIZATION Gao CREATE TABLE Department(Dno CHAR(3 PRIMARY KEY, Dept CHAR(20 UNIQUE NOT NULL, Dphone CHAR(11,;CREATE TABLE Teacher(Tno CHAR(6 PRIMARY KEY, Tname CHAR(20 NOT NULL, Title CHAR(8, Tel CHAR(11,Dno CHAR(3, FOREIGN KEY(Dno REFERENCES Department(Dno;CREATE TABLE Class(Class CHAR(6 PRIMARY KEY, TotalCredit NUMERIC(4,1, Tno CHAR(6, Dno CHAR(3, FOREIGN KEY(Tno REFERENCES Teacher(Tno, FOREIGN KEY(Dno REFERENCES Department(Dno;CREATE TABLE Student(Sno CHAR(11 PRIMARY KEY, Sname CHAR(20 NOT NULL, Ssex CHAR(2, Sbirth DATETIME, Class CHAR(6, FOREIGN KEY(Class REFERENCES Class(Class;CREATE TABLE Course(Cno CHAR(6 PRIMARY KEY, Cname CHAR(20 NOT NULL, Credit NUMERIC(2,1, Ctime DATETIME, Cnum SMALLINT, Tno CHAR(6, FOREIGN KEY(Tno REFERENCES Teacher(Tno;CREATE TABLE SC(Sno CHAR(11 NOT NULL, Cno CHAR(6 NOT NULL, Grade SMALLINT CHECK(Grade>=0 AND Grade<=100, PRIMARY KEY(Sno, Cno, FOREIGN KEY(Sno REFERENCES Student(Sno ON DELETE CASCADE ON UPDATE CASCADE, FOREIGN KEY(Cno REFERENCES Course(Cno ON DELETE NO ACTION ON UPDATE CASCADE,;/*建立索引*/ CREATE UNIQUE INDEX Stu_name ON Student(Sname;CREATE UNIQUE INDEX Tea_name ON Teacher(Tname;CREATE UNIQUE INDEX SCno ON SC(Sno ASC, Cno DESC;/*查询某个系的学生信息*/ CREATE VIEW GIS_Student AS SELECT * FROM Student WHERE Class IN(SELECT Class FROM Class WHERE Dname='GIS' WITH CHECK OPTION;SELECT * FROM GIS_Student;SELECT COUNT(* FROM GIS_Student;/*查询班级的学生信息*/ SELECT Sno, Sname, Ssex, Birth FROM Student WHERE Class = '114072';SELECT COUNT(* FROM Student WHERE Class='114072';/*查询学生的成绩、学分*/ SELECT SC.Cno, Cname, Credit, Grade FROM Course, SC WHERE Sno = '20071000500' AND SC.Cno=Course.Cno;SELECT SUM(Credit FROM SC,Course WHERE Sno='20071000500' AND SC.Cno=Couse.Cno;/*查询教师授课信息*/ SELECT Course.* FROM Course WHERE Tno='100123';SELECT Student.Sno,Sname,Class,Grade FROM Course,SC,Student WHERE Tno='100123' AND Course.Cno=SC.Cno AND SC.Sno=Student.Sno;
6、运行维护
1、针对不同的应用要求制定不同的转储计划,一旦发生故障尽快将数据库恢复到某种一致的状态,并
尽可能减少对数据库的破坏;
2、根据实际情况修改数据库原有的安全性、完整性控制;
3、在数据库运行过程中,监督系统运行,对监测数据进行分析,找出改进系统性能的方法;
4、数据库运行一段时间后,由于记录不断增、删、改,会使数据库的物理存储情况变坏,降低数据的 存取效率,数据库性能下降。这时应按原设计要求重新安排存储位置、回收垃圾、减少指针链等,提高系 统性能。当原有的数据库设计不能满足新的需求,需要重构造数据库,调整数据库的模式和内模式。
7、用户手册(<五号宋体>,具体内容:使用、操作说明。)
8、附录(<五号宋体>,源程序清单和结果:源程序必须有注释,以及必要的测试数据和运行结果数据,提倡 用英文描述。)