实验选课系统数据库设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《数据库原理与应用》课程设计
题目:实验选课系统数据库设计系别:
专业(含班级):
学号:
姓名:
指导教师:职称
填表日期:年月日
一、选题依据和意义
实验选课系统作为教学过程中一个不可或缺的环节,是为了更好地管理实验选课信息而建立的。该系统可以让选课信息更加规范化、系统化、程序化,避免选课系统的随意性,提高信息处理的速度和准确性,能够及时、准确、高效的查询或修改实验选课信息。加上局域网的开放,更为学生选课带来很大的便捷,学生可通过校园网进行选课,增加选课的灵活性,提高了学校选课工作的效率,教务处的教师可以依据选课系统对选课信息进行合理的管理,为广大师生及相关工作人员节省了时间。
二、需求分析
1.需求调查与分析
随着信息技术的发展、局域网的应用和数据的逐渐增多,近年来,人们逐渐用网络信息管理系统代替人工对管理的信息。高校也逐渐用选课系统代替人工的选课已增加选课的系统化、规范化、灵活性,提高选课的效率和对选课信息的管理效率。
2.业务流程图:
从教师开课开始,经过教务处的审核之后,教务处结合实验室的相关信息整理出有效的课程提供给学生们进行选择。
图1:实验选课系统业务流程图
三、概念结构设计
概念结构设计的含义:将需求分析得到的用户需求抽象为信息结构即概念模型的过程。它是整个数据库设计的关键。
本设计由上面的实验选课系统业务流程图抽象(分类、聚集、概括)可得到实验选课系统的概念模型,用如下E-R图表示:
图2:实验选课系统E-R图
四、逻辑结构设计:
根据实验选课系统E-R图和以下转换规则可得选课系统的关系模式。
转换规则:
1、一个实体型转换为一个关系模式
2、实体型间的联系有以下几种:
(1)1:1联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并;
(2)1:n联系可以转换为一个独立的关系模式,也可以与n端对应的关系模式合并;
(3)m:n(3个或3个以上)联系转换为一个关系模式。与该联系相连的各实体的码及联系本身的属性均转换为关系的属性;
(4)具有相同码的关系模式可合并。
1.实验选课系统关系模式:
如图2所示,按照上面的转换规则,可得实验选课系统的关系模式如下:
(1)教师(教师号,姓名,密码,性别,年龄,系别,职称,电话);
(2)课程(课程号,课程名,学时,学分,实验室编号);
(3)学生(学号,姓名,密码,性别,年龄,系别,班级);
(4)实验室(实验室编号,实验室名称,地点,电话);
(5)开课(教师号,课程号,时间); (教师号,课程号)分开为外键
(6)选修(学号,课程号,成绩);(学号,课程号)分开为外键
2. 数据库关系图:
按照上面得出的实验选课系统关系模式,创建数据库syxk,并建立与关系模式对应的数据表,并建立各表之间的关系,可得实验选课系统的数据库关系图如下:
图3:实验选课系统关系图
3.视图设计
视图是从一个或几个基本表(或视图)导出的表(虚表),数据库中只存放视图的定义,而不存放视图对应的数据,这些数据仍放在原来的基本表中,所以,当基本表中的数据变化时,视图中的数据也会发生变化。也可把视图看做一个窗口,通过它可看到自己感兴趣的数据及其变化。
视图定义后也可以对其进行更新(增、删、改),也可在一个视图上再定义新的视图,但对视图的更新(增、删、改)有一定的限制。
视图的作用:
1、能够简化用户的操作。用户可将注意力集中在自己所关心的数据上;
2、使用户能以多种角度看待同一数据;
3、对重构数据库提供了一定程度的逻辑独立性;
4、能够对机密数据提供安全保护;
5、适当的利用视图可以更清晰的表达查询。
下面针对本设计,即实验选课系统定义了几个视图:
(1)功能:建立信息系学生的视图,并要求进行修改和插入操作时仍需要保证该视图只有信息系的学生
代码:
create view is_student
as
select sno,sname,age
from student
where dept='信息系'
with check option
(2)功能:建立student表中所有女生记录的视图
代码:
create view F_student
as
select *
from student
where sex='女'
4.函数设计
定义函数并编译存在数据库的服务器中,使应用程序可以直接调用编译好的函数,提高计算机计算效率,节省时间。
(1)功能:按课程号查询选修该课程同学的平均成绩
代码:
create function get_avg(@cno char(10))
returns int as
begin
declare @temp int
select @temp=avg(degree)
from sc
where cno=@cno
return @temp
end
调用:
select dbo.get_avg('c01') as 'c01课程的平均成绩'
(2)功能:按教师号查询他所开的所有课程
代码:
create function get_course(@tno char(10))
returns char(10) as
begin
declare @temp char(10)
select @temp=cno
from commence
where tno=@tno
return @temp
end