一、系统分析
需求功能分析
需求分析的任务是调查应用领域,对应用领域中的信息要求和操作要求进行详细分析,形成需求分析说明书。重点是调查,收集与分析用户在数据管理中的信息要求,处理要求,数据的安全性与完整性要求。
为了完成需求分析的任务,要详细调查待开发的数据库应用部门的情况,了解原系统工作概况,分析用户的各种需求,在此基础上确定新系统的功能。新系统必须考虑今后的扩充和改变,不能仅仅按当前应用需求来设计数据库。
排课管理系统需要实现对学校教师、教室、班级、及课程的信息管理,对高校排课,都有智能的管理,主要实现如下的一些功能:
班级各种信息的输入,包括班级号,班级名称,班级人数。
教师各种信息的输入,包括教师号,教师姓名,职称,性别。
学校课程的增加,删除,修改。
学校课程计划的制定。
检测指定教师、指定节次是否有课;
生成指定班级的课程表;
生成指定老师的课程表;
生成指定学生的课程表;
二、系统数据库设计
1.概念设计
排课管理系统涉及的实体有4个,分别是需要学生、班级、教师、课程。
其中班级与学生是一对多的关系;
班级与课程是多对多的关系;
班级与教师是多对多的关系;
课程与教师是多对多的关系;





-
学生具有4个属性:学生ID、姓名、性别、班级ID。
学生ID是主键,班级ID是外键。
-
教师具有4个属性:教师ID、姓名、性别、年龄。
教师ID是主键。
-
班级具有2个属性:班级ID、班级名称。
班级ID是主键。
-
课程具有2个属性:课程ID、课程名称。
课程ID是主键。
- 联系有1个,联系也可以转换为实体。故排课产生课程表。
-
课程表具有6个属性:班级ID、教师ID、课程ID、星期、节次、备注。
星期+节次为主键,班级ID、教师ID、课程ID为外键。
2.逻辑设计
写出上述几个实体的关系模式,实现E-R图向关系模型的转变。

3.物理设计
将上述的实体转换为关系。

三、系统数据库实施
1.写出创建数据库、表、视图、存储过程、函数、触发器的SQL语句
--创建数据库
create database lesson
go
use lesson
go
--创建class表
create table class
(
classID int primary key,
classname char(20)
)
Go
--创建student表
create table student
(
studentID int primary key,
name char(10) not null,
sex char(2) not null check(sex='F' or sex='M'),
classID int references class(classID)
)
Go
--创建teacher表
create table teacher
(
teacherID int primary key,
name char(10) not null,
sex char(2) not null check(sex='F' or sex='M'),
age int not null
)
Go
--创建course表
create table course
(
courseID int primary key,
coursename char(20)
)
--创建class_schdule表
use lesson
go
create table course_schdule
(
classID int,
teacherID int,
courseID int,
weeks int not null check(weeks>0 and weeks<8),
lessons int not null check(lessons>0 and lessons<9),
remark char(100),
constraint pk_schdule primary key(classID,teacherID,courseID,weeks,lessons),
constraint fk_classID foreign key (classID) references class(classID),
constraint fk_teacherID foreign key (teacherID)references teacher(teacherID),
constraint fk_courseID foreign key (courseID)references course(courseID)
)
2.系统数据表结构关系
数据表结构的关系如图6所示。

四、系统数据查询与数据维护
1.插入测试数据(用Insert语句实现)
--向class表中添加数据
use lesson
go
insert into class values('01','物联网')
insert into class values('02','市场营销')
insert into class values('03','机电')
insert into class values('04','电气')
insert into