《“课程管理系统”数据库设计及实现(共34页).doc》由会员分享,可在线阅读,更多相关《“课程管理系统”数据库设计及实现(共34页).doc(34页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上大学课程设计报告课程设计题目:“课程管理系统”数据库设计与实现 学 院: 专业班级: 年 级: 姓 名: 学 号: 完成时间: 年 月 日成 绩: 指导教师: 目录 2.2 E-R模型向关系模型的转换建视图与索引,授予用户权限建视图 3.2 创建索引 3.3 授予权限 正文一、需求分析1. 近年来,随着各大高校的规模不断扩大,生源的急剧增加,有关学生的各种信息量也成倍增长。面对庞大的信息量,需要建立一个课程管理系统来提高管理质量,让老师减轻工作量,提高工作效率。建立课程管理系统就是为了实现信息的规范管理、科学统计与快速查询,从而减少管理方面的工作量。课程管理系统主要提
2、供教师、学生的学籍管理、成绩管理与课程管理功能。 2. 需求功能分析:教师与学生的登录学生学籍的添加、修改、删除、查询课程管理的添加、修改、删除、查询教师授课的安排3. 用户需求分析用户的需求具体体现在各种信息的提供、保存、更新、查询方面,这就要求数据库机构能充分满足各种信息的输入与输出。收集基本数据、数据结构以及数据处理流程,组成一份详尽的数据字典,为后面的具体设计打下基础。 针对课程管理系统的需求,通过对课程管理系统的设计与数据流程的分析,设计如下所示的数据项与数据存储表:登录信息:包括用户号、密码、权限学籍信息:包括用户号、姓名、性别、出生日期、班级、入学日期、家庭住址、电话课程信息:包
3、括课程号、课程名、类型、教师名4.统的总体结构设计 该系统共有三个模块:登陆模块、学籍管理模块、课程信息模块。这几个模块同时还包括数据添加、数据修改、数据删除、数据查询等几个基本操作。 (1) 登录模块 在登录界面中教师与学生可登录。在登录界面中分别填入用户名、密码与身份,然后按确认键登录。如果填入信息有误则弹出错误信息的提示窗口,重新返回登陆窗口。如果填入信息正确则要根据登录信息表中登录者的权限(“0”或“1”)分别进入教师(“1”)或学生(“0”)管理系统主界面。 (2) 学籍管理模块 该模块主要完成学生基本信息的添加、修改、删除、查询等功能。根据登录时权限的判断,权限为“0”时,是学生进
4、入该模块,只可对自己的学籍进行查询,添加、修改、删除功能不可用;权限为“1”时,教师进入该模块,此时可进行所有学生学籍的查询、添加、修改、删除,在此模块中定义了8个数据来进行学生的信息存储,如果修改某个记录,可单击修改按钮进行数据的编辑,此时界面数据内容与数据库内容将同时更新。 (4)课程管理模块 该模块主要完成存储课程的所有信息的添加、修改、删除、查询等功能。根据登录时权限的判断,权限为“0”时,学生进入该模块,只可进行课程查询,添加、修改、删除功能不可用;权限为“1”时,教师进入该模块,可进行查询、添加、修改、删除,在此模块中定义了6个数据来进行课程的信息存储,如果修改某一纪录,可单击修改
5、单按钮进行课程记数据的编辑,此时界面数据内容与数据库内容将同时更新。2、 概念设计数据字典1数据项名数据类型长度注明学生学号字符型106位十进制数学生姓名字符型8年龄字符型16籍贯字符型8学生出生地入学时间日期型教室编号字符型10以A,B,C,D开头,后接4位十进制数教室所属校区字符型10A,B,C,D教学楼字符型8管理员代码字符型 206位十进制数管理员姓名字符型8管理员电话字符型20课程代码字符型84位十进制数学院代码字符型102位十进制数课程名字符型8课程人数数值型课程所属校区字符型10A,B,C,D班级代码字符型104位十进制数专业代码字符型102位十进制数班级名字符型8班级学生数数值
6、型学院代码字符型102位十进制数专业名字符型8学院名字符型10学院人数字符型10教工号字符型106位十进制数教师姓名字符型8教师电话字符型20教师邮箱字符型30课程管理系统数据库中的E-R图3、 逻辑设计将上面的E-R图转化为如下关系模型,下划横线代表关系的主键:学生(学号,姓名,年龄,籍贯,入学时间,专业代码,班级代码,学院代码)班级(班级代码,专业代码,班级名,学生数)专业(专业代码,学院代码。专业名称)学院(学院代码,学院名,学员人数)教师(教工号,教师姓名,教师电话,教师邮箱)从属(加工号,学院代码)课程(课程代码,学院代码,课程名,人数,学分)管理员(管理员代码,管理员姓名,管理员电
7、话,管理员邮箱)教室(教室编号,所属校区,教学楼)安排(课程代码,教工号,教室编号,管理员代码,上课时间)分配(学号,教室编号)选择(学号,课程代码)二、转化后的关系模型如图:三、数据库实现1、 数据库视图的创建1)创建一个学号为的学生的查询视图;Create view 学生信息(学生学号,所选课程名称,所在班级代号,老师姓名,上课教室)asselect学生学号,课程名,班级代码,教师姓名,教室编号from学生,课程,班级,教师,教室 where学生.班级代码=班级.班级代码and 学生.学院代码=学院. 学院代码2)创建一个教工号为5132的教师的查询视图;Create view 教师信息(
8、所教课程名称,所教班级代号,所属学院,上课教室)asselect 课程名,班级代码,学院,教室编号from 课程,班级,学院,教室,教师 where 教师.教工号=5132;3)创建一个管理员的查询视图Create view 管理员视图(课程名称,老师姓名,学生姓名,教室编号)asselect 课程名,教师姓名,学生姓名,教室编号from 课程,教师,学生,教室;2、索引的创建我们可以在视图学生信息中的”学号列”上创建一个索引Created index stu_index on 学生信息(学号)。3、权限管理,安全性设计授予权限1. 给学生一个可以查看课程安排的权限Grant select o
9、n 安排 to 学生2. 给教师一个可以查看学生选择课程情况的权限Grant select on 选择 to 教师3. 给教师一个可以查看课程安排的权限Grant update on 安排 to 教师4.给学生一个可以查看自己的选课的权限Grant select on 选择 to 学生4. 给管理员一个可以查看课程安排的权限Grant select on 安排to 管理员6.给管理员一个删除教师与学生所选课程的权限Grant update on 课程 to 管理员代码附录if exists(select 1 from sys.sysforeignkey where role=FK_分配_分配_
10、学生) then alter table 分配 delete foreign key FK_分配_分配_学生end if;if exists(select 1 from sys.sysforeignkey where role=FK_学生_属于_班级) then alter table 学生 delete foreign key FK_学生_属于_班级end if;if exists(select 1 from sys.sysforeignkey where role=FK_学生_所在_专业) then alter table 学生 delete foreign key FK_学生_所在_专业
11、end if;if exists(select 1 from sys.sysforeignkey where role=FK_学生_所属_学院) then alter table 学生 delete foreign key FK_学生_所属_学院end if;if exists(select 1 from sys.sysforeignkey where role=FK_选择_选择_学生) then alter table 选择 delete foreign key FK_选择_选择_学生end if;drop index if exists 学生.所属_FK;drop index if exi
12、sts 学生.所在_FK;drop index if exists 学生.属于_FK;drop index if exists 学生.学生_PK;drop table if exists 学生;/*=*/* Table: 学生 */*=*/create table 学生 ( 学号 varchar(10) not null, 专业代码 varchar(10) not null, 班级代码 varchar(10) not null, 学院代码 varchar(10) not null, 学生姓名 varchar(8) null, 年龄 varchar(16) null, 籍贯 varchar(8)
13、 null, 入学时间 timestamp null, constraint PK_学生 primary key (学号);/*=*/* Index: 学生_PK */*=*/create unique index 学生_PK on 学生 (学号 ASC);/*=*/* Index: 属于_FK */*=*/create index 属于_FK on 学生 (班级代码 ASC);/*=*/* Index: 所在_FK */*=*/create index 所在_FK on 学生 (专业代码 ASC);/*=*/* Index: 所属_FK */*=*/create index 所属_FK on
14、 学生 (学院代码 ASC);alter table 学生 add constraint FK_学生_属于_班级 foreign key (班级代码) references 班级 (班级代码) on update restrict on delete restrict;alter table 学生 add constraint FK_学生_所在_专业 foreign key (专业代码) references 专业 (专业代码) on update restrict on delete restrict;alter table 学生 add constraint FK_学生_所属_学院 for
15、eign key (学院代码) references 学院 (学院代码) on update restrict on delete restrict;if exists(select 1 from sys.sysforeignkey where role=FK_学生_属于_班级) then alter table 学生 delete foreign key FK_学生_属于_班级end if;if exists(select 1 from sys.sysforeignkey where role=FK_班级_包含_专业) then alter table 班级 delete foreign k
16、ey FK_班级_包含_专业end if;drop index if exists 班级.包含_FK;drop index if exists 班级.班级_PK;drop table if exists 班级;/*=*/* Table: 班级 */*=*/create table 班级 ( 班级代码 varchar(10) not null, 专业代码 varchar(10) not null, 班级名 varchar(8) null, 学生数 integer null, 班主任 char(10) null, constraint PK_班级 primary key (班级代码);/*=*/*
17、 Index: 班级_PK */*=*/create unique index 班级_PK on 班级 (班级代码 ASC);/*=*/* Index: 包含_FK */*=*/create index 包含_FK on 班级 (专业代码 ASC);alter table 班级 add constraint FK_班级_包含_专业 foreign key (专业代码) references 专业 (专业代码) on update restrict on delete restrict; if exists(select 1 from sys.sysforeignkey where role=F
18、K_专业_含有_学院) then alter table 专业 delete foreign key FK_专业_含有_学院end if;if exists(select 1 from sys.sysforeignkey where role=FK_学生_所在_专业) then alter table 学生 delete foreign key FK_学生_所在_专业end if;if exists(select 1 from sys.sysforeignkey where role=FK_班级_包含_专业) then alter table 班级 delete foreign key FK_
19、班级_包含_专业end if;drop index if exists 专业.所属_FK;drop index if exists 专业.专业_PK;drop table if exists 专业;/*=*/* Table: 专业 */*=*/create table 专业 ( 专业代码 varchar(10) not null, 学院代码 varchar(10) not null, 专业名 varchar(8) null, constraint PK_专业 primary key (专业代码);/*=*/* Index: 专业_PK */*=*/create unique index 专业_
20、PK on 专业 (专业代码 ASC);/*=*/* Index: 所属_FK */*=*/create index 所属_FK on 专业 (学院代码 ASC);alter table 专业 add constraint FK_专业_含有_学院 foreign key (学院代码) references 学院 (学院代码) on update restrict on delete restrict; if exists(select 1 from sys.sysforeignkey where role=FK_安排_安排_课程) then alter table 安排 delete fore
21、ign key FK_安排_安排_课程end if;if exists(select 1 from sys.sysforeignkey where role=FK_课程_开设_学院) then alter table 课程 delete foreign key FK_课程_开设_学院end if;if exists(select 1 from sys.sysforeignkey where role=FK_选择_选择2_课程) then alter table 选择 delete foreign key FK_选择_选择2_课程end if;drop index if exists 课程.开设
22、_FK;drop index if exists 课程.课程_PK;drop table if exists 课程;/*=*/* Table: 课程 */*=*/create table 课程 ( 课程代码 varchar(8) not null, 学院代码 varchar(10) not null, 课程名 varchar(8) null, 人数 integer null, 所属校区 varchar(10) null, constraint PK_课程 primary key (课程代码);/*=*/* Index: 课程_PK */*=*/create unique index 课程_PK
23、 on 课程 (课程代码 ASC);/*=*/* Index: 开设_FK */*=*/create index 开设_FK on 课程 (学院代码 ASC);alter table 课程 add constraint FK_课程_开设_学院 foreign key (学院代码) references 学院 (学院代码) on update restrict on delete restrict; if exists(select 1 from sys.sysforeignkey where role=FK_专业_含有_学院) then alter table 专业 delete foreig
24、n key FK_专业_含有_学院end if;if exists(select 1 from sys.sysforeignkey where role=FK_从属_从属2_学院) then alter table 从属 delete foreign key FK_从属_从属2_学院end if;if exists(select 1 from sys.sysforeignkey where role=FK_学生_所属_学院) then alter table 学生 delete foreign key FK_学生_所属_学院end if;if exists(select 1 from sys.
25、sysforeignkey where role=FK_课程_开设_学院) then alter table 课程 delete foreign key FK_课程_开设_学院end if;drop index if exists 学院.学院_PK;drop table if exists 学院;/*=*/* Table: 学院 */*=*/create table 学院 ( 学院代码 varchar(10) not null, 学院名 varchar(8) null, 学院人数 integer null, constraint PK_学院 primary key (学院代码);/*=*/*
26、Index: 学院_PK */*=*/create unique index 学院_PK on 学院 (学院代码 ASC); if exists(select 1 from sys.sysforeignkey where role=FK_安排_安排4_管理员) then alter table 安排 delete foreign key FK_安排_安排4_管理员end if;drop index if exists 管理员.教务处_PK;drop table if exists 管理员;/*=*/* Table: 管理员 */*=*/create table 管理员 ( 管理员代码 varc
27、har(20) not null, 学生姓名 varchar(8) null, 教师电话 varchar(20) null, 管理员邮箱 char(10) null, constraint PK_管理员 primary key (管理员代码);/*=*/* Index: 教务处_PK */*=*/create unique index 教务处_PK on 管理员 (管理员代码 ASC); if exists(select 1 from sys.sysforeignkey where role=FK_从属_从属_教师) then alter table 从属 delete foreign key
28、 FK_从属_从属_教师end if;if exists(select 1 from sys.sysforeignkey where role=FK_安排_安排2_教师) then alter table 安排 delete foreign key FK_安排_安排2_教师end if;drop index if exists 教师.教师_PK;drop table if exists 教师;/*=*/* Table: 教师 */*=*/create table 教师 ( 教工号 varchar(10) not null, 学生姓名 varchar(8) null, 教师电话 varchar(20) null, 教师邮箱 varchar(30) null, constraint PK_教师 primary key (教工号);/*=*/* Index: 教师_PK */*=