第三章 概念结构设计
1 概念结构设计的方法与步骤 2 概念结构设计的方法
设计概念结构通常有四类方法:自顶向下,自底向上,逐渐扩张以及混合 策略。本教学系统采用的是自底向上的方法。即首先定义全局的概念结构的框架, 然后逐步细化。根据自顶向上地进行需求分析然后再自底上上地进行概念设计。
2.1 概念结构设计的步骤
概念结构的设计可分为两步:第一步是抽象数据并设计局部视图。第二步是 集成局部视图,得到全局的概念结构。
2.2 数据抽象与局部视图设计
按照图2.2 教学学管理系统总框架图,设计局部E-R 图。
图3.2 学生管理系统局部概念结构E-R 图
2.3 视图的集成
描述进行视图集成的具体过程,最后得到图2.5 总体概念结构E-R 图。
第四章 逻辑结构设计
1 E-R 图向关系模型的转换
将图3.4 总体概念结构E-R 图转化成关系模型。 系表(系号,系名,系主任)主键:系号
11 班级表(班号,班名,班主任,系号)主键:班号 外键:系号
学生表(学生号,姓名,性别,年龄,班级号)主键:学生号 外键:班号 课程表(课程号,课程名,学分,教师号)主键:可称号 外键:教师号 选课表(学号,课程号,成绩)主键:学号 可称号 外键:学号 课程号 教室表(教室号,教室名, 教室位置)主键:教室号
占用表(班级号,教室号,上课时间,占用学时)主键:班级号 教室号 教师表(教师号,姓名,职称,性别,年龄,工资)主键:教室号 教授表(教师号,班级号,课程号,教授时间)主键:教室号 班级号
2 数据模型的优化
数据库德逻辑结构设计的结果不是唯一的。为了提高数据库应用系统的性能, 还应该根据应用需要适当的修改,调整关系模式,这就是数据模型的优化。规范 化理论为数据库设计人员判断关系模式的优劣提供了理论标准,可用来预测模式 可能出现的问题,使数据库设计工作有了严格的理论基础。关系数据模型的优化 通常以规范化理论为指导,方法为:
(1)确定数据依赖。分别写出每个关系内部属性的以及不同关系模式属性间 的数据依赖。根据需求分析可知:
a) 系表的数据依赖 :{系号->系名,系号->系主任}
b) 班级表的数据依赖:{班号->班名,班号->班主任,班号->系号} c) 学生表的数据依赖:{学生号->姓名,学生号->性别,学生号->省份, 学 生号->年龄,学生号->班级号,学生号->专业}
d) 课程表的数据依赖:{课程号->课程名,课程号->学分,课程号->任 课教师号}
e) 选课表的数据依赖:{(学生号,课程号)->姓名}
f) 教室表的数据依赖:{教室号->教室名,教室号->教室位置} g) 占用表的数据依赖:{(班级号,教室号)->上课时间,(班级号,教 室号)->占用学时}
;
(2) 查询班级表的基本信息的视图定义如下:
create view 班级表_view as
12 select * from 班级表 with check option;
(3) 查询学生表的基本信息的视图定义如下:
create view 学生表_view as select * from 学生表 with check option;
(4) 查询课程表的基本信息的视图定义如下: create view 课程表_view as select * from 课程表 with check option;
(5) 查询选课表的基本信息的视图定义如下:
create view 选课表_view as select * from 选课表 with check option;
(6) 查询选课表的基本信息的视图定义如下:
create view 课程表_view as select * from 选课表 with check option;
(7) 查询占用表的基本信息的视图定义如下:
13 create view 占用表_view as select * from 占用表 with check option;
(8) 查询教师表的基本信息的视图定义如下: create view 教师表_view as select * from 教师表 with check option;
(9) 查询教授表的基本信息的视图定义如下: create view 教授表_view as select * from 教授表 with check option; 5 存储过程定义
(1)Create procedure 系表_insert @Xno char(10), @Xname char(10), @Xdiredtor char(10) As
(2) create procedure 班级表_insert As
(3) create procedure 学生表_insert @Sno char(10), @Sname char(10), @Ssex char(10), @Saddr char(10),
14 @Sage smallint, @Smajor char(10), @Cno char(10) As
(4) create procedure 课程表_insert @Courceno char(10), @Courcename char(10), @Ccredit smallint, @Courcedirector char(8) As
(5) create procedure 选课表_insert As
(6) create procedure 教室表_insert As
(7) create procedure 占用表_insert @Cno char(10), @Rno char(10), @Stime datetime, @UseTime char(10) As
(8) create procedure 教师表_insert As
(9) create procedure 教授表_insert
@Courceno char(10), @Teachtime datetime As
15