学生成绩管理系统数据库一、需求分析阶段1.信息需求高校学生的成绩管理工作量大、繁杂,人工处理非常困难。学生成绩管理系统借助于计算机强大的处理能力,大大减轻了管理人员的工作量,并提高了处理的准确性。学生成绩管理系统的开发运用,实现了学生成绩管理的自动化,不仅把广大教师从繁重的成绩管理工作中解脱出来、把学校从传统的成绩管理模式中解放出来,而且对学生成绩的判断和整理更合理、更公正,同时也给教师提供了一个准确、清晰、轻松的成绩管理环境。2.功能需求能够进行数据库的数据定义、数据操纵、数据控制等处理功能,进行联机处理的相应时间要短。具体功能应包括:系统应该提供课程安排数据的插入、删除、更新、查询;成绩的添加、修改、删除、查询,学生及教职工基本信息查询的功能。3.安全性与完整性要求二、概念结构设计阶段概念结构设计阶段是整个数据库设计的关键,它通过对用户需求进行综合、归纳与抽象,形成一个独立于具体DBMS的概念模型。设计教室管理数据库包括班级、教室、课程、教师四个关系。E-R图如下三、逻辑结构设计阶段逻辑结构是独立于任何一种数据模型的信息结构。逻辑结构的任务是把概念结构设计阶段设计好的基本E-R图转化为宜选用的DBMS所支持的数据模型相符合的逻辑结构,并对其进行优化。E-R图向关系模型转化要解决的问题是如何将实体型和实体间的联系转化为关系模式,如何确定这些关系模式的属性和码。设计学生成绩管理数据库,包括课程、学生、教师、成绩四个关系,其关系模式中对每个实体定义的属性如下:课程信息表Class:(课程号,课程名,教师号,学分,学时)学生信息表Student1:(学号,姓名,性别,年龄,专业,系别)成绩表Score:(学号号,课程名,成绩)教师表课程信息表学分教师号课程号课程名学时学生信息表学号姓名专业年龄系别性别选课成绩课程号学号教师信息表教师号教师名教师性别教课教师系别成绩Teacher1:(教师号,教师名,教师性别,教师系别)1、课程信息表(class)字段名描述数据类型字段限制cno课程号char(10)Primarykeycname课程名char(10)Notnullteano教师号char(10)Notnullcredit学分char(4)Notnullctime学时char(50)Notnull2、学生信息表(student1)字段名描述数据类型字段权限sno学号char(10)Primarykeysname姓名char(10)Notnullssex性别char(2)Notnullsage年龄char(2)Notnullmajor专业char(10)Notnulldepart系别char(10)Notnull3.教师表(teacher1)字段名属性数据类型字段权限teano教师号char(10)Primarykeytname教师名char(10)NotnullTsex教师性别char(2)NotnullTdepart教室系别char(10)Notnull4.成绩表字段名属性数据类型字段权限sno学号char(10)Primarykeycno课程名char(10)Notnulldegree成绩char(10)Notnull四、物理设计阶段数据库物理设计的任务是为上一阶段得到的数据库逻辑模式,即数据库的逻辑结构选择合适的应用环境的物理结构,既确定有效地实现逻辑结构模式的数据库存储模式,确定在物理设备上所采用的存储结构和存取方法,然后对该存储模式进行性能评价、修改设计,经过多次反复,最后得到一个性能较好的存储模式。数据库物理设计内容包括记录存储结构的设计,存储路径的设计。五、数据库实现数据库实施是指建立数据库,编制与调试应用程序,组织数据入库,并进行试运行。1、创建数据库(1)打开SQL工具“查询分析器”(2)在查询窗口中键入下列SQL语句createdatabaseScoreSystem执行上述SQL语句即可新建一名为ScoreSystem的数据库2、创建数据表一个完整的数据库不可缺少的就是数据表,若干个数据表的集合成一个数据库。数据表主要用来存放一定格式的记录,数据表中的行被称为记录,列被称为字段。创建数据表的过程其实就是定义字段的过程。在此学生成绩管理系统中需要创建四个表,即课程信息表、学生信息表、教师信息表和成绩表。创建数据库后,为ScoreSystem数据库添加数据表,步骤如下。(1)新建查询窗口(2)在查询窗口中键入下列SQL语句createtableClass(//创建课程信息表cnochar(10)primarykey,//课程号cnamechar(10)notnull,//课程名teanochar(10)Notnull//教师号creditchar(4),Notnull//学分ctimechar(50),Notnull//学时)执行上述SQL语句即可创建课程信息表相关表格createtablestudent1(//创建学生信息表snochar(10)primarykey,//学号snamechar(10)notnull,//姓名ssexchar(2)notnull,//性别Sagechar(2)notnull,//年龄Majorchar(10)notnull,//专业Departchar(10)notnull,//系别)执行上述SQL语句即可创建学生信息表相关表格createtableteacher1(//创建教师信息表tnochar(10)primarykey,//教师号tnamevarchar(50)notnull,//教师名tsexchar(2),//教师性别tdepartvarchar(50)//教师系别)执行上述SQL语句即可创建教师信息表相关表格createtablescore(//创建成绩表snochar(10),//学号cnochar(10),//课程号)执行上述SQL语句即可创建成绩表相关表格学生信息相关表格Snosnamessexsagemajordepart0811080101陈琦男22信息工商0811080102崔雪娇女23信息工商0811080103董朝阳男22数学教育数学系0811080104杜鹃女22计算机应用计算机系0811080105方卉女20汉语言文法系课程信息相关表格Cnocnametnocreditctime0301财务管理0012240302供应链管理0022.2180303生产与运作管理0032.4360304统计学0042.6320305网页制作0052.8300306操作系统原理0063.0320307数据库原理0073.2300308项目管理0083.4450309web程序设计0093.535成绩信息表SnoCnoDegree081108010103068508110801010303900811080101030586081108010203068208110801020304840811080102030181081108010303069308110801030302790811080103030485081108010403069408110801040308740811080104030786教师信息表tnotnametsextdepart001卢亚君女财经002李昌明男财经003张富强男财经004刘翠杰女数信005王庆石男数信006黄立明男数信007王纲男计算机008徐伟丽女计算机009刘书霞女计算机六、数据库运行和维护阶段1、数据定义:基本表的创建、修改及删除;索引的创建和删除;视图的创建和删除(1)基本表的创建,建表语句createtablestudents(stunochar(10)primarykey,stunamevarchar(40)notnull,stusexchar(2)notnull,stuagechar(10)notnull,stumajorchar(10)notnull,studepartchar(10)notnull,)(2)基本表的删除droptablestudents2、数据操作数据库查询操作A.单表查询:(1)查询sno为0811080101学生的snameselectsnamefromstudent1wheresno='0811080101'结果:(2)查询ssex为’女’并且sdepart为’工商’的snameselectsnamefromstudent1wheressex='女'andsdepart='工商'结果:(3)查询所有学生的姓名和系别。selectsname,departfromstudent1结果:(4)查询depart为数学系的sname。selectsnamefromstudent1wheredepart='数学系'结果:(5)查询所有学生所在院系名称selectdistinctdepartfromstudent结果:(6)查询学生信息表中年龄小于21和年龄大于21的学生的姓名和系别selectsname,departfromstudent1wheresage21orsage21结果:(7)查询所有学生的平均年龄selectavg(sage)as平均年龄fromStudent1结果:B.连接查询(1)学生的学号、姓名,所选课程的课程号、课程名和成绩、任课教师名Selectstudent1.sno,student1.sname,class.cno,class.cname,score.degree,teacher1.tnamefromstudent,class,score,teacher1Wherestudent1.sno=score.snoandclass.cno=score.cnoandteacher1.tno=class.tno结果:(2)找出教授数据库原理的老师的教师名selectteacher1.tnamefromclass,teacher1Whereclass.tno=teacher1.tnoandclass.cname='数据库原理'结果:C.操作结果集查询查询0811080102号同学和0811080103号同学共同选修的课程SelectcnoFromscoreWheresno='0811080102'IntersectSelectcnoFromscoreWheresno='0811080103'查询结果D.嵌套查询查询选修了0306这门课的所有学生的学号、姓名、年龄、院系Selectsno,sname,sage,departFromstudent1Wheresnoin(selectsnoFromscoreWherecno=’0306’)查询结果3、数据库更新操作A.插入数据向Student1表中添加一项记录:姓名:叶问,学号:0811080201,性别:男,年龄:36专业:信息管理,系别:工商InsertIntoStudent1(Sno,Sname,Ssex,sage,major,depart)Values('0811080201','叶问','男','36','信息管理','工商')B.修改数据修改陈琦的学号为081108023:UpdateStudent1SetSno=’0811080203’WhereSname=’陈琦’;C.删除数据删除所有工商学生的记录Deletefromstudent1Where(depart=’工商’);4、为数据库建立索引创建索引可以大大提高系统的性能。第一,通过创建唯一性索引,可以保证每一行数据的唯一性。第二,可以大大加快数据的检索速度,这也是所以的最主要原因。第三,可以加速表与表之间的连接,特别是实现数据的参考完整性方面特有意义。第四,在使用ORDERBY和GROUPBY子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。第五,通过使用索引,可以在查询过程中,使用优化隐藏器,提高系统性能。A.创建索引:(1)在class表的cno列上创建非聚集索引。CreateindexclassrnameONclass(cno)(2)在st