学生成绩管理系统数据库分析.docx
《学生成绩管理系统数据库分析.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统数据库分析.docx(20页珍藏版)》请在冰豆网上搜索。
学生成绩管理系统数据库分析
枣庄学院
信息科学与工程学院课程设计任务书
题目:
学生成绩管理系统
学号:
姓名:
专业:
网络工程
课程:
数据库
指导教师:
职称:
完成时间:
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)
Primarykey
cname
课程名
char(45)
Notnull
teano
教师号
char(10)
Notnull
credit
学分
char(4)
Notnull
ctime
学时
char(50)
Notnull
3.2学生信息表(student)
字段名
描述
数据类型
字段权限
sno
学号
char(10)
Primarykey
sname
姓名
char(10)
Notnull
ssex
性别
char(3)
Notnull
sage
年龄
char(3)
Notnull
major
专业
char(30)
Notnull
depart
系别
char(50)
Notnull
3.3教师表(teacher1)
字段名
属性
数据类型
字段权限
teano
教师号
char(10)
Primarykey
tname
教师名
char(10)
Notnull
Tsex
教师性别
char
(2)
Notnull
Tdepart
教室系别
char(50)
Notnull
3.4成绩表
字段名
属性
数据类型
字段权限
sno
学号
char(10)
Primarykey
cno
课程名
char(10)
Foreignkey
degree
成绩
char(3)
Notnull
四、物理设计阶段
数据库物理设计的任务是为上一阶段得到的数据库逻辑模式,即数据库的逻辑结构选择合适的应用环境的物理结构,既确定有效地实现逻辑结构模式的数据库存储模式,确定在物理设备上所采用的存储结构和存取方法,然后对该存储模式进行性能评价、修改设计,经过多次反复,最后得到一个性能较好的存储模式。
数据库物理设计内容包括记录存储结构的设计,存储路径的设计。
五、数据库实现
数据库实施是指建立数据库,编制与调试应用程序,组织数据入库,并进行试运行。
5.1创建数据库
(1)打开SQL工具“查询分析器”
(2)在查询窗口中键入下列SQL语句
createdatabaseScoreSystem
执行上述SQL语句即可新建一名为ScoreSystem的数据库
六、数据库运行和维护阶段
6.1数据定义
基本表创建、修改及删除;索引的创建和删除;视图的创建和删除
(1)创建数据表
一个完整的数据库不可缺少的就是数据表,若干个数据表的集合成一个数据库。
数据表主要用来存放一定格式的记录,数据表中的行被称为记录,列被称为字段。
创建数据表的过程其实就是定义字段的过程。
在此学生成绩管理系统中需要创建四个表,即课程信息表、学生信息表、教师信息表和成绩表。
创建数据库后,为ScoreSystem数据库添加数据表,步骤如下。
(1)新建查询窗口
(2)在查询窗口中键入下列SQL语句
课程信息相关表格
Cno
cname
tno
credit
ctime
301
PS照片处理
1
2
24
302
时事政治与申论
2
2
18
303
3DMAX
3
2
36
304
心理应用
4
2
32
305
西方电影欣赏
5
2
30
306
计算机文化基础
6
3
32
307
枣庄文化
7
3
30
308
中外文化十讲
8
3
45
309
形势与政策
9
3
35
createtableClass(//创建课程信息表
cnochar(10)primarykey,//课程号
cnamechar(45)notnull,//课程名
teanochar(10)Notnull//教师号
creditchar(4),Notnull//学分
ctimechar(50),Notnull//学时
)
执行上述SQL语句即可创建课程信息表相关表格
学生信息相关表格
Sno
sname
ssex
sage
major
depart
2012121201
陈琦
男
22
网络工程
信息科学与工程学院
2012121202
崔雪娇
女
23
网络工程
信息科学与工程学院
2012121203
董朝阳
男
22
网络工程
信息科学与工程学院
2012121204
杜鹃
女
22
网络工程
信息科学与工程学院
2012121205
方卉
女
20
网络工程
信息科学与工程学院
2012121206
王佩琪
女
20
网络工程
信息科学与工程学院
2012121207
李明泽
男
21
网络工程
信息科学与工程学院
2012121208
张佳
女
21
网络工程
信息科学与工程学院
2012121209
曹睿家
男
20
网络工程
信息科学与工程学院
2012121210
柳夕颜
女
21
网络工程
信息科学与工程学院
2012121211
周明轩
男
21
网络工程
信息科学与工程学院
2012121212
郭晨
男
21
网络工程
信息科学与工程学院
2012121213
王家琪
男
21
网络工程
信息科学与工程学院
2012121214
刘明
男
21
网络工程
信息科学与工程学院
2012121215
罗安臣
男
20
网络工程
信息科学与工程学院
2012121216
张露西
女
21
网络工程
信息科学与工程学院
2012121217
吴芷琪
女
21
网络工程
信息科学与工程学院
2012121218
毛亚茹
女
21
网络工程
信息科学与工程学院
2012121219
杨凤瑞
女
21
网络工程
信息科学与工程学院
2012121220
王思语
女
21
网络工程
信息科学与工程学院
createtablestudent(//创建学生信息表
snochar(10)primarykey,//学号
snamechar(10)notnull,//姓名
ssexchar(3)notnull,//性别
Sagechar(3)notnull,//年龄
Majorchar(30)notnull,//专业
Departchar(50)notnull,//系别
)
执行上述SQL语句即可创建学生信息表相关表格
教师信息表
tno
tname
tsex
tdpart
1
卢亚君
女
文学院
2
李昌明
男
美术学院
3
张富强
男
文学院
4
刘翠杰
女
心理学院
5
王庆石
男
文学院
6
黄立明
男
信息科学与工程学院
7
王纲
男
文学院
8
徐伟丽
女
文学院
9
刘书霞
女
文学院
createtableteacher1(//创建教师信息表
tnochar(10)primarykey,//教师号
tnamevarchar(10)notnull,//教师名
tsexchar
(2),//教师性别
tdepartvarchar(50)//教师系别
)
执行上述SQL语句即可创建教师信息表相关表格
成绩信息表
Sno
Cno
Degree
2012121201
303
90
2012121202
303
90
2012121203
305
86
2012121204
306
82
2012121205
304
84
2012121206
301
81
2012121207
306
93
2012121208
302
79
2012121209
304
85
2012121210
306
94
2012121211
308
74
2012121212
307
86
2012121213
309
99
2012121214
306
89
2012121215
305
88
2012121216
304
87
2012121217
303
86
2012121218
302
85
2012121219
301
84
2012121220
307
83
CREATETABLEscore
(//创建成绩表
snochar(19)notnullprimarykey,//学号
cnochar(10)constraintfk_cnoforeignkeyreferencesclass(cno),//课程号
degreechar(3)notnull//成绩
)
执行上述SQL语句即可创建成绩表相关表格
(2)基本表的删除
droptablestudents
6.2数据操作
数据库查询操作
6.2.1单表查询
(1)查询sno为2012121201学生的sname
selectsname
fromstudent1
wheresno='2012121203'
结果:
(2)查询ssex为’女’并且depart为’信息科学与工程学院’的sname
selectsname
fromstudent
wheressex='女'anddepart='信息科学与工程学院'
结果:
(3)查询所有学生的姓名、性别和年龄。
selectsname,ssex,sage
fromstudent
结果:
(4)查询学生信息表中年龄小于21和年龄大于21的学生的姓名和年龄
selectsname,sage
fromstudent
wheresage>21orsage<21
结果:
(5)查询表student中所有姓“王”数据
6.2.2连接查询
(1)学生的学号、姓名,所选课程的课程号、课程名和成绩、任课教师名
Selectstudent1.sno,student1.sname,o,ame,score.degree,teacher1.tname
fromstudent,class,score,teacher1
Wherestudent1.sno=score.snoando=oandteacher1.tno=class.teano
结果:
(2)找出教授数据库原理的老师的教师名
selectteacher1.tname
fromclass,teacher1
Whereclass.tno=teacher1.tnoandame='枣庄文化'
结果:
(3)操作结果集查询
查询0811080102号同学和0811080103号同学共同选修的课程
Selectcno
Fromscore
Wheresno='02'
Intersect
Selectcno
Fromscore
Wheresno='03'
查询结果
6.2.3嵌套查询
查询选修了306这门课的所有学生的学号、姓名、年龄、院系
Selectsno,sname,sage,depart
Fromstudent
Wheresnoin
(selectsno
Fromscore
Wherecno=’306’)
查询结果
6.3数据库更新操作
6.3.1.插入数据
向Student表中添加一项记录:
姓名:
王辰,学号:
2012121221,性别:
男,年龄:
21专业:
网络工程,系别:
信息科学与工程学院
InsertInto
student(Sno,Sname,Ssex,sage,major,depart)
Values('2012121221','王辰','男','21,'网络工程','信息科学与工程学院')
6.3.2修改数据
修改陈琦的学号为:
201131301
UpdateStudent
SetSno=’2013131301’
WhereSname=’陈琦’;
修改前
修改后
6.3.3.删除数据
删除董朝阳的学号为:
2012121203
Delete
fromstudent
Where(sno=2012121203)
修改前
修改后
6.4为数据库建立索引
创建索引可以大大提高系统的性能。
第一,通过创建唯一性索引,可以保证每一行数据的唯一性。
第二,可以大大加快数据的检索速度,这也是所以的最主要原因。
第三,可以加速表与表之间的连接,特别是实现数据的参考完整性方面特有意义。
第四,在使用ORDERBY和GROUPBY子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。
第五,通过使用索引,可以在查询过程中,使用优化隐藏器,提高系统性能。
6.4.1创建及修改索引
(1)在class表的cno列上创建非聚集索引。
CreateindexclassrnameONclass(cno)
(2)在student表的sno列上创建非聚集索引。
CreateuniqueindexstudentnoONStudent(sno)
(3)在Student表的sno列创建一个非聚集索引,要求索引键值按sno升序排列。
CreateindexstudentnoONstudent(snoASC)
6.4.2.删除索引
删除student表中的studentno索引。
Dropindexstudent.studentno
6.5触发器的操作
6.5.1创建及修改触发器
建一个名为UPDATE_sno的触发器
6.5.2删除触发器
触发器的删除
6.6视图的操作
数据库视图的定义(创建和删除)、查询和更新
6.6.1.创建视图
(1).创建视图scorecar3并查询所有学生选课的信息,包括学号、姓名、课程号、课程名、成绩
createviewscore3
as
selects.sno'学号',sname'学生名',o'课程号',cname'课程名',sc.degree'成绩'
fromstudents,classc,scoresc
wheres.sno=sc.snoando=o
go
查询结果
6.6.2.更新视图
修改信息:
将陈琦的名字改为陈琪琪
Updatescore3
set学生名='陈琪琪'
where学生名='陈琦’
修改前
修改后
6.6.3删除视图
删除视图:
删除前面的score3视图。
dropviewscore3
七、总结
本学生成绩查询系统主要参照课本,相对来说比较简单。
但是由于主要以课本为依据,所以整个设计做下来基本掌握了课本上数据库的基础操作。
设计过程中我也遇到了一些问题,再向其他同学请教的过程中我收获了很多。
(1)操作视图查询,编写代码时发现,一个表中的主键必须是另一个表的外键时才可以对另一个表进行引用。
(2)在设计表时应注意使用正确的字段类型。
(3)在建表语句中,如果这个表的主键是多个属性的组合主键,则必须作为表级完整性进行定义。