学生成绩管理系统数据库分析(共19页).doc
精选优质文档-倾情为你奉上枣 庄 学 院信息科学与工程学院课程设计任务书 题 目: 学生成绩管理系统 学 号: 姓 名: 专 业: 网络工程 课 程: 数据库 指导教师: 职称: 完成时间: 2013年 12 月-2014 年 1月枣庄学院信息科学与工程学院制2013年12月10日专心-专注-专业课程设计任务书及成绩评定课程设计的任务和具体要求 设计的系统应包含输入、输出、查询、插入、修改、删除等基本功能。据题目的基本需求,设计数据库、编写程序(SQL),并写出详细的设计说明书指导教师签字: 日期: 指导教师评语成绩: 指导教师签字: 日期: 课程设计所需软件、硬件等 1.Windows7的PC机 2.SQLsever2008 3. Powerdesigner数据建模工具 课程设计进度计划起至日期工作内容备注2013年12月初至2014年一月初半个月的收集资料,确定课题-成绩管理系统,后半个月开始数据库的库表视图的创建和改进。参考文献、资料索引序号文献、资料名称编著者出版单位 1、数据库实用技术 张冬玲 编著 清华大学出版社 2、数据库系统导论 C.J.Data 编著 机械工业出版社 3、数据库设计 Stephens 著 机械工业出版社目录 学生成绩管理系统数据库一、需求分析阶段 1.1信息需求高校学生的成绩管理工作量大、繁杂,人工处理非常困难。学生成绩管理系统借助于计算机强大的处理能力,大大减轻了管理人员的工作量,并提高了处理的准确性。学生成绩管理系统的开发运用,实现了学生成绩管理的自动化,不仅把广大教师从繁重的成绩管理工作中解脱出来、把学校从传统的成绩管理模式中解放出来,而且对学生成绩的判断和整理更合理、更公正,同时也给教师提供了一个准确、清晰、轻松的成绩管理环境。 1.2功能需求能够进行数据库的数据定义、数据操纵、数据控制等处理功能,进行联机处理的相应时间要短。具体功能应包括:系统应该提供课程安排数据的插入、删除、更新、查询;成绩的添加、修改、删除、查询,学生及教职工基本信息查询的功能。 1.3对数据库操作维护的需求二、概念结构设计阶段概念结构设计阶段是整个数据库设计的关键,它通过对用户需求进行综合、归纳与抽象,形成一个独立于具体DBMS的概念模型。设计教室管理数据库包括班级、教室、课程、教师四个关系。E-R图如下图1.1 三、逻辑结构设计阶段 逻辑结构是独立于任何一种数据模型的信息结构。逻辑结构的任务是把概念结构设计阶段设计好的基本E-R图转化为宜选用的DBMS所支持的数据模型相符合的逻辑结构,并对其进行优化。E-R图向关系模型转化要解决的问题是如何将实体型和实体间的联系转化为关系模式,如何确定这些关系模式的属性和码。设计学生成绩管理数据库,包括课程、学生、教师、成绩四个关系, 其关系模式中对每个实体定义的属性如下:课程信息表Class:(课程号,课程名,教师号,学分,学时)学生信息表Student1:(学号,姓名,性别,年龄,专业,系别)成绩表Score:(学号号,课程名,成绩)教师表Teacher1:(教师号,教师名,教师性别,教师系别)3.1课程信息表(class)字段名描述数据类型字段限制cno课程号char(10)Primarykeycname课程名char(45)Not nullteano教师号char(10)Not nullcredit学分char(4)Not nullctime学时char(50)Not null3.2学生信息表(student)字段名描述数据类型字段权限sno学号char(10)Primarykey sname姓名char(10)Not null ssex性别char(3)Not nullsage 年龄char(3)Not null major专业char(30)Not nulldepart系别char(50)Not null3.3教师表(teacher1)字段名属 性数据类型字段权限teano教师号char(10)Primarykeytname教师名char(10)Not nullTsex教师性别char(2)Not nullTdepart教室系别char(50)Not null3.4成绩表字段名属 性数据类型字段权限sno学号char(10)Primarykeycno课程名char(10)Foreignkeydegree成绩char(3)Not null四、物理设计阶段 数据库物理设计的任务是为上一阶段得到的数据库逻辑模式,即数据库的逻辑结构选择合适的应用环境的物理结构,既确定有效地实现逻辑结构模式的数据库存储模式,确定在物理设备上所采用的存储结构和存取方法,然后对该存储模式进行性能评价、修改设计,经过多次反复,最后得到一个性能较好的存储模式。数据库物理设计内容包括记录存储结构的设计,存储路径的设计。五、数据库实现 数据库实施是指建立数据库,编制与调试应用程序, 组织数据入库,并进行试运行。5.1创建数据库(1) 打开SQL工具“查询分析器”(2) 在查询窗口中键入下列SQL语句create database ScoreSystem执行上述SQL语句即可新建一名为ScoreSystem的数据库六、数据库运行和维护阶段 6.1数据定义基本表创建、修改及删除;索引的创建和删除;视图的创建和删除(1)创建数据表 一个完整的数据库不可缺少的就是数据表,若干个数据表的集合成一个数据库。数据表主要用来存放一定格式的记录,数据表中的行被称为记录,列被称为字段。创建数据表的过程其实就是定义字段的过程。在此学生成绩管理系统中需要创建四个表,即课程信息表、学生信息表、教师信息表和成绩表。创建数据库后,为ScoreSystem数据库添加数据表,步骤如下。(1) 新建查询窗口(2) 在查询窗口中键入下列SQL语句课程信息相关表格Cnocnametnocreditctime301PS照片处理1224302时事政治与申论22183033D MAX3236304心理应用4232305西方电影欣赏5230306计算机文化基础6332307枣庄文化7330308中外文化十讲8345309形势与政策9335create table Class( /创建课程信息表cno char(10) primary key, /课程号cname char(45) not null, /课程名teano char(10) Not null /教师号credit char(4), Not null /学分ctime char(50), Not null /学时) 执行上述SQL语句即可创建课程信息表相关表格学生信息相关表格Snosnamessexsagemajordepart陈琦男22网络工程信息科学与工程学院崔雪娇女23网络工程信息科学与工程学院董朝阳男22网络工程信息科学与工程学院杜鹃女22网络工程信息科学与工程学院方卉女20网络工程信息科学与工程学院王佩琪女20网络工程信息科学与工程学院李明泽男21网络工程信息科学与工程学院张佳女21网络工程信息科学与工程学院曹睿家男20网络工程信息科学与工程学院柳夕颜女21网络工程信息科学与工程学院周明轩男21网络工程信息科学与工程学院郭晨男21网络工程信息科学与工程学院王家琪男21网络工程信息科学与工程学院刘明男21网络工程信息科学与工程学院罗安臣男20网络工程信息科学与工程学院张露西女21网络工程信息科学与工程学院吴芷琪女21网络工程信息科学与工程学院毛亚茹女21网络工程信息科学与工程学院杨凤瑞女21网络工程信息科学与工程学院王思语女21网络工程信息科学与工程学院create table student( /创建学生信息表 sno char(10) primary key, /学号 sname char(10) not null, /姓名 ssex char(3) not null, /性别 Sage char(3) not null, /年龄 Major char(30) not null, /专业 Depart char(50) not null, /系别 )执行上述SQL语句即可创建学生信息表相关表格教师信息表tnotnametsextdpart1卢亚君女文学院2李昌明男美术学院3张富强男文学院4刘翠杰女心理学院5王庆石男文学院6黄立明男信息科学与工程学院7王纲男文学院8徐伟丽女文学院9刘书霞女文学院create table teacher1( /创建教师信息表 tno char(10) primary key, /教师号 tname varchar(10) not null, /教师名 tsex char(2), /教师性别 tdepart varchar(50) /教师系别 )执行上述SQL语句即可创建教师信息表相关表格成绩信息表Sno Cno Degree3039030390305863068230484301813069330279304853069430874307863099930689305883048730386302853018430783CREATE TABLE score( /创建成绩表sno char(19) not null primary key, /学号cno char(10) constraint fk_cno foreign key references class (cno), /课程号degree char(3) not null /成绩)执行上述SQL语句即可创建成绩表相关表格(2)基本表的删除drop table students 6.2数据操作数据库查询操作6.2.1单表查询(1)查询sno为学生的snameselect snamefrom student1where sno=' '结果:(2)查询ssex为女并且depart为信息科学与工程学院的snameselect snamefrom studentwhere ssex ='女' and depart ='信息科学与工程学院'结果:(3)查询所有学生的姓名、性别和年龄。select sname,ssex,sagefrom student结果:(4)查询学生信息表中年龄小于21和年龄大于21的学生的姓名和年龄select sname,sagefrom studentwhere sage>21 or sage<21结果:(5)查询表student中所有姓“王”数据6.2.2连接查询(1)学生的学号、姓名,所选课程的课程号、课程名和成绩、任课教师名Select student1.sno,student1.sname,o,ame,score.degree,teacher1.tnamefrom student,class,score,teacher1Where student1.sno=score.sno and o=o and teacher1.tno=class.teano结果:(2)找出教授数据库原理的老师的教师名select teacher1.tnamefrom class,teacher1Where class.tno=teacher1.tno and ame='枣庄文化'结果:(3)操作结果集查询 查询号同学和号同学共同选修的课程Select cnoFrom scoreWhere sno=''IntersectSelect cnoFrom scoreWhere sno=''查询结果6.2.3嵌套查询 查询选修了306这门课的所有学生的学号、姓名、年龄、院系Select sno,sname,sage,departFrom studentWhere sno in(select sno From score Where cno=306)查询结果6.3数据库更新操作6.3.1.插入数据 向Student表中添加一项记录:姓名:王辰,学号:,性别:男,年龄:21专业:网络工程,系别:信息科学与工程学院Insert Into student(Sno,Sname, Ssex,sage,major,depart)Values ('',' 王辰', '男',' 21,' 网络工程','信息科学与工程学院')6.3.2修改数据 修改陈琦的学号为: Update Student Set Sno= Where Sname=陈琦; 修改前修改后6.3.3.删除数据 删除董朝阳的学号为: Delete from student Where(sno=) 修改前 修改后6.4为数据库建立索引创建索引可以大大提高系统的性能。第一,通过创建唯一性索引,可以保证每一行数据的唯一性。第二,可以大大加快数据的检索速度,这也是所以的最主要原因。第三,可以加速表与表之间的连接,特别是实现数据的参考完整性方面特有意义。第四,在使用ORDER BY和GROUP BY子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。第五,通过使用索引,可以在查询过程中,使用优化隐藏器,提高系统性能。6.4.1创建及修改索引 (1) 在class表的cno列上创建非聚集索引。Create index classrname ON class (cno)(2) 在student表的sno列上创建非聚集索引。Create unique index studentno ON Student(sno)(3) 在Student表的sno列创建一个非聚集索引,要求索引键值按sno升序排列。Create index studentno ON student(sno ASC)6.4.2.删除索引 删除student表中的studentno 索引。Drop index student.studentno6.5触发器的操作6.5.1创建及修改触发器 建一个名为UPDATE_sno的触发器6.5.2删除触发器 触发器的删除6.6视图的操作 数据库视图的定义(创建和删除)、查询和更新6.6.1.创建视图(1).创建视图scorecar3并查询所有学生选课的信息,包括学号、姓名、课程号、课程名、成绩create view score3asselect s.sno'学号',sname'学生名',o'课程号',cname'课程名',sc.degree'成绩'from student s,class c,score scwhere s.sno=sc.sno and o=o go查询结果6.6.2.更新视图 修改信息:将陈琦的名字改为陈琪琪 Update score3 set 学生名='陈琪琪' where 学生名='陈琦修改前修改后6.6.3删除视图 删除视图:删除前面的score3视图。 drop view score3七、总结 本学生成绩查询系统主要参照课本,相对来说比较简单。但是由于主要以课本为依据,所以整个设计做下来基本掌握了课本上数据库的基础操作。设计过程中我也遇到了一些问题,再向其他同学请教的过程中我收获了很多。(1)操作视图查询,编写代码时发现,一个表中的主键必须是另一个表的外键时才可以对另一个表进行引用。(2)在设计表时应注意使用正确的字段类型。 (3)在建表语句中,如果这个表的主键是多个属性的组合主键,则必须作为表级完整性进行定义。