资源描述
网络课程平台数据库设计(网络测试方面)
第一章 系统需求分析
1、1需求概述
随着科学技术得不断提高,计算机科学日渐成熟,其强大得功能已为人们深刻认识,它已进入人类社会得各个领域并发挥着越来越重要得作用。作为计算机应用得一部分,使用计算机进行网络教学,有着传统教学所无法比拟得优点。例如:使用方便、可靠性高、存储量大、保密性好、扩展性高、成本低等,并且突破传统教学得地域限制。这些优点能够极大地提高学生学习得效率与老师得教学。因此,开发一套网络课程平台管理系统成为很有必要得。学网络课程平台管理系统提供了强大得学生自主学习功能,同时也方便系统管理员对学生成绩等信息得添加、修改,打印等操作,同时一样得方便学生对自己各科成绩查询,学习得交流。
开发一个网络课程平台管理系统,采用计算机对学生成绩进行管理,进一步提高了办学效益与现代化水平。为教师与学生提高工作效率,实现互联网教学管理工作流程得系统化,规范化与自动化。在今天信息时代传统得教育方法必然会被计算机为基础得互联网教育系统所代替,一个高效得网络课程平台可以给予学生无空间,无时间限制得自主学习,可以使传统得教学得效率更加得提高,节约了传统得教育成本。用户可以迅速查到所需信息,学生在能方便得查瞧自己得成绩与自己得学习目标。
网络课程平台数据库应具有以下功能
(1) 能够实现学生自主选择网络课程,在完成必要公修课之后
学生可以在自己得课余时间里选择一些课程来充实自己,相当于学生得选课系统中得选课环节
(2) 管理员能够可以平台得数据进行统一得管理与维护
此平台系统易于不同权限管理员管理,保证数据得安全性。也将数据库工作均匀得分配,做到数据库得高效管理
(3) 相关教师能够对自己所辖课程进行简单管理、查询、打印等工作
老师可以实时地观瞧所辖课程得情况,了解每位学生得学习与测试情况,并且可以将某些信息打印下了。
(4) 能够对教学任务进行科学得管理
记录用户使用平台得日常情况,例如存储教师所需要得教学资料,学生在网络得学习记录,与其她用户得交流
1、2 需求描述
1、2、1 数据流图
图1-1 网络课程平台得第一层数据流图
图
图1-2 学生操作管理数据流图(第二层)
图1-3 课程管理操作数据流图(第二层)
图1-4 成绩管理操作数据流图(第二层)
、
图1-3 教师操作管理数据流图(第二层)
1、2、2 数据字典
1、2、2、1 数据结构
教师信息
编号
数据项
数据项别名
数据类型
数据项含义
1
教师号
Jnum
varchar(20)
主码
2
教师名
Jname
varchar(20)
3
院系
College
varchar(20)
学生信息
编号
数据项
数据项别名
数据类型
数据项含义
1
学生号
Snum
varchar(20)
主码
2
学生名
Sname
varchar(20)
3
院系
College
varchar(20)
4
专业班级
Class
varchar(20)
1
班级号
bnum
varchar(20)
外码
班级表
编号
数据项
数据项别名
数据类型
数据项含义
1
班级号
bnum
varchar(20)
主码
2
班级名
bname
varchar(20)
非空
3
班长
Moniter
varchar(20)
4
院号
Ynum
varchar(20)
外码
院表
编号
数据项
数据项别名
数据类型
数据项含义
1
院号
Ynum
varchar(20)
主码
2
院名
bname
varchar(20)
非空
3
院长
Moniter
varchar(20)
课程信息
编号
数据项
数据项别名
数据类型
数据项含义
1
课程号
Cnum
varchar(20)
主码
2
课程名
Cname
varchar(20)
非空
3
课程属性
Cattribute
varchar(100)
4
时间点
Time
date&time
5
教师号
Jname
varchar(20)
外码
课程内容
编号
数据项
数据项别名
数据类型
数据项含义
1
课程内容块号
Cinnum
varchar(20)
唯一标识
2
课程内容
Cin
varchar(100)
3
课程号
Cnum
varchar(20)
外码
选课信息
编号
数据项
数据项别名
数据类型
数据项含义
1
课程号
Cnum
varchar(20)
外码
2
学生号
Snum
varchar(20)
外码
3
时间生成点
Time
date&time
课程成绩信息
编号
数据项
数据项别名
数据类型
数据项含义
1
课程号
Cnum
varchar(20)
外码
2
学生号
Snum
varchar(20)
外码
3
成绩
Grade
varchar(20)
唯一标识
4
时间生成点
Time
date&time
第2章 系统初步设计
2.1 基于PowerDesigner得数据库设计
2.1.1 概念数据模型
概念模型就是现实世界到机器世界得一个中间层次。概念模型用于信息世界得建模,就是现实世界到信息世界得第一层抽象,就是数据库设计人员进行数据库设计得有力工具,也就是数据库设计人员与用户之间进行交流得语言,因此概念模型一方面具有较强得语义表达能力,能够方便、直接地表达应用中得各种语义知识,另一方面它还简单、清晰、易于用户理解。
信息世界涉及得概念主要有:
(1)、实体(Entity):客观存在并相互区别得事物称为实体。实体可以就是具体得人、事、物,也可以就是抽象得概念或联系。
(2)、属性(Attrbute):实体所具有得某一特性称为属性。一个实体可以有若干个属性。
(3)、码(Key):唯一标识实体得属性集称为码。
(4)、域(Domain):属性得取值范围称为该属性得域。
(5)、实体型(Entity Type):具有相同属性得实体必然具有共同得特性与性质。用实体名及其属性名集合来抽象与刻画同类试题,称为实体型。
(6)、实体集(Entity Set):同一类型实体得集合称为实体集。
(7)、联系(Relationship):在现实世界中,事物内部以及事物之间就是有联系得,这些联系在信息世界中反映为实体(型)内部得联系与实体(型)之间得联系。实体内部得联系通常就是指组成实体得各属性之间得联系;实体之间得联系通常就是指不同实体集之间得联系。
概念模型表示得方法很多,其中最为著名最常用得就是P、P、S、Chen于1976年提出得实体-联系方法(Entity-Relationship Approach)。该方法用E-R图(E-R Diagram)来描述现实世界得概念模型,E-R图方法也称为E-R模型。E-R图为实体-联系图,提供了表示实体型、属性与联系得方法,用来描述现实世界得概念模型。构成E-R图得基本要素就是实体型、属性与联系。
2、1、1、1 由界面设计E-R图
课程学习得E-R图
选择选修课得E-R图
查询课程成绩得E-R图
管理课程过程得E-R图
2、1、3物理表结构设计
教师信息
编号
说明
字段名称
数据类型
1
教师号
Jnum
varchar(20)
2
教师名
Jname
varchar(20)
3
院系
College
varchar(20)
学生信息
编号
说明
字段名称
数据类型
1
学生号
Snum
varchar(20)
2
学生名
Sname
varchar(20)
3
院系
College
varchar(20)
4
专业班级
Class
varchar(20)
1
班级号
bnum
varchar(20)
班级表
编号
说明
字段名称
数据类型
1
班级号
bnum
varchar(20)
2
班级名
bname
varchar(20)
3
班长
Moniter
varchar(20)
4
院号
Ynum
varchar(20)
院表
编号
说明
字段名称
数据类型
1
院号
Ynum
varchar(20)
2
院名
bname
varchar(20)
3
院长
Moniter
varchar(20)
课程信息
编号
说明
字段名称
数据类型
1
课程号
Cnum
varchar(20)
2
课程名
Cname
varchar(20)
3
课程属性
Cattribute
varchar(100)
4
时间点
Time
date&time
5
教师号
Jname
varchar(20)
课程内容
编号
说明
字段名称
数据类型
1
课程内容块号
Cinnum
varchar(20)
2
课程内容
Cin
varchar(100)
3
课程号
Cnum
varchar(20)
选课信息
编号
说明
字段名称
数据类型
1
课程号
Cnum
varchar(20)
2
学生号
Snum
varchar(20)
3
时间生成点
Time
date&time
课程成绩信息
编号
说明
字段名称
数据类型
1
课程号
Cnum
varchar(20)
2
学生号
Snum
varchar(20)
3
总成绩
Grade
varchar(20)
4
时间生成点
Time
date&time
/*==============================================================*/
/* DBMS name: Sybase SQL Anywhere 11 */
/* Created on: 2014/12/22 21:46:59 */
/*==============================================================*/
if exists(select 1 from sys、sysforeignkey where role='FK_RELATION_RELATIONS_课程信息') then
alter table Relationship_4
delete foreign key FK_RELATION_RELATIONS_课程信息
end if;
if exists(select 1 from sys、sysforeignkey where role='FK_RELATION_RELATIONS_学生信息') then
alter table Relationship_6
delete foreign key FK_RELATION_RELATIONS_学生信息
end if;
if exists(select 1 from sys、sysforeignkey where role='FK_学生信息_RELATIONS_班级') then
alter table 学生信息
delete foreign key FK_学生信息_RELATIONS_班级
end if;
if exists(select 1 from sys、sysforeignkey where role='FK_班级_RELATIONS_院系') then
alter table 班级
delete foreign key FK_班级_RELATIONS_院系
end if;
if exists(select 1 from sys、sysforeignkey where role='FK_课程信息_RELATIONS_教师信息') then
alter table 课程信息
delete foreign key FK_课程信息_RELATIONS_教师信息
end if;
if exists(select 1 from sys、sysforeignkey where role='FK_课程内容_RELATIONS_课程信息') then
alter table 课程内容
delete foreign key FK_课程内容_RELATIONS_课程信息
end if;
if exists(
select 1 from sys、systable
where table_name='Relationship_4'
and table_type in ('BASE', 'GBL TEMP')
) then
drop table Relationship_4
end if;
if exists(
select 1 from sys、systable
where table_name='Relationship_6'
and table_type in ('BASE', 'GBL TEMP')
) then
drop table Relationship_6
end if;
if exists(
select 1 from sys、systable
where table_name='学生信息'
and table_type in ('BASE', 'GBL TEMP')
) then
drop table 学生信息
end if;
if exists(
select 1 from sys、systable
where table_name='教师信息'
and table_type in ('BASE', 'GBL TEMP')
) then
drop table 教师信息
end if;
if exists(
select 1 from sys、systable
where table_name='班级'
and table_type in ('BASE', 'GBL TEMP')
) then
drop table 班级
end if;
if exists(
select 1 from sys、systable
where table_name='课程信息'
and table_type in ('BASE', 'GBL TEMP')
) then
drop table 课程信息
end if;
if exists(
select 1 from sys、systable
where table_name='课程内容'
and table_type in ('BASE', 'GBL TEMP')
) then
drop table 课程内容
end if;
if exists(
select 1 from sys、systable
where table_name='课程成绩信息'
and table_type in ('BASE', 'GBL TEMP')
) then
drop table 课程成绩信息
end if;
if exists(
select 1 from sys、systable
where table_name='选课信息'
and table_type in ('BASE', 'GBL TEMP')
) then
drop table 选课信息
end if;
if exists(
select 1 from sys、systable
where table_name='院系'
and table_type in ('BASE', 'GBL TEMP')
) then
drop table 院系
end if;
/*==============================================================*/
/* Table: Relationship_4 */
/*==============================================================*/
create table Relationship_4
(
cnum char(20) not null,
constraint PK_RELATIONSHIP_4 primary key (cnum)
);
/*==============================================================*/
/* Table: Relationship_6 */
/*==============================================================*/
create table Relationship_6
(
snum char(20) not null,
constraint PK_RELATIONSHIP_6 primary key (snum)
);
/*==============================================================*/
/* Table: 学生信息 */
/*==============================================================*/
create table 学生信息
(
snum char(20) not null,
bnum char(20) null,
sname char(20) null,
college char(20) null,
class char(20) null,
constraint PK_学生信息 primary key (snum)
);
/*==============================================================*/
/* Table: 教师信息 */
/*==============================================================*/
create table 教师信息
(
jnum char(20) not null,
jname char(20) null,
college char(20) null,
constraint PK_教师信息 primary key (jnum)
);
/*==============================================================*/
/* Table: 班级 */
/*==============================================================*/
create table 班级
(
bnum char(20) not null,
ynum char(20) null,
yname char(20) null,
moniter char(20) null,
constraint PK_班级 primary key (bnum)
);
/*==============================================================*/
/* Table: 课程信息 */
/*==============================================================*/
create table 课程信息
(
cnum char(20) not null,
jnum char(20) null,
cname char(20) null,
cattribute char(100) null,
"time" timestamp null,
constraint PK_课程信息 primary key (cnum)
);
/*==============================================================*/
/* Table: 课程内容 */
/*==============================================================*/
create table 课程内容
(
cnum char(20) null,
课程内容块号 char(20) not null,
课程内容 char(20) null
);
/*==============================================================*/
/* Table: 课程成绩信息 */
/*==============================================================*/
create table 课程成绩信息
(
grade char(20) null,
"time" timestamp null
);
/*==============================================================*/
/* Table: 选课信息 */
/*==============================================================*/
create table 选课信息
(
"time" timestamp null
);
/*==============================================================*/
/* Table: 院系 */
/*==============================================================*/
create table 院系
(
ynum char(20) not null,
yname char(20) null,
moniter char(20) null,
constraint PK_院系 primary key (ynum)
);
alter table Relationship_4
add constraint FK_RELATION_RELATIONS_课程信息 foreign key (cnum)
references 课程信息 (cnum)
on update restrict
on delete restrict;
alter table Relationship_6
add constraint FK_RELATION_RELATIONS_学生信息 foreign key (snum)
references 学生信息 (snum)
on update restrict
on delete restrict;
alter table 学生信息
add constraint FK_学生信息_RELATIONS_班级 foreign key (bnum)
references 班级 (bnum)
on update restrict
on delete restrict;
alter table 班级
add constraint FK_班级_RELATIONS_院系 foreign key (ynum)
references 院系 (ynum)
on update restrict
on delete restrict;
alter table 课程信息
add constraint FK_课程信息_RELATIONS_教师信息 foreign key (jnum)
references 教师信息 (jnum)
on update restrict
on delete restrict;
alter table 课程内容
add constraint FK_课程内容_RELATIONS_课程信息 foreign key (cnum)
references 课程信息 (cnum)
on update restrict
on delete restrict;
2.2 数据库不规范化设计举例
关系数据库中得关系就是要满足一定要求得,满足不同程度要求得为不同范式。满足最低要求得叫做第一范式,简称1NF。在第一范式中满足进一步要求得为第第二范式,其余以此类推。一个低一级范式得关系模式,通过模式分解可以转换为若干个高一级范式得关系模式得集合,这种过程就叫规范化。
2、2、1 不满足第二范式举例
一个关系模式定义为一个五元组:R(U,D,DOM,F),若R∈1NF,且每一个非主属性完全函数依赖于码,则R∈2NF。根据该定义,结合概念数据模型中设计得E-R图,举一个不就是2NF得例子如下:
[例1] 关系模式为学生-成绩-课程(成绩,课程号,课程名,课程属性,时间点,教师号,学生号,学生名,院系,专业班级,班级号)
其中“学生-成绩-课程”得码为(课程号,学号)。函数依赖示例如图2-21:
图2-21
图中用虚线表示部分函数依赖。一个关系函数R不属性2NF,就会产生以下几个问题:
1.插入异常。假若要插入一个学生,但成绩记录还没有记录,,这样得元组就插不进“学生-成绩-课程”中。因为插入元组时必须给定码,而这时码值得一部分为空,因而学生得固有信息无法插入。
2.删除异常。假若学生甲选修了某课,现在这位学生退选了这门课,那么该课程对应得数据项需要删除。而课程号就是主属性,删除了课程号,整个元组就必须跟着删除,使得关系模式上得其她信息也被删除了,从而造成删除异常,即不应删除得信息也删除了。
3.修改复杂。如果某同学选修k种课程,则学生本身得属性重复存储了k次,不仅存储冗余度大,而且必须无遗漏地修改k个元组中全部属性信息,造成修改得复杂化。
分析上面得例子,可以发现问题在于有两种非主属性。解决得办法就是用投影分解把关系模式“学生-成绩-课程”分解为三个关系模式:
课程信息(课程号,课程名,课程属性,时间点,教师号)
课程成绩(课程号,学生号,成绩,时间,生成点)
学生表(学生号,学生名,院系,专业,班级,班级号)
三个关系模式可以用图2-22表示如下:
图2-22
2、2、2 不满足第三范式举例
关系模式R<U,F> 中若不存在这样得码X,属性组Y及非主属性Z(Z¢Y)使得X→Y,Y→Z成立,Y推不出X,则称<U,F>∈3NF。即若R∈3NF,则每一个非主属性既不部分依赖于码也不传递依赖于码。根据该定义,结合概念数据模型中设计得E-R图,举一个不就是3NF得例子如下:
[例2] 在课程成绩表中,假如还存在两个属性:学科权重、绩点,即关系模式课程成绩 (课程号,课程名,课程属性,时间点,教师号,绩点,学科权重,成绩),这时就存在传递依赖,因为绩点=学科权重*学科成绩,即绩点可由学科权重与成绩两个属性推出,而绩点又可由学生号得到,所以不满足第三范式。函数依赖事例如图2-23:
一个关系模式R若不就是3NF,就会产生与不就是2NF相类似得问题。
解决得办法同样就是将“课程成绩”分解为:
课程成绩(课程号,课程名,课程属性,时间点,教师号,学科权重,成绩)
学科绩点(绩点,学科权重,成绩)
两个关系模式可以用图2-24表示如下:
权重
成绩
学生号
绩点
权重
成绩
展开阅读全文