《数据库原理与应用》综合性实验报告学生成绩管理系统数据库设计方案.docx
《《数据库原理与应用》综合性实验报告学生成绩管理系统数据库设计方案.docx》由会员分享,可在线阅读,更多相关《《数据库原理与应用》综合性实验报告学生成绩管理系统数据库设计方案.docx(29页珍藏版)》请在冰豆网上搜索。
《数据库原理与应用》综合性实验报告学生成绩管理系统数据库设计方案
《数据库原理与应用》综合性实验报告
学生成绩管理系统数据库设计方案
学号:
201130560210
姓名:
柯俊展
目录
一、系统开发目标2
二、数据库需求分析2
三、数据流图2
数据流图:
2
四、数据库设计3
E—R图:
3
数据字典:
3
五、逻辑结构设计4
关系模式:
4
六、数据库实施5
创建表:
5
权限设置:
10
创建触发器:
13
教师输入并查询数据:
13
创建函数:
14
插入数据到score:
15
学生登陆查询信息:
16
教务员登陆查询信息:
16
成绩分析:
17
总结:
18
附录:
19
参考文献:
27
一、系统开发目标
建立一个学生成绩管理数据库系统,用于数据的输入、修改和查询,满足任课教师、学生、教务员等用户的需求。
二、数据库需求分析
明确系统的用户,收集和分析用户对系统的信息需求和处理需求:
1.任课教师可以对所讲授课程进行成绩输入、修改和查看。
2.学生可以按学号查询自己各门功课的成绩、总成绩、平均分、在班级中的排名等。
3.教务员可以查询全体学生的成绩、对学生成绩进行排名等。
问题假设:
4.此问题中只有一个班,四位同学,三位教师授课(即三门课,分别是英语、高等数学、数据库应用),一位教务员。
5.查看平台是ORACLESQL/Plus平台。
三、数据流图
数据流图:
教师更新查询处理:
成绩信息表
查询要求
查询统计信息
课程信息表
教师
教师信息表
学生查询处理:
学生信息表
学生
查询要求
成绩视图
四、数据库设计
根据以上信息,得出实体——联系图
E—R图:
m
p
1
n
教师
课程
学生
数据字典:
(1)数据项描述
数据项名称:
学生依据号码查询成绩
别名:
学号
含义:
唯一标识一个学生身份
类型:
字符型
长度:
20
(2)数据结构描述
名称:
学生
含义说明:
定义一个学生有关信息
组成结构:
学号+姓名
名称:
教师
含义说明:
定义一个教师有关信息
组成结构:
教师号+教师名
名称:
课程
含义说明:
定义一个课程有关信息
组成结构:
课程号+课程名
名称:
成绩
含义说明:
定义一个学生成绩有关信息
组成结构:
学号+课程号+分数
(3)数据流(非数据项)说明
数据流名称:
输入成绩
含义:
教师给学生输入成绩
来源:
教师
组成:
学号+课程号+分数
(4)数据存储说明
数据存储名称:
学生信息表
含义说明:
存放学生有关信息
组成结构:
学号+学生名字
数据存储名称:
教师信息表
含义说明:
存放教师有关信息
组成结构:
教师号+教师名
数据存储名称:
课程信息表
含义说明:
存放课程有关信息
组成结构:
课程号+课程名
数据存储名称:
成绩信息表
含义说明:
存放学生成绩有关信息
组成结构:
学号+课程号+分数
(5)处理过程说明
处理过程名称:
审核教师号,课程号
输入:
教师号,课程号
输出:
认定合理的学生成绩
处理过程名称:
学号
输入:
学号
输出:
认定教师给学生成绩
以上只给出学生成绩查询系统数据字典部分数据项、数据结构、数据流、数据存储和处理过程的描述。
五、逻辑结构设计
关系模式:
学生(学号,学生姓名)
课程(课程号,课程名)
教师(教师号,教师名)
教授(学号,教师号)
成绩(学号,课程号,分数)
根据分析,此上的关系模式符合第三范式(3NF),不包含部分函数依赖和传递函数依赖。
是可行的学生成绩查询系统。
六、数据库实施
创建表:
第一个student表:
第二个project表:
第三个grade表:
第四个teacher表:
第五个teaching表:
第六个score表:
权限设置:
以上是创建角色teacher_role,student_role分别授予用户teacher_user1,teacher_user2,eacher_user3,student_user;创建headteacher_user授予管理员权限。
这样便于管理。
不足之处:
不能授予用户teacher_user1,teacher_user2,teacher_user3只能更新行的权限。
创建触发器:
教师输入并查询数据:
教师一更新数据:
教师二更新数据:
教师三更新数据:
教师更新数据如下:
创建函数:
创建getsunscore函数:
创建getaveragescore函数:
插入数据到score:
学生登陆查询信息:
教务员登陆查询信息:
成绩分析:
总结:
实验并不简单,但我真的能学习了很多东西。
以上全部由我参考《数据库系统原理与应用——Oracle版》这本书所做的。
花了三天时间,学到了很多东西,值了。
虽是考试前所做的,但实际在考试的时候由于紧张又忘记得一干二净,很伤心很伤心。
附录:
权限设置:
setserveroutputon
教师角色:
createroleteacher_role;
grantupdate(tograde)ongradetoteacher_role;
grantselectongradetoteacher_role;
学生角色:
createrolestudent_role;
grantselectonscoretostudent_role;
教务员:
createuserheadteacher
identifiedbyhead
defaulttablespaceusers
temporarytablespacetemp
quotaunlimitedonusers;
grantDBAtoheadteacher;
教师用户:
createuserteacher_user1
identifiedbytea1
defaulttablespaceusers
temporarytablespacetemp
quotaunlimitedonusers;
grantupdate(tograde)ongradewhere(projectid='20122')toteacher_user1;
grantupdate(tograde)ongrade.projectid='20121'toteacher_user1;
grantteacher_roletoteacher_user1;
createuserteacher_user2
identifiedbytea2
defaulttablespaceusers
temporarytablespacetemp
quotaunlimitedonusers;
grantteacher_roletoteacher_user2;
grantupdate(tograde)ongradetoteacher_user2whereprojectid='20122';
grantteacher_roletoteacher_user2;
createuserteacher_user3
identifiedbytea3
defaulttablespaceusers
temporarytablespacetemp
quotaunlimitedonusers;
grantteacher_roletoteacher_user3;
grantupdate(tograde)ongradetoteacher_user3whereprojectid='20123';
grantteacher_roletoteacher_user3;
学生用户:
createuserstudent_user
identifiedbystud
defaulttablespaceusers
temporarytablespacetemp
quotaunlimitedonusers;
grantstudent_roletostudent_user;
grantcreatesessiontostudent_user,teacher_user1,
输入:
connectteacher_user1/tea1;
connectteacher_user2/tea2;
connectteacher_user3/tea3;
updatesystem.gradesettograde='85'wherestudentid='201130560211'and
projectid='20121';
updatesystem.gradesettograde='89'wherestudentid='201130560212'and
projectid='20121';
updatesystem.gradesettograde='98'wherestudentid='201130560213'and
projectid='20121';
updatesystem.gradesettograde='79'wherestudentid='201130560214'and
projectid='20121';
updatesystem.gradesettograde='84'wherestudentid='201130560211'and
projectid='20122';
updatesystem.gradesettograde='88'wherestudentid='201130560212'and
projectid='20122';
updatesystem.gradesettograde='75'wherestudentid='201130560213'and
projectid='20122';
updatesystem.gradesettograde='94'wherestudentid='201130560214'and
projectid='20122';
updatesystem.gradesettograde='87'wherestudentid='201130560211'and
projectid='20123';
updatesystem.gradesettograde='92'wherestudentid='201130560212'and
projectid='20123';
updatesystem.gradesettograde='93'wherestudentid='201130560213'and
projectid='20123';
updatesystem.gradesettograde='90'wherestudentid='201130560214'and
projectid='20123';
sel