河南理工大学数据库设计论文.docx
《河南理工大学数据库设计论文.docx》由会员分享,可在线阅读,更多相关《河南理工大学数据库设计论文.docx(20页珍藏版)》请在冰豆网上搜索。
![河南理工大学数据库设计论文.docx](https://file1.bdocx.com/fileroot1/2023-1/27/71e7ef3e-5ee9-4548-9de0-550e86ea7197/71e7ef3e-5ee9-4548-9de0-550e86ea71971.gif)
河南理工大学数据库设计论文
河南理工大学万方科技学院
数据库设计论文
论文题目:
学生成绩管理数据库的设计
院系:
电气系
专业:
通信11-1
学号:
姓名:
牛飞
指导教师:
撰写学年:
年月日
摘要
学生成绩管理系统是一个教育单位不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要。
为了减轻学校的负担,增加学生成绩管理的便捷,为广大教师和学生提高工作效率,实现学生成绩信息管理工作流程的系统化,规范化和自动化,我们小组设计了一个学生成绩管理系统。
本学年设计叙述到的学生成绩管理系统是用SQL语言实现的。
重点介绍了学生成绩管理系统的实现过程:
包括概念设计,需求分析,逻辑结构和物理设计,系统的实施与维护等。
本系统主要功能有教师管理,学生管理,班级管理,学生信息管理,成绩管理等,包括功能需求描述,数据库设计等内容。
关键词:
成绩管理;成绩查询;SQLserver
目录
1.数据库设计概述1
1.1开发背景1
1.2开发目标1
2.需求分析1
2.1系统功能需求1
2.2系统模块设计2
2.3开发环境2
3.概念结构设计2
3.1系统实体设计3
3.2系统E-R图3
3.3系统数据流图7
4.逻辑结构设计7
4.1成绩管理系统数据模型8
5.数据库的物理设计10
5.1数据库的存储结构10
5.2关系模型的存取方法14
5.3数据库关系图15
6.数据库的实施和维护16
6.1系统的实施16
6.2系统的调试与维护17
7.总结18
7.1设计总结18
7.2致谢18
8.参考文献18
1.数据库设计概述
1.1开发背景
学生成绩管理系统是一个教育单位不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要,所以学生成绩管理系统应该能够为用户提供充足的信息和快捷的查询手段,对学生来说可以轻松的查阅自己在校的成绩以及信息等.在科学技术突飞猛进的时代,为了减轻学校的负担,增加学生成绩管理的便捷,开发出一个适用于高校的学生成绩管理系统是必要的.
1.2开发目标
开发一个学生成绩管理系统,采用计算机对学生成绩进行管理,进一步提高办学效益和现代化水平.为广大教师和学生提高工作效率,实现学生成绩信息管理工作流程的系统化,规范化和自动化.不需要大量的人力,只需要几名专门录入员即可操作系统,节省大量人力,可以迅速查到所需信息,高效,安全,学生在能方便的查看自己的成绩.
2.需求分析
2.1系统功能需求
1.管理员能够实现对整个学生信息的录入、修改、删除、查询等操作,对教师用户的添加、删除、修改等操作。
2.教师能够在一定的权限内对所有学生成绩进行查询,可以对的自己的登录密码进行修改。
系统具体需要实现以下功能:
1.系统管理:
对用户管理和系统进行初始化设置。
2.成绩管理:
提供学生考试成绩的基本录入、修改、查询、打印等基本管理功能,以及学生单科和总成绩的相关统计功能。
3.学生名单管理:
提供对学生名单的基本管理功能,主要是学生名单的录入、修改、删除和浏览/查询等基本功能。
4.基础数据管理:
提供对学校基本数据和考试相关基础数据的管理功能,包括:
专业设置、班级设置、考试类型设置、考试科目设置和考试学期设置等。
5.数据库管理:
对现有的数据进行管理,包括数据备份和恢复,以方便用户对数据库进行管理和维护工作,提高系统的数据安全性。
2.2系统模块设计
成绩管理系统大体可以分成三大模块如图,一是学生的基本信息模块,里面应该包含学生的各方面的基本信息;再者便是课程管理模块,在该模块中应该包含有对学生成绩信息的查询和处理,如平时成绩、考试成绩、最终成绩以及是否需要重修或补考的统计等功能模块;再其次还有教师、课程等相关信息的模块;可以得到系统流程图:
2.3开发环境
软件环境:
MicrosoftSQLServer2000
Windows95/98/2000/XP,InternetExplorer(IE)5.0及其以上版本
硬件环境:
CPU:
PIII500以上
内存:
512M以上
硬盘空间:
1GB以上
3.概念结构设计
将需求分析得到的用户需求抽象为信息结构即概念模型的过程就是概念结构设计。
概念模型是在对用户需求分析之后,画出本系统抽象出的E-R图。
3.1系统实体设计
由需求分析的结果可知,本系统设计的实体包括:
(1)学生基本信息:
学号,姓名,性别,系别,地址,年龄,专业,身份证号码,入学时间,联系方式;
(2)教师基本信息:
教师号,教师所属系,性别,教师名,年龄,职称,联系方式,教龄;
(3)Course表基本信息:
课程号,课程名称,课时,学分,课程种类,学年,学期;
(4)Grade表基本信息:
成绩记录号,课程号,学号,课程名,平时成绩,考试成绩,总成绩;
(5)班级表基本信息:
班级号,班级名称,所属系,班级人数,班长学号;
(6)授课表基本信息:
授课时间,授课地点,课程号,教师号,教师名;
(7)选修表基本信息:
课程号,学号,成绩;
(8)课程安排表基本信息:
课程号,课程名称,学号,教师号,教师名;
(9)用户表基本信息:
用户名,密码,所属权限.
3.2系统E-R图
根据规划出的实体画出对各个实体具体的描述如下:
3.3系统数据流图
由数据库系统总E-R图和分E-R图得到数据流图:
4.逻辑结构设计
设计逻辑结构分三步进行:
第一步,将概念经过转化为一般的关系、网状、层次模型;第二步,将转化来的关系、网状、层次模型向特定DBMS支持下的数据模型转换;第三步,对数据模型进行优化。
4.1成绩管理系统数据模型
由系统E—R图转化而得到的成绩管理系统数据模型如下:
(1)学生表基本信息:
学号,姓名,性别,系别,地址,年龄,专业,身份证号码,入学时间,联系方式。
(其中学号为主键系别为外键)
表1Student基本信息表
字段名
字段类型
约束控制
说明
Stu_sno
Varchar(6)
NotNull(Primarykey),在000000到999999之间
学号
Stu_sname
varchar(8)
NotNull
姓名
Stu_sex
char
(2)
‘男’或‘女’
性别
Stu_dept
varchar(30)
Notnull
系别
Stu_age
char(4)
年龄
Stu_address
vachar(30)
地址
Stu_id
char(18)
Notnull
身份证号
Stu_entry
datetime
Notnull
入学时间
Stu_class
Varchar(15)
Notnull
班级
Stu_contact
Varchar(13)
Notnull
联系方式
(2)Course表基本信息:
课程号,课程名称,课时,学分,课程种类,学年,学期(其中课程号为主键)
表2Course表
字段名
字段类型
约束控制
说明
Co_cno
Varchar(4)
主键(primarykey),在9000到9999之间
课程号
Co_name
varchar(15)
notnull
课程名称
Co_hour
smallint
notnull
课时
Co_score
smallint
notnull属于(1,2,3,4,5,6)
学分
Co_type
varchar(10)
notnull
课程种类
Co_year
smallint
notnull,只能选择1,23,4
学年
Co_term
smallint
notnull只能选择春,秋
学期
(3)教师基本信息:
教师号,教师所属系,性别,教师名,年龄,职称,联系方式,教龄(其中教师号为主键)
表3teacher基本信息表
字段名
字段类型
约束控制
说明
T_tno
Varchar(10)
notnull,在000到999之间
教师号
T_dep
Varchar(15)
Notnull
教师所属系别
T_cname
Char(6)
notnull
教师名
T_sex
int
notnull
性别
T_age
smallint
notnull
年龄
T_position
varchar(15)
notnull
职称
T_contact
Char(11)
notnull
联系方式
T_work_age
smallint
notnull
教龄
(4)课程安排表基本信息:
课程号,课程名称,学号,教师号,教师名(其中教师号和课程号为主键)
表4课程表
字段名
字段类型
约束控制
说明
C_cno
Varchar(4)
Notnull
课程号
C_name
varchar(15)
notnull
课程名称
T_cname
char(6)
notnull
教师名
T_tno
varchar(10)
notnull
教师号
(5)授课表基本信息:
授课时间,授课地点,课程号,教师号,教师名(其中教师号和课程号为主键)
表5授课表
字段名
字段类型
约束控制
说明
Learn_room
varchar(8)
Notnull
上课地点
T_cname
char(6)
Notnull
教师名
T_tno
varchar(10)
Notnull在000到999之间
教师号
Learn_time
Varchar(8)
notnull
授课时间
C_cno
Varchar(4)
在9000到9999之间
null
课程号
(6)班级表基本信息:
班级号,班级名称,所属系,班级人数,班长学号(其中所属系为主键)
表6class基本信息表
字段名
字段类型
约束控制
说明
Cl_cno
varchar(4)
主键(primarykey),在0000到9999之间
班级号
Cl_name
Varchar(15)
notnull
班级名称
Cl_dep
Varchar(10)
notnull
所属系
Cl_number
int
notnull,大于0且小于100
人数
Cl_monitor
Varchar(6)
notnull
班长学号
(7)Grade表基本信息(成绩记录号,课程号,学号,课程名,平时成绩,考试成绩,总成绩)(其中成绩记录号,课程号,学号为主键)
表7Grade基本信息表
字段名
字段类型
约束控制
说明
Score_id
int
notnull
成绩记录号
C_cno
Varchar(4)
外部键
课程号
C_name
varchar(15)
notnull
课程名称
T_name
varchar(8)
notnull
教师名
T_tno
Varchar(10)
notnull
教师号
Stu_sno
Varchar(6)
外部键
学号
practic_grade
int
Notnull,大于等于0,小于等于100
平时成绩
exam_grade
int
Notnull,大于等于0,小于等于100
考试成绩
FGrade
Dec(3,1)
nor_score占30%
exam_score占70%
成绩
Re_choose
char
(2)
是否
重修
Re_exam
char
(2)
是否
补考
(8)用户表基本信息:
用户名,密码,所属权限
表8User基本信息表
字段名
字段类型
约束控制
说明
Username
varchar(10)
Notnull
用户名
UserID
varchar(6)
Notnull
密码
Userauth
varchar(10)
在学生,教师,教学秘书之间
权限
5.数据库的物理设计
5.1数据库的存储结构
确定数据库的存储结构主要指确定数据的存放位置和存储结构,包括:
确定关系、索引、日志、备份等的存储安排及存储结构,以及确定系统存储参数的配置。
(1)创建学生基本信息表:
createtableStudent(
Stu_snonumeric(6)constraintA1check(Stu_snobetween000000and999999),
Stu_snamevarchar(8)notnull,
Stu_sexchar
(2)constraintA2check(Stu_sexin('男','女')),
Stu_deptvarchar(30)notnull,
Stu_agechar(4)constraintA3check(Stu_agebetween10and30),
Stu_addressvarchar(30)notnull,
Stu_idchar(18)notnull,
Stu_entrydatetimenotnull,
Stu_contactVarchar(13),
Stu_classVarchar(15),
constraintStu_keyprimarykey(Stu_sno)
)
createindexStusnoonStudent(Stu_snoasc)
createindexStusdeptonStudent(Stu_dept)
(2)创建课程表:
createtableCourse(
C_cnonumeric(4)constraintB1check(C_cnobetween9000and9999),
C_namevarchar(15)notnull,
C_hoursmallintnotnull,
C_scoresmallintconstraintB4check(C_scorein('1','2','3','4','5','6')andC_scoreisnotnull)
C_typevarchar(10)notnull,
C_yearsmallintconstraintB2check(C_yearin('1','2','3','4')andC_yearisnotnull),
C_termchar
(2)constraintB3check(C_termin('春','秋')andC_termisnotnull),
C_numsmallintnotnull,
constraintC_keyprimarykey(C_cno)
)
createindexCourseidonCourse(C_cnoasc);
(3)创建成绩表Grade
createtableGrade(
Grade_idintnotnull,
T_tnoVarchar(10)notnull,
C_cnonumeric(4),
C_namevarchar(15)notnull,
Stu_snonumeric(6),
practic_gradeintconstraintD1check(practic_gradebetween0and100),
exam_gradeintconstraintD2check(exam_gradebetween0and100),
FGradeDec(3,1),
Re_choosechar
(2)constraintD3check(Re_choosein('是','否')),
Re_examchar
(2)constraintD4check(Re_examin('是','否')),
constraintD5check((0.3*practic_grade)+(0.7*exam_grade)=FGrade),
constraintGrade_keyprimarykey(C_cno,T_tno,Stu_sno),
constraintGForeign_key1foreignkey(Stu_sno)referencesStudent(Stu_sno),
constraintGForeign_key2foreignkey(C_cno)referencesCourse(C_cno),
constraintGForeign_key3foreignkey(T_tno)referencesTeacher(T_tno)
)
createindexGradeIDonGrade(Grade_id)
(4)创建教师基本信息表Teacher
createtableTeacher(
T_tnovarchar(10)constraintC1check(T_tnobetween000and999andT_tnoisnotnull),
T_depvarchar(15)notnull,
T_cnamechar(6)notnull,
T_sexchar
(2)notnull,
T_agesmallintnotnull,
T_positionvarchar(15)notnull,
T_contactchar(11)notnull,
T_work_agesmallintnotnull,
constraintT_keyprimarykey(T_tno)
)
createindexTeatnoonTeacher(T_tnoasc)
(5)创建班级表Class
createtableClass(
Cl_cnovarchar(4)constraintE1check(Cl_cnobetween0000and9999andCl_cnoisnotnull),
Cl_namevarchar(15)notnull,
Cl_deptvarchar(30),
Cl_numberintconstraintE2check(Cl_numberbetween0and100andCl_numberisnotnull),
Class_monitornumeric(6)notnull,
constraintCL1_keyprimarykey(Cl_dept),
)
createindexclass1onclass(Cl_deptasc)
(6)创建授课表schooling
createtableschooling(
Learn_roomvarchar(8)notnull,
Learn_timevarchar(8)notnull,
C_cnonumeric(4)constraintF1check(C_cnobetween9000and9999),
T_tnovarchar(10)constraintF2check(T_tnobetween000and999andT_tnoisnotnull),
T_cnamechar(6)notnull,
constraintsch_keyprimarykey(C_cno,T_tno)
)
createindexschooling1onschooling(T_tnoasc)
createindexschooling2onschooling(C_cnoasc)
(7)创建课程安排表arrange_lesson
createtablearrange_lessson(
C_cnonumeric(4)constraintH1check(C_cnobetween9000and9999),
C_namevarchar(15)notnull,
T_tnovarchar(10)constraintH2check(T_tnobetween000and999andT_tnoisnotnull),
T_cnamechar(6)notnull,
C_typevarchar(10)notnull,
C_yearsmallintcheck(C_yearin('1','2','3','4')andC_yearisnotnull),
C_termchar
(2)constraintH4check(C_termin('春','秋')andC_termisnotnull),
Cl_namevarchar(15)notnull,
constraintARlesson_KEYprimarykey(C_cno,T_tno),
constraintStu1_keyforeignkey(Stu_dept)referencesClass(Cl_dept)
)
createindexTeacheronarrange_lessson(T_tnoasc)
createindexCourseonarrange_lessson(C_cnoasc)
(8)创建用户表Users
createtableUsers(
Usernamevarchar(10)notnull,
UserIDvarchar(6)notnull,
Userauthvarchar(10)constraintI1check(Userauthin('学生','教师','教学秘书')))
5.2关系模型的存取方法
在将概念模型转换成物理模型之后,我们可以对物理模型进行设计,双击物理模型的关系,可以对该关系的名称、注释等信息进行查询。
可对该关系的属性列进行设计,可分别设置其名称、码、数据类型以及主码、是否为空等。
在实际设计中最常用的存取方法是索引,使用索引可以大大减少数据的查询时间,在建立索引时应遵循:
在经常需要搜索的列上建立索引; 在主关键字上建立索引;在经常用于连接的列上建立索引,即在外键上建立索引;在经常需要根据范围进行搜索的列上创建索引,因为索引已经排序,其指定的范围是连续的等规则。
才能充分利用索引的作用避免因索引引起的负面作用。
数据库中设计了如下索引:
(1)在Student表中建立索引:
createindexStusnoonStudent(Stu_snoasc)
createindexStusdeptonStudent(Stu_de