资源描述
教学管理信息系统数据库的构建与设计
项目概述
教学管理信息系统数据库的构建与设计简介
项目名称
教学管理信息系统数据库的构建与设计
时间安排
5天
表数量
10
项目难度
★★★★☆
项目简介
随着高等院校教育体制的改革和发展,高校信息化的提升,其核心是以校园网为载体最大程度地利用网络资源的共享,方便、快捷等优点,压缩工作周期,实现教学管理的信息化、高效化以及自动化。根据学校的教学管理信息工作的基本流程,教学管理信息应用系统由四个功能模块组成:
1。学生选课管理模块:实现学生选棵录入、学生选课调整和学生选课审核等功能.
2。学生信息管理模块:实现学生学籍注册、学生转学、学生毕业和学生成绩管理。
3。教学调度管理模块:实现排课和调度管理、教师管理、等功能.
项目目的
了解管理信息应用系统的数据库设计的基本方法,掌握数据库设计的基本流程。
涉及主要技术
数据库的分析与设计
Transact-SQL
编程环境
SQL Server 2000
项目特点
通过学习本安例,可以了解并掌握数据库设计过程中各个阶段的工作过程和工作内容。
技术重点
使用标准的数据库设计方法实现数据库的分析与设计。
技术难点
数据库中各种不同类型信息关系的系统化和规范化的实现.
第一章教学管理信息系统数据库设计
1.项目介绍
教学管理管理信息系统的基本业务需求主要包括以下内容:
学生成绩管理包括:各院系的教务人员完成学生学籍注册、毕业、学籍异常处理,各授课教师完成所讲授课程成绩的录入,然后由教务人员进行学生成绩的审核认可。
学生选课管理包括:学生根据开设课程和培养计划选择本学期所修课程,教务人员对学生所选课程进行确认处理.
教学调度安排包括:教务人员根据本学期所开课程、教师上课情况以及学生选课情况完成安排课、调课、教师管理.
1。1 数据需求分析
需求分析是整个数据库设计过程的基础,要收集数据库所有用户的信息内容和处理要求,并加以规格化和分析。
数据流图和数据字典是描述用户需求的重要工具。数据流图描述了数据的来远和去向,以及所经过的处理;数据字典是对系统所需要处理的数据结构的进一步的描述。教学管理信息系统的数据字典和数据流图包括以下内容.
1。1.1系统的基本数据字典
教学管理信息系统的基本数据字典的内容如下:
学生基本信息:包括的数据项有:学号、班级代码、姓名、性别、政治面貌、职务、籍贯、出生日期、家庭住址等。
课程基本信息:包括的数据项有:课程代码、课程名称、讲授课时、课程学分、人数等。
教师基本信息:包括的数据项有:教师编码、教师姓名、性别、所学专业、职称、籍贯、出生日期、家庭住址等。
教室基本信息:包括的数据项有:教室编码、教室类型、教室容量等。
系别基本信息:包括的数据项有:系代码、系名称、系地址、系电话等。
专业基本信息:包括的数据项有:专业代码、专业名称、专业性质、专业简介、所授学位等。
成绩基本信息:包括的数据项有:科目号、学号、科目名称、科目分数等.
选课基本信息:包括的数据项有:课程号、学号、修课审核人、成绩审核人等.
授课基本信息:包括的数据项有:课程号、教室编码、教师编码、授课时间、授课周次等.
班级基本信息:包括的数据项有:班级代码、班级名称,班级简介等.
1。1.2 系统的基本数据流图
数据流图是从数据和对数据的加工处理的角度来描述系统的图形。数据流图的基本组成元素如下图所示:
数据存储
加工处理
加工处理
数据来源
数据输出
图3—1数据流图的基本组成元素
教学信息管理系统的基本数据流图如下所示:
学生选课信息
新增课程
学生
选课管理
教务员
课程信息
选课审核信息
图3-2教学信息管理系统的基本数据流图
学生成绩信息
考试成绩
任课老师
学生考试信息
学籍及成绩管理
学籍注册管理
个人考试信息
学生
教务员
毕业归档信息
新入学的学生信息
成绩确认信息
毕业归档信息
学生学籍信息
图 3—3教学信息管理系统的基本数据流图
排课信息
课表信息
学生
个人考试成绩
教学调度
教务员
排课信息 排课信息
任课教师
排课信息
图3-4 教学信息管理系统的基本数据流图
1。2概念结构设计
概念结构设计是把用户的信息要求统一到一个整体逻辑结构中,此结构能够表达用户的要求,是一个独立与任何DBMS软件和硬件的概念模型。
概念结构设计是以需求分析所得到的系统数据字典和系统数据流图为输入,经过加工处理后,输出系统的实体、联系模型(ERM)。
实体、联系模型(ERM)图的基本组成元素如下图所示:
属性
属性
属性
属性
联系
属性
属性
实体
实体
属性
属性
属性
属性
图 3—5 实体、联系模型( ERM)图的基本组成元素图
实体、联系模型( ERM)是概念设计阶段描述概念结构模型的只要设计工具,教学信息管理系统的E—R图包括以下内容。
1.2。1学生实体的E-R图
学号
姓名
籍贯
性别
学生
职务
政治面貌
家庭住址
出生日期
图 3-6 学生实体E-R图
1。2.2班级实体的E-R图
班级简称
班级名称
班级
班级代码
入学时间
图 3—7 班级实体E—R图
1。2.3教室实体的E-R图
教室编号
教室容量
教室类别
教室
图 3—8 教室实体E-R图
1.2。4系别实体的E-R图
系名
系电话
系代码
系地址
系别
图 3—9 系别实体E—R图
1.2。5课程实体的E-R图
计划人数
课程代码
课程名称
课程学分
课时
课程
图 3—10 课程实体E—R图
1.2。6任课教师实体E—R图
职称
教师姓名
性别
教师编码
教师
所学专业
出生日期
家庭住址
籍贯
图 3—11 教师实体E—R图
1。2。7专业实体的E-R图
专业名称
专业编号
专业性质
专业
学位授予
专业简介
图 3-12 专业实体E—R图
1.2.8成绩的E—R图
科目分数
科目名称
科目号
成绩
图 3-13成绩实体E—R图
1。2。9各实体间的E—R图
图 3—14 各实体间的E-R图
1。3逻辑结构设计
逻辑结构设计是将上一步所得到的概念模型转换为SQL Server支持的数据模型,并对其进行优化。
逻辑结构设计是以概念结构设计所得到系统的实体、联系模型(ERM)为输入,经过转换处理后,输出系统的关系数据结构(表结构).
通过系统的实体、联系模型(ERM)进行系统的关系数据结构(表结构)转换的总体原则如下:
1)E—R图中的实体和有属性的联系转换成关系
2)E-R图中的属性转换成关系的属性
数据库的表结构是逻辑设计阶段描述逻辑结构模型的主要设计工具,教学信息管理系统的数据库表包括以下内容:
1。3。1 Teacher(教师信息表)
教师(教师编码,教师姓名,性别,所学专业,职称,籍贯,出生日期,家庭住址)
字段名
字段类型
长度
主键或外键
字段值约束
对应中文属名
Tnum
nchar
5
主键
Not null
教师编码
Tname
nvarchar
10
Not null
教师姓名
Tsex
nvarchar
2
(男,女)
性别
Tspeciality
nvarchar
16
Not null
所学专业
Ttitle
nvarchar
16
Not null
职称
Tbirthday
nvarchar
8
出生日期
Tnativeplace
datetime
12
籍贯
Taddress
nvarchar
30
家庭住址
表 3—1 教师信息表
1。3.2 Student (学生信息表)
学生(学号,班级代码,姓名,性别,政治面貌,职务,籍贯,出生日期,家庭住址)
字段名
字段类型
长度
主键或外键
字段值约束
对应中文属名
Snum
nchar
10
主键
Not null
学号
Sname
nvarchar
10
Not null
姓名
Ssex
nvarchar
2
(男,女)
性别
Stitle
nvarchar
16
Not null
职称
Sface
nvarchar
10
政治面貌
Sbirthday
datetime
8
出生日期
Saddress
nvarchar
30
家庭住址
class_code
nvarchar
20
外键
Class.code
班级代码
Snativeplce
nvarchar
12
籍贯
表 3-2 学生信息表
1。3.3 Speciality (专业信息表)
专业(专业代码,系代码,专业名称,专业性质,专业简介,所授学位)
字段名
字段类型
长度
主键或外键
字段值约束
对应中文属名
SPcode
nvarchar
20
主键
Not null
专业代码
SPname
nvarchar
20
Not null
专业姓名
spechar
nvarchar
30
专业性质
specshort
nvarchar
20
专业简介
degree
nvarchar
20
可授学位
depar_code
nvarchar
20
外键
Department.code
系代码
表 3—3 专业信息表
1.3.4Department(系信息表)
系别(系代码,系名称,系地址,系电话)
字段名
字段类型
长度
主键或外键
字段值约束
对应中文属名
DPcode
nvarchar
20
主键
Not null
系代码
DPname
nvarchar
10
Not null
系名称
DPaddress
nvarchar
30
系地址
telephone
nvarchar
12
系电话
表 3—4 系信息表
1.3.5 Class(班级信息)
班级(班级代码,专业代码,班级名称,班级简介)
字段名
字段类型
长度
主键或外键
字段值约束
对应中文属名
CLcode
nvarchar
20
主键
Not null
班级代码
CLname
nvarchar
10
班级名称
CLspecshort
nvarchar
30
班级简介
intime
datetime
8
入学时间
Specia_code
nvarchar
20
专业代码
表 3—5班级信息表
1。3.6 Course(课程信息表)
课程(课程代码,课程名称、讲授课时,课程学分,人数)
字段名
字段类型
长度
主键或外键
字段值约束
对应中文属名
CRcode
nvarchar
20
主键
Not null
课程代码
CRname
nvarchar
20
Not null
课程名字
period
nvarchar
10
讲课课时
number
numeric
9
计划人数
credithour
numeric
9
课程学分
表 3-6课程信息表
1。3。7 Classroom(教室信息表)
教室(教室编码,教室类型,教室容量)
字段名
字段类型
长度
主键或外键
字段值约束
对应中文属名
CLRcode
nvarchar
20
主键
Not null
教室编码
capacity
numeric
9
教室容量
type
nvarchar
20
教室类型
表 3—7 教室信息表
1。3。8 Exam_grade(成绩信息表)
成绩(科目号,学号,科目名称,科目分数)
字段名
字段类型
长度
主键或外键
字段值约束
对应中文属名
Ecode
nvarchar
20
主键
Not null
科目号
Snum
nvarchar
20
外键
学号
kmname
nvarchar
20
科目名称
kmgrade
datetime
8
考试时间
grade
numreic
3
科目分数
表 3-8 成绩信息表
1.3。9 courseplan(授课安排信息表)
授课(课程号,教室编码,教师编码,授课时间,授课周次)
字段名
字段类型
长度
主键或外键
字段值约束
对应中文属名
Tnum
nvarchar
20
外键
teacher.code
教师编码
CLRcode
nvarchar
20
外键
classroom。code
教室编码
CRcode
nvarchar
20
外键
Course.code
课程编码
tabletime
nvarchar
10
课表时间
week
nvarchar
2
课表周次
表 3—9 授课安排信息表
1。3。10 studentcourse(学生修课信息表 )
选修(课程号,学号,修课审核人,成绩审核人)
字段名
字段类型
长度
主键或外键
字段值约束
对应中文属名
Stu_code
nvarchar
20
外键
student。code
学号
Cours_code
nvarchar
20
外键
course。code
课程号
Cours_audit
nvarchar
10
修课审核人
Grade_audit
nvarchar
10
成绩审核人
表 3-10 学生修课信息表
1.3。11数据表之间的逻辑关系图
图 3—15 数据表之间的逻辑关系图
1。4数据库物理设计
物理结构设计是为逻辑数据模型建立一个完整的能实现的数据库结构,包括存储结构和存取方法.
物理结构设计是以逻辑结构设计所得到系统的关系数据结构(表结构)为输入,经过转换处理后,输出系统的数据库物理结构.
1.5数据库实施
数据库实施是根据应用系统数据库的关系结构模型和物理结构设计结果,形成基于SQL Server平台应用系统数据库的脚本和数据库设计报告,并进行数据库的具体构建与管理。
数据库实施是以逻辑结构设计和物理设计结构所得到系统关系数据结构和系统数据库物理结构为输入,经过转换处理后,输出系统的数据库设计脚本(包括数据库定义、数据库表定义和数据库索引定义等)。
1.5。1数据库表定义语句
IF EXISTS (SELECT name FROM master.dbo.sysdatabases WHERE name = N’教学管理信息系统’)
DROP DATABASE [教学管理信息系统]
GO
CREATE DATABASE [教学管理信息系统] ON (NAME = N'教学管理信息系统_Data', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL\data\教学管理信息系统_Data。MDF' , SIZE = 2, FILEGROWTH = 10%) LOG ON (NAME = N'教学管理信息系统_Log’, FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL\data\教学管理信息系统_Log.LDF’ , SIZE = 1, FILEGROWTH = 10%)
COLLATE Chinese_PRC_CI_AS
GO
exec sp_dboption N’教学管理信息系统', N'autoclose’, N’true’
GO
exec sp_dboption N'教学管理信息系统’, N'bulkcopy’, N'false’
GO
exec sp_dboption N’教学管理信息系统’, N’trunc. log', N’true’
GO
exec sp_dboption N'教学管理信息系统', N’torn page detection', N’true'
GO
exec sp_dboption N’教学管理信息系统', N'read only’, N’false’
GO
exec sp_dboption N’教学管理信息系统’, N’dbo use’, N'false’
GO
exec sp_dboption N'教学管理信息系统', N’single’, N’false'
GO
exec sp_dboption N’教学管理信息系统’, N’autoshrink', N’true’
GO
exec sp_dboption N’教学管理信息系统’, N’ANSI null default’, N'false'
GO
exec sp_dboption N'教学管理信息系统', N’recursive triggers’, N’false’
GO
exec sp_dboption N'教学管理信息系统’, N'ANSI nulls', N'false’
GO
exec sp_dboption N'教学管理信息系统’, N'concat null yields null’, N'false’
GO
exec sp_dboption N'教学管理信息系统’, N'cursor close on commit’, N'false'
GO
exec sp_dboption N'教学管理信息系统', N’default to local cursor', N'false'
GO
exec sp_dboption N'教学管理信息系统’, N’quoted identifier’, N'false’
GO
exec sp_dboption N’教学管理信息系统’, N'ANSI warnings’, N'false’
GO
exec sp_dboption N’教学管理信息系统’, N'auto create statistics’, N'true'
GO
exec sp_dboption N'教学管理信息系统’, N’auto update statistics’, N’true'
GO
use [教学管理信息系统]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_student_class]’) and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo]。[student] DROP CONSTRAINT FK_student_class
GO
if exists (select * from dbo。sysobjects where id = object_id(N'[dbo].[FK_courseplan_classrooom]’) and OBJECTPROPERTY(id, N’IsForeignKey') = 1)
ALTER TABLE [dbo]。[courseplan] DROP CONSTRAINT FK_courseplan_classrooom
GO
if exists (select * from dbo。sysobjects where id = object_id(N’[dbo].[FK_courseplan_course]’) and OBJECTPROPERTY(id, N'IsForeignKey’) = 1)
ALTER TABLE [dbo]。[courseplan] DROP CONSTRAINT FK_courseplan_course
GO
if exists (select * from dbo。sysobjects where id = object_id(N'[dbo].[FK_xxxx_course]') and OBJECTPROPERTY(id, N’IsForeignKey’) = 1)
ALTER TABLE [dbo]。[xxxx] DROP CONSTRAINT FK_xxxx_course
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo]。[FK_speciality_department]’) and OBJECTPROPERTY(id, N’IsForeignKey’) = 1)
ALTER TABLE [dbo].[speciality] DROP CONSTRAINT FK_speciality_department
GO
if exists (select * from dbo.sysobjects where id = object_id(N’[dbo]。[FK_class_speciality]’) and OBJECTPROPERTY(id, N'IsForeignKey’) = 1)
ALTER TABLE [dbo]。[class] DROP CONSTRAINT FK_class_speciality
GO
if exists (select * from dbo。sysobjects where id = object_id(N’[dbo]。[FK_exam_grade_student]’) and OBJECTPROPERTY(id, N’IsForeignKey’) = 1)
ALTER TABLE [dbo]。[exam_grade] DROP CONSTRAINT FK_exam_grade_student
GO
if exists (select * from dbo。sysobjects where id = object_id(N’[dbo].[FK_xxxx_student]') and OBJECTPROPERTY(id, N'IsForeignKey’) = 1)
ALTER TABLE [dbo]。[xxxx] DROP CONSTRAINT FK_xxxx_student
GO
if exists (select * from dbo.sysobjects where id = object_id(N’[dbo]。[FK_courseplan_teacher]’) and OBJECTPROPERTY(id, N’IsForeignKey’) = 1)
ALTER TABLE [dbo]。[courseplan] DROP CONSTRAINT FK_courseplan_teacher
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[view_examgrade]') and OBJECTPROPERTY(id, N'IsView’) = 1)
drop view [dbo]。[view_examgrade]
GO
if exists (select * from dbo。sysobjects where id = object_id(N’[dbo]。[class]’) and OBJECTPROPERTY(id, N'IsUserTable’) = 1)
drop table [dbo]。[class]
GO
if exists (select * from dbo。sysobjects where id = object_id(N’[dbo]。[classrooom]’) and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo]。[classrooom]
GO
if exists (select * from dbo.sysobjects where id = object_id(N’[dbo]。[course]’) and OBJECTPROPERTY(id, N'IsUserTable’) = 1)
drop table [dbo]。[course]
GO
if exists (select * from dbo.sysobjects where id = object_id(N’[dbo]。[courseplan]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[courseplan]
GO
if exists (select * from dbo。sysobjects where id = object_id(N'[dbo].[department]') and OBJECTPROPERTY(id, N’IsUserTable') = 1)
drop table [dbo]。[department]
GO
if exists (select * from dbo.sysobjects where id = object_id(N’[dbo]。[exam_grade]’) and OBJECTPROPERTY(id, N’IsUserTable’) = 1)
drop table [dbo].[exam_grade]
GO
if exists (select * from dbo.sysobjects where id = object_id(N’[dbo]。[speciality]’) and OBJECTPROPERTY(id, N’IsUserTable’) = 1)
drop table [dbo]。[speciality]
GO
if exists (select * from dbo。sysobjects where id = object_id(N'[dbo]。[student]’) and OBJECTPROPERTY(id, N’IsUserTable') = 1)
drop table [dbo]。[student]
GO
if exists (select * from dbo。sysobjects where id = object_id(N’[dbo]。[teacher]') and OBJECTPROPERTY(id, N'IsUserTable’) = 1)
drop table [dbo]。[teacher]
GO
if exists (select * from dbo.sysobjects where id = object_id(N’[dbo].[xxxx]') and OBJECTPROPERTY(id, N'IsUserTable’) = 1)
drop table [dbo]。[xxxx]
GO
CREATE TABLE [dbo]。[class] (
[code] [varchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[name] [varchar] (30) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[classshort] [varchar] (30) COLLATE Chinese_PRC_CI_AS NULL ,
[intime] [datetime] NULL ,
[speci_code] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[classrooom] (
[code] [varchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[capacity] [numeric](18, 0) NULL ,
[type] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo]。[course] (
[code] [varchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[name] [varchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[period] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,
[number] [numeric](18, 0) NULL ,
[credithour] [numeric](18, 0) NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[courseplan] (
[teach_code] [varchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[couse_code] [varchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[room_code] [varchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[tabletime] [varchar] (10) COLLATE Chinese_PRC_CI_AS NULL ,
[week] [varchar] (10) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[department] (
[code] [varchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[name] [varchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[address] [varchar] (30) COLLATE Chinese_PRC_CI_AS NULL ,
[telephone] [varchar] (12) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo]。[exam_grade] (
[code] [varchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[kmname] [varchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[stude_code] [varchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[kmgrade] [datetime] NULL ,
[grade] [numeric](18, 0) NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[speciality] (
[code] [varchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[name] [varchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[spechar] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[specshort] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[degree] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,
[depar_code] [varchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo]。[student] (
[code] [varchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[name] [varchar] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[sex] [varchar] (2) COLLATE Chinese_PRC_CI_AS NULL ,
[title] [varchar] (16) COLLATE Chinese_PRC_CI_AS NULL ,
[face] [varchar] (10) COLLATE Chinese_PRC_CI_AS NULL ,
[brithday] [datetime] NULL
展开阅读全文