完整版学生成绩管理系统数据库.docx
《完整版学生成绩管理系统数据库.docx》由会员分享,可在线阅读,更多相关《完整版学生成绩管理系统数据库.docx(22页珍藏版)》请在冰点文库上搜索。
![完整版学生成绩管理系统数据库.docx](https://file1.bingdoc.com/fileroot1/2023-6/10/f0ec1051-ecd5-4544-82ad-0aefe25a138b/f0ec1051-ecd5-4544-82ad-0aefe25a138b1.gif)
完整版学生成绩管理系统数据库
学生成绩管理系统数据库
一、需求分析阶段
1.信息需求
高校学生的成绩管理工作量大、繁杂,人工处理非常困难。
学生成绩管理系统借助于计算机强大的处理能力,大大
减轻了管理人员的工作量,并提高了处理的准确性。
学生成绩管理系统的开发运用,实现了学生成绩管理的自动化,不仅
把广大教师从繁重的成绩管理工作中解脱出来、把学校从传统的成绩管理模式中解放出来,而且对学生成绩的判断和整
理更合理、更公正,同时也给教师提供了一个准确、清晰、轻松的成绩管理环境。
2.功能需求
能够进行数据库的数据定义、数据操纵、数据控制等处理功能,进行联机处理的相应时间要短。
具体功能应包括:
系统应该提供课程安排数据的插入、删除、更新、查询;成绩的添加、修改、删除、查询,学生及教职工基本信息查询的功能。
3.安全性与完整性要求
二、概念结构设计阶段
概念结构设计阶段是整个数据库设计的关键,它通过对用户需求进行综合、归纳与抽象,形成一个独立于具体DBMS
的概念模型。
设计教室管理数据库包括班级、教室、课程、教师四个关系。
E-R图如下
三、逻辑结构设计阶段
逻辑结构是独立于任何一种数据模型的信息结构。
逻辑结构的任务是把概念结构设计阶段
设计好的基本E-R图转化为宜选用的DBMS所支持的数据模型相符合的逻辑结构,并对其进行
优化。
E-R图向关系模型转化要解决的问题是如何将实体型和实体间的联系转化为关系模式,如何
确定这些关系模式的属性和码。
设计学生成绩管理数据库,包括课程、学生、教师、成绩四个关系,其关系模式中对每个实
体定义的属性如下:
课程信息表
Class:
(课程号,课程名,教师号,学分,学时)
学生信息表
Student1:
(学号,姓名,性别,年龄,专业,系别)
成绩表
Score:
(学号号,课程名,成绩)
教师表
Teacherl:
(教师号,教师名,教师性别,教师系别)
1、课程信息表(class)
字段名
描述
数据类型
字段限制
eno
课程号
char(10)
Primarykey
cname
课程名
char(10)
Notnull
teano
教师号
char(10)
Notnull
credit
学分
char(4)
Notnull
ctime
学时
char(50)
Notnull
2、学生信息表(studentl)
字段名
描述
数据类型
字段权限
sno
学号
char(10)
Primarykey
sname
姓名
char(10)
Notnull
ssex
性别
char
(2)
Notnull
sage
年龄
char
(2)
Notnull
major
专业
char(10)
Notnull
depart
系别
char(10)
Notnull
3.教师表(teacherl)
字段名
属性
数据类型
字段权限
teano
教师号
char(10)
Primarykey
tname
教师名
char(10)
Notnull
Tsex
教师性别
char
(2)
Notnull
Tdepart
教室系别
char(10)
Notnull
4.成绩表
字段名
属性
数据类型
字段权限
sno
学号
char(10)
Primarykey
cno
课程名
char(10)
Notnull
degree
成绩
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(
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语句即可创建成绩表相关表格
学生信息相关表格
Sno
sname
ssex
sage
major
depart
陈琦
男
22
信息
工商
崔雪娇
女
23
信息
工商
董朝阳
男
22
数学教育
数学系
杜鹃
女
22
计算机应用
计算机系
方卉
女
20
汉语言
文法系
课程信息相关表格
Cno
cname
tno
credit
ctime
0301
财务管理
001
2
24
0302
供应链管理
002
2.2
18
0303
生产与运作管理
003
2.4
36
0304
统计学
004
2.6
32
0305
网页制作
005
2.8
30
0306
操作系统原理
006
3.0
32
0307
数据库原理
007
3.2
30
0308
项目管理
008
3.4
45
0309
web程序设计
009
3.5
35
成绩信息表
Sno
Cno
Degree
0306
85
0303
90
0305
86
0306
82
0304
84
0301
81
0306
93
0302
79
0304
85
0306
94
0308
74
0307
86
教师信息表
tno
tname
tsex
tdepart
001
卢亚君
女
财经
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)基本表的删除
droptablestudents
2、数据操作
数据库查询操作
A.单表查询:
(1)查询sno为学生的sname
selectsname
fromstudent1
wheresno=''
selectsname
sname
fromstudent1
wheressex='女'andsdepart='工商'
结果:
□结果消扈
甜arne
■oiainiainaaaamiiaiaiiui
1j崔雪娇!
(3)查询所有学生的姓名和系别
selectsname,depart
fromstudent1
结果:
sname
depart
1
i陈琦$
丄同
2
崔雪娇
丄冏
3
董朝阳
数学系
4
社鹃
计算机系
5
方卉
文法系
(4)查询depart为数学系的snameselectsname
fromstudentl
wheredepart='数学系
结果:
sname
1
【董朝阳|
J结果J消息
(5)查询所有学生所在院系名称
selectdistinctdepart
fromstudent
结果:
J结果匕消息
depart
1
辽商!
2计直机系
3数学系
4文法系
(6)查询学生信息表中年龄小于21和年龄大于21的学生的姓名和系别
selectsname,depart
fromstudent1
wheresage>21orsage<21
结果:
H结果消息
sname
depart
J_
障琦1
:
丄同
2
崔雪娇
Lra
3
董朝阳
数学丢
4
杜鹃
计算机系
5
方卉
文法系
(7)查询所有学生的平均年龄
selectavg(sage)as平均年龄
fromStudent1
结果:
J结果
平均年龄
1[21
'e~sT
2
B.连接查询
(1)学生的学号、姓名,所选课程的课程号、课程名和成绩、任课教师名
,teacher1.tname
Selectstudent1.sno,student1.sname,o,ame,score.degree
fromstudent,class,score,teacher1
Wherestudent1.sno=score.snoando=oandteacher1.tno=class.tno
结果:
sno
sname
cno
cname
degree
tname
1
|0811080101
i陈琦
0306
操作系统原理
85
董立明
2
0811080101
陈琦
0303
生产与运作管理
90
张富强
3
0811080101
陈埼
0305
网页制作
8E
王庆石
4
0811080102
崔雪娇
030E
操作系统原理
82
5
0311030102
崔雪娇
0304
统计学
34
刘翠杰
6
0811080102
崔雪娇
0301
财雰管琛
31
卢亚君
7
0811080103
董朝阳
030G
操作系圻原理
93
萤立明
3
0811080103
董朝阳
0302
供应琏首理
79
李昌明
9
08110801D3
董朝阳
0304
蜒计学
35
10
0811080104
社鹃
030E
操作系颌原理
94
萤立明
11
0811080104
社鹃
030G
项目管理
74
徐伟丽
12
0811080104
社鹃
0307
幣据库原理
旺
王纲
(2)找出教授数据库原理的老师的教师名
selectteacher1.tname
fromclass,teacher1
Whereclass.tno=teacher1.tnoandclass.cname='数据库原理
结果:
□结果j消息
tname
yinI-・*r・
1:
王舸」
c.操作结果集查询
查询号同学和号同学共同选修的课程
Selectcno
Fromscore
Wheresno=''
Intersect
Selectcno
Fromscore
Wheresno=''
查询结果
D.嵌套查询
查询选修了0306这门课的所有学生的学号、姓名、年龄、院系
Selectsno,sname,sage,depart
Fromstudentl
Wheresnoin
(selectsno
Fromscore
Wherecno='0306')
查询结果
J结果J消息
sno
Mge
1
|0611090101|陈衙
22
工商
2
0811000102崔雪娇
23
工商
3
0811000103董朝阳
22
数学系
4
0611080104杜鹃
22
计算机系
3、数据库更新操作
A.插入数据
向Student1表中添加一项记录:
姓名:
叶问,学号:
,性别:
男,年龄:
36专业:
信息管理,系别:
工商
Insert
Into
Student1(Sno,Sname,Ssex,sage,major,depart)
Values('','叶问’,'男’,’36','信息管理’,'工商')
汕口
sname
S5BX
sage
major
depart
0811080101
陈琦
男
22
信息
工商
0611000102
崔雪娇
女
23
信息
工商
0811033103
董朝阳
男
22
数学教育
数学系
0811030104
杜鹃
女
22
计算机应用
计算机系
1030105
方卉
20
汶语言
0811030201
叶问
男
36
信息管理
工商
B.修改数据
修改陈琦的学号为:
UpdateStudent1
SetSno='
WhereSname=陈琦';
0811060203
陈琦
男
0611060102
崔雪娇
女
0811080103
董朝阳
男
C.删除数据
删除所有工商学生的记录
Delete
fromstudent1
Where(depart='工商');
sno
snaine
major
□epari:
1061100010310®
董朝阳
男
22
数学数育
数学系
0811080104
杜鹃
女
22
计算机应用
计宜机系
0611080105
方卉
2Q
浜语言
文法系
f^ULL
f^ULL
ML
MJLL
JVUL1
Ml
4、为数据库建立索引
仓健索引可以大大提高系统的性能。
第一,通过创建唯一性索弓I,可以保证每一行数据的唯一性。
第二,可以大
大加快数据的检索速度,这也是所以的最主要原因。
第三,可以加速表与表之间的连接,特别是实现数据的参考完整性方面特有意义。
第四,在使用ORDERBY和GROUPBY子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。
第五,通过使用索引,可以在查询过程中,使用优化隐藏器,提高系统性能。
A.创建索引:
(1)在class表的eno列上创建非聚集索引。
CreateindexclassrnameONclass(eno)
⑵在studentl表的sno列上创建非聚集索引。
CreateuniqueindexstudentlnoONStudentl(sno)
⑶在Studentl表的sno列创建一个非聚集索引,要求索引键值按sno升序排列。
CreateindexstudentlnoONstudent1(snoASC)
B.删除索引:
(1)删除studentl表中的studentlno索引。
Dropindexstudentlno
5、视图的操作:
数据库视图的定义(创建和删除)、查询和更新
A.查询所有学生选课的信息,包括学号、姓名、课程号、课程名、成绩
createviewscore3
as
selects.sno'学号',sname'学生名',c.eno'课程号',cname'课程名',sc.degree'成绩'
fromstudentls,classc,scoresc
wheres.sno=sc.snoandc.eno=sc.eno
go
查询结果
视图—dbo.score?
20100824-12...LQueryl,sql*
学号
学生名
燥程号
课程名
威绩
►
|D31ia:
30101BBI
陈琦
0306
操作系纺原理
85
□6110S0101
陈琦
0303
生产与运件首理
90
0811080101
陈琦
0305
阿页制作
86
oe11060102
0306
操作系蟒原理
B2
O&l1060102
崔雪娇
□304
统计学
8斗
0611060102
0301
财务皆瑾
81
0811080103
董朝阳
0306
操作系统原理
93
0611080103
0302
供应螢昔理
79
0811080103
董朝阳
0304
统计学
85
0B11060104
杜鹃
□3%
捉作系銃原理
94
□811080104
杜鹃
0303
项目晉理
74
□811080104
杜鹃
□307
数据库原理
86
*
AJUL£
MJL£
MJLL
NULL
B.更新视图:
(1)修改信息:
将陈琦的名字改为陈琪琪
Updatescore3
set学生名='陈琪琪'
where学生名='陈琦
课程号
课程名
陈琪隕
0306
操作系统I
0811080101
陈琪琪
0303
生产与运1
0611080101
0305
网页制作
O0UOBO1O2
崔雪娇
0306
操作系统I
0811080102
崔雪娇
0304
统计学
⑵删除信息:
删除视图score3中陈琪琪的记录
deletefromscore
where学生名='陈琪琪'
删除视图:
删除前面的score3视图。
dropviewscore3
6、数据库的安全性
创建SQLServer身份验证的登录账户陈琦、崔雪娇、董朝阳、杜鹃
EXECsp_addlogin‘
陈琦’,'000','AAA'
EXECsp_addlogin‘
崔雪娇','000','AAA'
EXECsp_addlogin‘
董朝阳',000','AAA'
EXECsp_addlogin‘
创建数据库用户
杜鹃','000','AAA'
EXECsp_adduser‘
陈琦’
EXECsp_adduser'
崔雪娇’
EXECsp_adduser'
董朝阳’
EXECsp_adduser'
杜鹃','杜鹃','managers'
建立数据库角色
EXECsp_addrole‘managers'
删除SQLServer身份验证的登录账户'杜鹃
EXECsp_droplogin
杜鹃’
从当前数据库中删除用户’杜鹃'
EXECsp_dropuser
杜鹃’
授权操作
(1)把对表student
grantinsert
的insert权限授予用户董朝阳,并允许他再将此权限授予其他用户。
ontableGoods
to董朝阳
withgrantoption
(2)把查询表Goods和修改nowprice属性的权限授给用户陈琦。
grantselect,update(nowprice)
ontableGoods
to陈琦
3)把用户陈琦查询表Goods权限收回
revokeselect
ontableGoods
from陈琦cascade
7、数据库的完整性
对于class表:
class(cno,cname,tno,credit,ctime)eno的值应该在0和20之间:
createtableClass(//创建课程信息表
cnochar(10)primarykey,
//课程号
cnamechar(10)notnull,
//课程名
teanochar(10)Notnull
//教师号
creditchar(4),Notnull
//学分
ctimechar(50),Notnull
//学时
check(cno>0andcno<=20)
)
七、总结本学生成绩查询系统主要参照课本,相对来说比较简单。
但是由于主要以课本为依据,所以整个设计做下来基本掌握了课本上数据库的基础操作。
设计过程中我也遇到了一些问题,再向其