教学管理信息系统数据库的构建与设计项目概述第一章教学管理信息系统数据库设计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 籍贯1.3.2 Student (学生信息表)1.3.3 Speciality (专业信息表)表3-3 专业信息表1.3.4Department(系信息表)表3-4 系信息表1.3.5 Class(班级信息)表3-5班级信息表1.3.6 Course(课程信息表)表3-6课程信息表1.3.7 Classroom(教室信息表)表3-7 教室信息表1.3.8 Exam_grade(成绩信息表)表3-8 成绩信息表1.3.9 courseplan(授课安排信息表)表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 [教学管理信息系统]GOCREATE 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_ASGOexec sp_dboption N'教学管理信息系统', N'autoclose', N'true'GOexec sp_dboption N'教学管理信息系统', N'bulkcopy', N'false'GOexec sp_dboption N'教学管理信息系统', N'trunc. log', N'true'GOexec sp_dboption N'教学管理信息系统', N'torn page detection', N'true'GOexec sp_dboption N'教学管理信息系统', N'read only', N'false'GOexec sp_dboption N'教学管理信息系统', N'dbo use', N'false'GOexec sp_dboption N'教学管理信息系统', N'single', N'false'GOexec sp_dboption N'教学管理信息系统', N'autoshrink', N'true'GOexec sp_dboption N'教学管理信息系统', N'ANSI null default', N'false'GOexec sp_dboption N'教学管理信息系统', N'recursive triggers', N'false'GOexec sp_dboption N'教学管理信息系统', N'ANSI nulls', N'false'GOexec sp_dboption N'教学管理信息系统', N'concat null yields null', N'false'GOexec sp_dboption N'教学管理信息系统', N'cursor close on commit', N'false'GOexec sp_dboption N'教学管理信息系统', N'default to local cursor', N'false'GOexec sp_dboption N'教学管理信息系统', N'quoted identifier', N'false'GOexec sp_dboption N'教学管理信息系统', N'ANSI warnings', N'false'GOexec sp_dboption N'教学管理信息系统', N'auto create statistics', N'true'GOexec sp_dboption N'教学管理信息系统', N'auto update statistics', N'true'GOuse [教学管理信息系统]GOif 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_classGOif 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_classrooomGOif 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_courseGOif 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_courseGOif 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_departmentGOif 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_specialityGOif 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_studentGOif 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_studentGOif 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_teacherGOif exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[view_examgrade]') and OBJECTPROPERTY(id, N'IsView') = 1)drop view [dbo].[view_examgrade]GOif exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[class]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)drop table [dbo].[class]GOif exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[classrooom]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)drop table [dbo].[classrooom]GOif exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[course]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)drop table [dbo].[course]GOif exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[courseplan]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)drop table [dbo].[courseplan]GOif exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[department]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)drop table [dbo].[department]GOif exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[exam_grade]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)drop table [dbo].[exam_grade]GOif exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[speciality]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)drop table [dbo].[speciality]GOif exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[student]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)drop table [dbo].[student]GOif exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[teacher]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)drop table [dbo].[teacher]GOif exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[xxxx]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)drop table [dbo].[xxxx]GOCREATE 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]GOCREATE 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]GOCREATE 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]GOCREATE 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]GOCREATE 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]GOCREATE 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]GOCREATE 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]GOCREATE 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 ,[nativeplace] [varchar] (12) COLLATE Chinese_PRC_CI_AS NULL ,[address] [varchar] (30) COLLATE Chinese_PRC_CI_AS NULL ,[class_code] [varchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL ) ON [PRIMARY]GOCREATE TABLE [dbo].[teacher] ([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 ,[specialiy] [varchar] (16) COLLATE Chinese_PRC_CI_AS NOT NULL , [title] [varchar] (16) COLLATE Chinese_PRC_CI_AS NOT NULL ,[birthday] [datetime] NULL ,[nativeplace] [varchar] (12) COLLATE Chinese_PRC_CI_AS NULL ,[address] [varchar] (30) COLLATE Chinese_PRC_CI_AS NULL) ON [PRIMARY]GOCREATE TABLE [dbo].[xxxx] ([cours_code] [varchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL , [stude_code] [varchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL , [cours_audit] [varchar] (10) COLLATE Chinese_PRC_CI_AS NULL ,[grade_audit] [varchar] (10) COLLATE Chinese_PRC_CI_AS NULL) ON [PRIMARY]GOALTER TABLE [dbo].[class] WITH NOCHECK ADDCONSTRAINT [PK_class] PRIMARY KEY CLUSTERED([code]) ON [PRIMARY]GOALTER TABLE [dbo].[classrooom] WITH NOCHECK ADD CONSTRAINT [PK_classrooom] PRIMARY KEY CLUSTERED ([code]) ON [PRIMARY]GOALTER TABLE [dbo].[course] WITH NOCHECK ADDCONSTRAINT [PK_course] PRIMARY KEY CLUSTERED([code]) ON [PRIMARY]GOALTER TABLE [dbo].[department] WITH NOCHECK ADD CONSTRAINT [PK_xi] PRIMARY KEY CLUSTERED([code]) ON [PRIMARY]GOALTER TABLE [dbo].[exam_grade] WITH NOCHECK ADD CONSTRAINT [PK_exam_grade] PRIMARY KEY CLUSTERED ([code]) ON [PRIMARY]GOALTER TABLE [dbo].[speciality] WITH NOCHECK ADDCONSTRAINT [PK_speciality] PRIMARY KEY CLUSTERED([code]) ON [PRIMARY]GOALTER TABLE [dbo].[student] WITH NOCHECK ADD CONSTRAINT [PK_student] PRIMARY KEY CLUSTERED ([code]) ON [PRIMARY]GOALTER TABLE [dbo].[teacher] WITH NOCHECK ADD CONSTRAINT [DF_teacher_sex] DEFAULT ('=男') FOR [sex], CONSTRAINT [PK_teacher] PRIMARY KEY CLUSTERED ([code]) ON [PRIMARY]GOALTER TABLE [dbo].[class] ADDCONSTRAINT [FK_class_speciality] FOREIGN KEY([speci_code]) REFERENCES [dbo].[speciality] ([code])GOALTER TABLE [dbo].[courseplan] ADDCONSTRAINT [FK_courseplan_classrooom] FOREIGN KEY ([room_code]) REFERENCES [dbo].[classrooom] ([code]),CONSTRAINT [FK_courseplan_course] FOREIGN KEY([couse_code]) REFERENCES [dbo].[course] ([code]),CONSTRAINT [FK_courseplan_teacher] FOREIGN KEY([teach_code]) REFERENCES [dbo].[teacher] ([code])GOALTER TABLE [dbo].[exam_grade] ADDCONSTRAINT [FK_exam_grade_student] FOREIGN KEY ([stude_code]) REFERENCES [dbo].[student] ([code])GOALTER TABLE [dbo].[speciality] ADDCONSTRAINT [FK_speciality_department] FOREIGN KEY ([depar_code]) REFERENCES [dbo].[department] ([code])GOALTER TABLE [dbo].[student] ADDCONSTRAINT [FK_student_class] FOREIGN KEY([class_code]) REFERENCES [dbo].[class] ([code])GOALTER TABLE [dbo].[xxxx] ADDCONSTRAINT [FK_xxxx_course] FOREIGN KEY([cours_code]) REFERENCES [dbo].[course] ([code]),CONSTRAINT [FK_xxxx_student] FOREIGN KEY([stude_code]) REFERENCES [dbo].[student] ([code])GOSET QUOTED_IDENTIFIER ONGOSET ANSI_NULLS ONGOCREATE VIEW dbo.view_examgradeASSELECT AS 系名称, AS 专业名称, dbo.department.code AS 系代码, dbo.speciality.code AS 专业代码, AS 班级名称, dbo.class.code AS 班级代号,dbo.student.code AS 学号, AS 学生名称FROM dbo.department INNER JOINdbo.speciality ON dbo.department.code = dbo.speciality.depar_code INNER JOINdbo.class ON dbo.speciality.code = dbo.class.speci_code INNER JOINdbo.student ON dbo.class.code = dbo.student.class_codeGOSET QUOTED_IDENTIFIER OFFGOSET ANSI_NULLS ONGO第二章教学管理信息系统数据库实施1.项目实践1.1数据库的创建1.1.1 分析参照2.5.1 数据库定义语句,使用Transact-SQL语言在查询分析器中进行教学管理信息系统数据库的创建。