资源描述
数据库原理课程设计报告
设计题目 学生成绩管理系统
专业班级
学 号
学生姓名
指导教师
同组人
起止日期 2011年1月 10日至1月 20日
信息工程系
目录
1。问题描述2
1。1背景2
1.2功能要求2
2。需求分析3
2.1数据流程图3
2.2数据字典。。。.。.。。...。。...。.。。。。。4
3.概念结构设计5
3。1 E-R图5
4。逻辑结构设计6
5.物理结构设计7
6。角色与触发器设计9
7.数据库的实施和维护11
8。结束语13
8.答辩与成绩考核14
10
1。问题描述
1。1背景
在如今的高校日常管理当中,学生成绩管理系统就是其中非常重要的一环,特别是当前学生规模大,课程门类多,校区分散等实际情况,学生成绩管理系统更具有非常大的实际应用意义。但是,我们看到,其实我们学校的学生成绩管理系统在很多方面作的不是很完善,功能方面也有欠缺.随着科技的发展,基本上所有的具有一定数量数据的机构都开始使用计算机数据库来做管理.几乎所有学校也都已经在使用计算机管理数据的机制,大大减少了学校学生成绩管理的工作量.该课程设计要求设计一个学生成绩的数据库管理系统,数据库中要求包含学生的基本信息,学科基本信息,以及学生所学课程的考试成绩.要方便学生进行成绩查询,通过该课程设计,应该达到把数据库理论知识更加的巩固加深,加强动手能力与实践能力,学以致用,与现实生活中的应用充分的结合起来.
1。2功能要求
该学生成绩管理系统,实现简单的成绩查询、课程查询、学生查询等操作,并能实现简单的数据统计.
(一) 学生查询
1、学生信息修改
修改选中当前学生的信息。
2、学生信息的添加
增加新学生的信息。
3、学生信息删除
删除选中当前学生信息。
(二) 课程查询
1、课程修改
实现对课程名、学时、学分的修改.
2、课程添加
对一门新开设的课程进行录入,并存入数据库.
3、 课程删除
对一门不在开设的课程进行删除,并从数据库中删除。
(三) 成绩查询
1、 成绩修改
先选中要修改的成绩信息,然后进行修改。
2、 成绩添加
直接弹出添加对话框,然后进行添加。
3、 成绩删除
先选中要删除的成绩信息,然后直接删除。
2。需求分析
2。1数据流程图
学生信息
学生信息管理
基本信息录入
D1
学生信息返回
D2
D3
基本信息录入
课程信息
成绩信息
成绩信息管理
课程信息管理
基本信息录入
图2-1系统的数据流图
2。2数据字典
数据项是数据库的关系中不可再分的数据单位,下表分别列出了数据的名称、数据类型、长度、取值能否为空。利用SQL Server 2000建立“StudentCourse”数据库,其基本表清单及表结构描述如下:
数据库中用到的表:
数据库表名
关系模式名称
备注
Student
学生
学生学籍信息表
Course
课程
课程基本信息表
Score
成绩
选课成绩信息表
Student基本情况数据表,结构如下:
字段名
字段类型
Not Null
说明
Student _sno
Char
Primary key
学号
Student _sname
char
Not Null
学生姓名
Student _sex
char
‘男’或‘女'
性别
Student _dept
char
系别
Student_age
char
年龄
Student_address
char
地址
Course数据表,结构如下:
字段名
字段类型
约束控制
说明
Course_cno
char
主键(primary key)
课程号
Course_cname
char
not null
课程名称
Course_hour
int
not null
课时
Course_score
numeric(2,1)
not null
学分
Score情况数据表,结构如下:
字段名
字段类型
约束控制
说明
Course_cno
char
外部键
课程号
Student_sno
char
外部键
学号
Score
int
成绩
2.3存储过程
(1)在Course中插入一元组
CREATE PROCEDURE Course_prod
AS
Insert
Into Course
Values(’1018’,’微机原理’,’36’,'3。5’)
(2)创建一个查询过程
CREATE PROCEDURE Course_prod1
AS
Select *
From Course
(3)创建一个删除存储过程
CREATE PROCEDURE Course_prod2
AS
Delete
From Course
Where Course_cno=’1007'
3。概念结构设计
3。1 E—R图
由需求分析的结果可知,本系统设计的实体包括:
(1)学生基本信息:学号,姓名,性别,地址,年龄,专业。
学生基本信息实体
姓名
学号
年龄
性别
地址
专业
(2)课程基本信息: 课程名,课程号,学时,学分。
课程基本信息实体
课程名
课程号
学时
学分
(3)成绩基本信息:课程号,学号,分数.
成绩基本信息
课程号
学号
分数
这些实体间的联系包括:
每位学生可以学习多门课程,每门课程可供多位学生学习。
由上述分析可得到系统的E-R图:
选修课程
成绩
学生
课程号
课程名
学时
学分
分数
学号
姓名
性别
系别
地址
年龄
N
N
4。逻辑结构设计
4.1将E—R图转换为关系模型
实体型转换为关系模式。实体的属性就是关系的属性,实体的码就是关系的码。对于实体间的联系则有以下不同的情况:
一个m:n联系转换为一个独立的关系模式.与该联系相联的个实体的码以及联系本身的属性均转换为关系的属性,而关系的码为各实体码的组合.
一个1:n联系可以转换为一个独立的关系模式,也可以与n端对应的关系模式合并.如果转换为一个独立的关系模式,则与该联系相联的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为n端实体的码。
一个1:1联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并.3个或3个以上实体间的一个多元联系可以转换为一个关系模式。与该多元联系相联的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为各实体码的组合,具有相同的关系模式可合并.
具体的基本E—R图向关系模式的转化如下:
(1)学生(学号,姓名,性别,年龄,地址,系别),其主关键字为学号;
(2)课程(课程名,课程号,学时,学分),其中主关键字为课程号;
(3)成绩(课程号,学号,分数)其中主关键字为学号和课程号.
可以与学生关系模式合并为:
学生(学号,姓名,性别,年龄,地址,系别,成绩,课程号)。
4.2 模型优化
关系模式学生,课程不存在非主属性对主属性的部分函数依赖,也不存在传递函数依赖,已经达到了3NF.
5。物理结构设计
1. 建立数据表
(1) 学生信息表的建立。
CREATE TABLE Student
(Student_sno char(10) primary key,
Student_sname char(10) not null,
Student_sex char(2),
Student_dept char(10),
Student_age char(10),
Student_address char(10));
(2) 课程信息表的建立
CREATR TABLE Course
(Course_cno char(10) primary key,
Course_cname char(10) not null,
Course_hour int,
Course_score float(8));
(3) 分数信息表的建立
CREATE TABLE Score
(Course_cno char(10),
Student_sno float(8),
Score float(8));
2. 建立视图
(1) 查询学生基本信息的视图定义如下:
CREATE VIEW Student_view(Student_sno,Student_sname,Student_sex,Student_dept,Student_age,Student_address)
AS
SELECT *
FROM Student
(2) 课程信息查询的视图定义如下:
CREATE VIEW Course_view(Course_cno, Course_cname, Course_hour, Course_score)
AS
SELECT *
FROM Course
(3) 成绩信息查询视图定义如下:
CREATE VIEW Score_view(Course_no, Student_sno, Score float)
AS
SELECT *
FROM Score
3. 建立索引
(1)为学生Student表的学生姓名建立索引。
Create cluster index snameindex on Student(Student_sname);
(2)为课程Course表的课程名建立索引。
Create cluster index cnameindex on Course(Course_cname);
6。角色与触发器设计
1.创建一个角色
(1) 为普通学生创建一个角色R1,并对其授权查询操作。
CREATE ROLE R1
GRANT SELECT
ON TABLE Student,Course,Score
TO R1;
在
①在数据库目录下的角色上右击,选择新建数据库角色.
②单击‘确定’,再选择角色R1属性
③选择权限
④勾选三个表的SELECT权限,确定即可.
(2)为老师创建一个角色R2,并对其授权查询、插入、更新、删除操作.
CREATE ROLE R2
GRANT SELECT,INSERT,UPDATE,DELETE
ON TABLE Student,Course,Scorse
TO R2;
方法同(1), 第④步权限选择如下图:
2。创建触发器
当删除Student表中某一学生基本信息时,触发Course表,删除相应的记录。
CREATE TRIGGER Student—delete
ON Student
FOR DELETE
AS
DELETE Course
FORM DELETED
WHERE Course.sno=DELETED.sno
7。数据库的实施和维护
7.1数据库的实施
1。数据插入
·插入新的课程,课程号为1018,课程名为微机原理,学时为36,学分为3.5
INSERT
INTO Course VALUES('1018’,’微机原理',’36’,'3.5’);
·插入学号为200803学生的微机原理成绩,分数为81
INSERT
INTO Score VALUES(’1018','200803’,'81’);
2。查询数据
·查询学号为200801的学生信息:
Select *
From Student
Where Student_sno = ‘200801’
·查询名字为张三的学生成绩及课程名:
Select Score,Course_cname
From Score,Course
Where Student_sno in
(Select Student_sno
From Student
Where Student_sname=’张三’and Course.Course_cno=Score。Course_cno);
3。删除数据
·删除课程号为1018的课程
DELETE
FROM Course
Where Course_cno=’1018’
·删除学生柴胡的所有成绩记录
DELETE
FROM Score
Where Student_sno in
(SELECT Student_sno
FROM Student
WHERE Student_sname=’柴胡’);
7。2。数据库的维护
数据库试运行合格后,数据库开发工作就基本完成,即可投入正式运行,但是,由于应用环境在不断变化,数据库运行过程中物理结构存储也会不断变化,对数据库设计进行评价、调整、修改等维护工作是一个长期的任务,也是设计工作的继续和提高。
数据库运行一段时间后,由于记录不断增,删,改,会使数据库的物理存储情况变坏降低了数据的存取效率,数据库的性能下降,这时候作为数据库管理员就要对数据库进行重组织或部分重组织(只对频繁增、删的表进行重组织).DBMS一般都提供数据重组织的实用程序。在重组织的过程中,按原设计要求重新安排存储的位置、回收垃圾、减少指针链等,提高系统性能。
数据库的重组织并不修改原设计的逻辑和物理结构,而数据库的重构造则不同,它是指部分修改数据库的模式和内模式.
由于数据库应用环境发生变化,增加了新的应用或者新的实体,取消了某些应用,有的实体与实体间的联系也发生改变,使原有的数据库设计不能满足新的需求,需要调整数据库的模式和内模式。
8。结束语
在这次的课程设计中不仅检验了我所学习的知识,也培养了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情。在设计过程中,与同学分工设计,和同学们相互探讨,相互学习,相互监督。学会了合作,学会了运筹帷幄,学会了宽容,学会了理解,也学会了做人与处世。
通过此次数据库的课程设计,真正达到了学与用的结合,增强了对数据库方面应用的理解,对自己今后参与开发数据库系统积累了不少经验,在实验过程中,从建立数据开始,对数据库设计理念及思想上有更高的认识,从需求分析,到概念设计和逻辑设计,E—R图的表示,数据字典的创建,懂得了不少有关数据库开发过程中的知识,增强了自己在数据库中应用SQL语言的灵活性,其中包括,插入、删除、修改、查询,牵涉表和表之间的联系,主建与外主键的定义,约束项的设置,使逻辑更严密,在学习过程中,我也能过上网查了不少资料,也看了一些别人设计的图书馆管理信息系统的设计报告,学以致用,自我创新,独立完成了这份自己的报告,从中在学到用,从用又到学,不断修改,系统更新。虽然不能达到完善系统,但也做到了尽善尽美,加强理论学习对完善系统会有很多帮助,不管怎么说,对这次做的课程设计自己觉得还算满意。
课程设计是我们专业课程知识综合应用的实践训练,是我们迈向社会,从事职业工作前一个必不少的过程.”千里之行始于足下”,通过这次课程设计,我深深体会到这句千古名言的真正含义.我今天认真的进行课程设计,学会脚踏实地迈开这一步,就是为明天能稳健地在社会大潮中奔跑打下坚实的基础。
8.答辩与成绩考核
答辩问
答
成绩评定
项 目
权重
成绩
1、设计过程中勤、能力、水平、态度等方面
0。2
2、说明书书写及作品质量程度
0.4
3、答辩
0.2
4、系统
0.2
总 成 绩
展开阅读全文