数据库课程设计报告.docx
- 文档编号:25213030
- 上传时间:2023-06-06
- 格式:DOCX
- 页数:31
- 大小:441.20KB
数据库课程设计报告.docx
《数据库课程设计报告.docx》由会员分享,可在线阅读,更多相关《数据库课程设计报告.docx(31页珍藏版)》请在冰豆网上搜索。
数据库课程设计报告
数据库课程设计
实验报告
学生成绩管理系统
姓名:
学号:
班级:
专业:
信息管理与信息系统
2011年11月09日
一、需求分析阶段
1.信息需求
高校学生的成绩管理工作量大、繁杂,人工处理非常困难。
学生成绩管理系统借助于计算机强大的处理能力,大大减轻了管理人员的工作量,并提高了处理的准确性。
学生成绩管理系统的开发运用,实现了学生成绩管理的自动化,不仅把广大教师从繁重的成绩管理工作中解脱出来、把学校从传统的成绩管理模式中解放出来,而且对学生成绩的判断和整理更合理、更公正,同时也给教师提供了一个准确、清晰、轻松的成绩管理环境。
2.功能需求
能够进行数据库的数据定义、数据操纵、数据控制等处理功能,进行联机处理的相应时间要短。
具体功能应包括:
系统应该提供课程安排数据的插入、删除、更新、查询;成绩的添加、修改、删除、查询,学生及教职工基本信息查询的功能。
二、概念结构设计阶段
概念结构设计阶段是整个数据库设计的关键,它通过对用户需求进行综合、归纳与抽象,形成一个独立于具体DBMS的概念模型。
设计教室管理数据库包括学生、课程、教师三个关系。
经分析本系统的E-R图如下:
各实体间的E-R图如下:
关系图:
三、逻辑结构设计阶段
逻辑结构是独立于任何一种数据模型的信息结构。
逻辑结构的任务是把概念结构设计阶段设计好的基本E-R图转化为宜选用的DBMS所支持的数据模型相符合的逻辑结构,并对其进行优化。
E-R图向关系模型转化要解决的问题是如何将实体型和实体间的联系转化为关系模式,如何确定这些关系模式的属性和码。
设计学生成绩管理数据库,包括课程、学生、教师、成绩四个关系,其关系模式中对每个实体定义的属性如下:
课程信息表
Class:
(课程号,课程名,教师号,学分,学时)
学生信息表
Student1:
(学号,姓名,性别,年龄,专业,系别)
成绩表
Score:
(学号号,课程名,成绩)
教师表
Teacher1:
(教师号,教师名,教师年龄,教师性别,教师系别)
1、课程信息表(class)
字段名
描述
数据类型
字段限制
cno
课程号
char(10)
Primarykey
cname
课程名
char(10)
Notnull
tno
教师号
char(10)
Notnull
credit
学分
char(4)
Notnull
ctime
学时
char(50)
Notnull
2、学生信息表(student)
字段名
描述
数据类型
字段权限
sno
学号
char(10)
Primarykey
sname
姓名
char(10)
Notnull
ssex
性别
char
(2)
Notnull
sage
年龄
Int
Notnull
major
专业
char(10)
Notnull
sdept
系别
char(10)
Notnull
3.教师表(teacher)
字段名
属性
数据类型
字段权限
tno
教师号
char(10)
Primarykey
tname
教师名
char(10)
Notnull
tsex
教师性别
char
(2)
Notnull
tage
教师年龄
Int
Notnull
tdept
教室系别
char(10)
Notnull
4.成绩表(score)
字段名
属性
数据类型
字段权限
sno
学号
char(10)
Primarykey
cno
课程名
char(10)
Notnull
grade
成绩
Int
Notnull
四、物理设计阶段
数据库物理设计的任务是为上一阶段得到的数据库逻辑模式,即数据库的逻辑结构选择合适的应用环境的物理结构,既确定有效地实现逻辑结构模式的数据库存储模式,确定在物理设备上所采用的存储结构和存取方法,然后对该存储模式进行性能评价、修改设计,经过多次反复,最后得到一个性能较好的存储模式。
数据库物理设计内容包括记录存储结构的设计,存储路径的设计。
五、数据库实现
数据库实施是指建立数据库,编制与调试应用程序,组织数据入库,并进行试运行。
1、创建数据库
(1)打开SQL工具“查询分析器”
(2)在查询窗口中键入下列SQL语句
CreatedatabaseScoreSystem
执行上述SQL语句即可新建一名为ScoreSystem的数据库
2、创建数据表
一个完整的数据库不可缺少的就是数据表,若干个数据表的集合成一个数据库。
数据表主要用来存放一定格式的记录,数据表中的行被称为记录,列被称为字段。
创建数据表的过程其实就是定义字段的过程。
在此学生成绩管理系统中需要创建四个表,即课程信息表、学生信息表、教师信息表和成绩表。
创建数据库后,为ScoreSystem数据库添加数据表,步骤如下。
(1)新建查询窗口
(2)a.在查询窗口中键入下列SQL语句
CreatetableClass(//创建课程信息表
cnochar(10),//课程号
cnamechar(10)Notnull,//课程名
tnochar(10)Notnull,//教师号
creditchar(4)Notnull,//学分
ctimechar(50)Notnull//学时
)
执行上述SQL语句即可
b.创建课程信息表相关表格执行下述SQL语句即可创建学生信息表相关表格
createtablestudent(//
snochar(10)primarykey,//学号
snamechar(10)notnull,//姓名
ssexchar
(2)notnull,//性别
Sageintnotnull,//年龄
Majorchar(10)notnull,//专业
Sdeptchar(10)notnull//系别
)
c.执行下述SQL语句即可创建教师信息表相关表格
createtableteacher(//创建教师信息表
tnochar(10)primarykey,//教师号
tnamechar(10)notnull,//教师名
tageint,//教师年龄
tsexchar
(2),//教师性别
tdeptchar(10)//教师系别
)
d.执行下述SQL语句即可创建成绩表相关表格
createtablescore(//创建成绩表
snochar(10),//学号
cnochar(10)//课程号
)
学生信息相关表格
sno
sname
ssex
sage
major
sdept
1021030301
李娜
女
18
商务英语
外国语
1021030302
林俊杰
男
19
信息管理
理学院
1021030303
周杰
男
18
计算机
软件
1021030304
孙颖
女
20
数学
理学院
1021030305
齐婷
女
19
影视
艺术学院
1021030306
张恒
男
20
经济管理
工商
课程信息相关表格
cno
cname
tno
credit
ctime
1001
线性代数
004
3.5
45
1002
C语言
007
3.1
32
1003
程序设计
002
3.3
48
1004
大学语文
006
2.5
31
1005
商务英语
005
4
60
1006
大学体育
009
2
20
1007
中国影视
008
2.5
30
1008
高等数学
003
4
60
1009
数据库原理
001
3
50
成绩信息表
Sno
cno
grade
1021030301
1006
85
1021030301
1003
90
1021030301
1005
86
1021030302
1006
82
1021030302
1004
84
1021030302
1001
81
1021030303
1006
93
1021030303
1002
79
1021030303
1004
85
1021030304
1006
94
1021030304
1008
74
1021030304
1007
86
1021030305
1002
94
1021030305
1006
78
1021030305
1008
83
教师信息表
tno
tname
tage
tsex
tdept
001
肖俊芳
35
男
理学院
002
黄国辉
41
男
软件
003
何杰
35
男
理学院
004
李水平
31
男
理学院
005
廖丽丽
29
女
外国语
006
秦磊毅
49
男
理学院
007
吴志强
32
男
软件
008
张微微
25
女
影视
009
谢俊
29
男
工商
添加记录:
学生信息表:
Insert
intostudent
values('1021030301','李娜','女',18,'商务英语','外国语')
Insert
intostudent
values('1021030302','林俊杰','男',19,'信息管理','理学院')
Insert
intostudent
values('1021030303','周杰','男',18,'计算机','软件')
Insert
intostudent
values('1021030304','孙颖','女',20,'数学','理学院')
Insert
intostudent
values('1021030305','齐婷','女',20','影视','艺术学院')
Insert
intostudent
values('1021030306','张恒','男',20,'经济管理','工商')
课程信息表:
Insert
intoclass
values('1001','线性代数','004','3.5','45')
Insert
intoclass
values('1002','C语言','007','3.1','32')
Insert
intoclass
values('1003','程序设计','002','3.3','48')
Insert
intoclass
values('1004','大学语文','006','2.5','31')
Insert
intoclass
values('1005','商务英语','005','4','60')
Insert
intoclass
values('1006','大学体育','009','2','20')
Insert
intoclass
values('1007','中国影视','008','2.5','30')
Insert
intoclass
values('1008','高等数学','003','4','60')
Insert
intoclass
values('1009','数据库原理','001','3','50')
成绩信息表:
Insert
intoscore
values('1021030301','1006',85)
Insert
intoscore
values('1021030301','1003',90)
Insert
intoscore
values('1021030301','1005',86)
Insert
intoscore
values('1021030302','1006',82)
Insert
intoscore
values('1021030302','1004',84)
Insert
intoscore
values('1021030302','1001',81)
Insert
intoscore
values('1021030303','1006',93)
Insert
intoscore
values('1021030303','1002',79)
Insert
intoscore
values('1021030303','1004',85)
Insert
intoscore
values('1021030304','1006',94)
Insert
intoscore
values('1021030304','1008',74)
Insert
intoscore
values('1021030304','1007',86)
Insert
intoscore
values('1021030305','1002',94)
Insert
intoscore
values('1021030305','1006',78)
Insert
intoscore
values('1021030305','1008',83)
老师信息表:
Insert
intoteacher
values('001','肖俊芳',35,'男','理学院')
Insert
intoteacher
values('002','黄国辉',41,'男','软件')
Insert
intoteacher
values('003','何杰',35,'男','理学院')
Insert
intoteacher
values('004','李水平',31,'男','理学院')
Insert
intoteacher
values('005','廖丽丽',29,'女','外国语')
Insert
intoteacher
values('006','秦磊毅',49,'男','理学院')
Insert
intoteacher
values('007','吴志强',32,'男','软件')
Insert
intoteacher
values('008','张薇薇',25,'女','影视')
Insert
intoteacher
values('009','谢俊',29,'男','工商')
六、数据库运行和维护阶段
1、数据定义:
基本表的创建、修改及删除;索引的创建和删除;视图的创建和删除
(1)基本表的创建,建表语句
createtablestudents(
snochar(10)primarykey,
snamechar(10)notnull,
ssexchar
(2)notnull,
sagechar(10)notnull,
majorchar(10)notnull,
sdeptchar(10)notnull
)
(2)基本表的删除
droptablestudent
2、数据操作
数据库查询操作
A.单表查询:
(1)查询sno为1021030303学生的sname,sage,major,sdept,ssex
selectsname,sage,major,sdept,ssex
fromstudent
wheresno='1021030303'
(2)查询ssex为’女’并且sdept为’艺术学院’的sname,sage
Selectsname,sage
Fromstudent
Wheressex=’女’andsdept=’艺术学院’
(3)查询所有学生的姓名和系别。
selectsname,sdept
fromstudent
(4)查询学生信息表中年龄小于20和年龄大于17的学生的姓名和系别
selectsname,sdept
fromstudent
wheresagebetween19and20
(3)查询所有学生的平均年龄
selectavg(sage)as平均年龄
fromStudent
(5)查询所有学生所选课程的平均分:
selectavg(sage)as平均分,student.snameas姓名,student.snoas学号
fromStudent,score,class
wherestudent.sno=class.snoando=o
B.连接查询
(1)学生的学号、姓名,所选课程的课程号、课程名和成绩、任课教师名
Selectstudent.sno,student.sname,o,ame,score.grade,teacher.tname
Fromstudent,class,score,teacher
Wherestudent.sno=score.snoando=oandteacher.tno=class.tno
(2)找出教授数据库原理的老师的教师名
selectteacher1.tname
fromclass,teacher1
Whereclass.tno=teacher1.tnoandame='数据库原理'
C.嵌套查询
查询选修了1006这门课的所有学生的学号、姓名、年龄、院系
Selectsno,sname,sage,sdept
Fromstudent
Wheresnoin
(selectsno
Fromscore
Wherecno='1006')
D.嵌套查询
查询选修了1006这门课的所有学生的学号、姓名、年龄、院系
Selectsno,sname,sage,depart
Fromstudent1
Wheresnoin
(selectsno
Fromscore
Wherecno=’1006’)
3、数据库更新操作
A.插入数据
向Student1表中添加一项记录:
姓名:
景甜,学号:
1021030201,性别:
女,年龄:
20专业:
外交英语,系别:
外国语
B.修改数据
修改林俊杰的学号为1021030307:
UpdateStudent
SetSno='1021030307'
WhereSname='林俊杰';
C.删除数据
删除所有理学院学生的记录
Delete
fromstudent
Wheresdept=’理学院’
4、为数据库建立索引
创建索引可以大大提高系统的性能。
第一,通过创建唯一性索引,可以保证每一行数据的唯一性。
第二,可以大大加快数据的检索速度,这也是所以的最主要原因。
第三,可以加速表与表之间的连接,特别是实现数据的参考完整性方面特有意义。
第四,在使用ORDERBY和GROUPBY子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。
第五,通过使用索引,可以在查询过程中,使用优化隐藏器,提高系统性能。
A.创建索引:
(1)在class表的cno列上创建非聚集索引。
CreateindexclassrnameONclass(cno)
(2)在student1表的sno列上创建非聚集索引。
Createuniqueindex学号_snoONStudent(sno)
(3)在Student1表的sno列创建一个非聚集索引,要求索引键值按sno升序排列。
Createindex学号ONstudent(snoASC)
B.删除索引:
(1)删除student表中的studentno索引。
Dropindexstudent.学号_sno
5、视图的操作:
数据库视图的定义(创建和删除)、查询和更新
A.查询所有学生成绩的信息,包括学号、课程号、成绩
createviewscore4
as
selectstudent.sno'学号',sname'学生名',o'课程号',cname'课程名',score.grade'成绩'
fromstudent,class,score
wherestudent.sno=score.snoando=o
B.更新视图:
(1)修改信息:
将周杰的名字改为周杰伦
Updatescore4
set学生名='周杰伦'
where学生名='周杰’
(2)删除信息:
删除视图score4中周杰伦的记录
delete
fromscore4
where学生名='周杰伦'
删除视图:
删除前面的score4视图
dropviewscore4
5.存储过程
①创建存储过程
createprocproc_ST
as
selectsno,sname,sage
fromstudent
wheressex='女';
②存储过程的查询
execproc_ST;
③存储过程的修改
alterprocproc_ST
as
selectsno,sname,ssex
fromstudent
wheresdept='外国语'
七、总结
本学生成绩查询系统主要参照课本,相对来说比较简单。
但是由于主要以课本为依据,所以整个设计做下来基本掌握了课本上数据库的基础操作。
设计过程中我也遇到了一些问题,再向其他同学请教的过程中我收获了很多。
(1)操作视图查询,编写代码时发现,一个表中的主键必须是另一个表的外键时才可以对另一个表进行引用。
(2)在设计表时应注意使用正确的字段类型。
(3)在建表语句中,如果这个表的主键是多个属性的组合主键,则必须作为表级完整性进行定义。
课程设计评分表
学生姓名:
班级:
学号:
项目内容
满分
实评
选
题
能结合所学课程知识、有一定的能力训练。
符合选题要求
(5人一题)
10
工作量适中,难易度合理
10
能
力
水
平
能熟练应用所学知识,有一定查阅文献及运用文献资料能力
10
理论依据充分,数据准确,公式推导正确
10
能应用计算机软件进行编程、资料搜集录入、加工、排版、制图等
10
能体现创造性
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 课程设计 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)