学生信息管理系统数据库设计报告.docx
《学生信息管理系统数据库设计报告.docx》由会员分享,可在线阅读,更多相关《学生信息管理系统数据库设计报告.docx(47页珍藏版)》请在冰豆网上搜索。
学生信息管理系统数据库设计报告
学生信息管理系统数据库设计
一、需求分析
功能需求分析
总体任务的实现是建立在对系统正确的需求分析基础之上的。
需求分析分是数据库系统开发的第一步,也是最重要的一步。
在大学的学习生活中学生的活动范围很广,信息量相对于以前增加,学生在学习生活中不仅仅与寝室和同班同系的同学联系有时候还要与自己所学学科的任课老师交流联系,还要与本系的辅导员以及自己所在寝室的宿舍管理员等进行联系,这些信息分布比较散乱,难于集合起来。
所以创建该数据库尽可能的将与学生相关的信息集合起来,将一些数据结构化,方便用户查询。
学生信息系统的基本情况
由于整个系统是由多个部分组成,所以各个信息如下:
(1)学生信息:
记录在学校中学生的基本信息,包括姓名,学号,出生年月,所属院系,所在班级,联系电话等等;
(2)教师信息:
记录与学生相关的教师的基本信息,包括教师姓名,联系电话,教授课程等等;
(3)导师信息:
记录学生所在院系的导师的相关信息,包括导师姓名,联系电话,领导院系等等;
(4)宿舍信息:
记录学生所住寝室的相关信息,包括寝室号和寝室宿管联系电话等等。
需求分析阶段的目标
(1)信息要求:
用户能够查找到有关学生的所有相关信息包括学生基本信息还有相关老师的信息
(2)处理要求:
当信息发生变化时,一些信息能够自行修改而不造成插入删除错误。
(3)完整性要求:
①.各种信息记录的完整性,信息记录内容不能为空;
②.各种数据间相互的联系的正确性;
③相同的数据在不同记录中的一致性。
信息需求分析
①院系的基本信息
院系编号、院系名称、联系电话、院系主任
②班级的基本信息
班级编号、院系编号、班级名称、班长、学生数
③学生的基本信息
学号、班级编号、姓名、性别、出生日期、家庭住址
④课程的基本信息
课程编号、课程名称、学分、讲师
⑤成绩的基本信息
学号、课程编号、成绩、学分
⑥讲师的基本信息
讲师编号、讲师姓名、教授班级、联系电话
⑦宿舍的基本信息
宿舍编号、宿舍地址、联系电话、所属院系
⑧导师的基本信息
导师编号、导师姓名、联系电话、所属院系
需求分析阶段成果
根据实际业务处理过程,绘制业务流程图如图所示:
(a)验证模块
(b)查询模块
(c)选课模块
(d)维护模块
组合的业务处理流程图:
数据流程图
顶层数据流程图:
二层数据流程图:
选课表
教务员
未通过
维护
查询
学生
验证
注册信息
注册信息
未通过
验证
选课
选课信息
信息表
注册表
包括:
系信息、学生信息、课程信息
查询结果
选课结果
二、概念分析
对数据进行抽象
概念结构是对现实的一种抽象。
首先对于该数据库系统中涉及的数据进行分类,及抽象了该数据库涉及数据的型与值,而在E-R图模型中,实体就是这种抽象;接着进行另一种抽象---聚集,即定义某一类型的组成成分。
它抽象了该数据库涉及对象内部类型和成分,而在E-R模型中若干属性的聚集组成了实体型;最后在数据库中涉及对象中进行定义类型之间的一种子集联系。
1.学生实体与其属性
2.班级实体及其属性
3.院系实体及其属性
4.成绩实体及其属性
5.课程实体及其属性
6.讲师实体及其属性
7.宿舍实体及其属性
8.导师实体及其属性
创建局部应用,设计分E-R图
整个系统中最核心的数据内容是学生信息,所有一切应用都是围绕着学生这些数据来进行的。
将学生和班级院系结构化,方便查询学生所在班级院系的查询,创建有关的分E-R图如下:
在这个应用或这个分E-R图中主要的应用是,当查询一个学生的班级和院系所涉及的数据时,这个应用能够将所涉及的院系和班级的详细信息集合在一起,而且在需要联系导师时能够将导师的联系电话等相关信息展现出来,方便了用户在查询涉及学生的相关导师、院系、班级的信息。
(2)学生有关课程和教师的数据结构话形成一个查询应用:
该应用主要是涉及学生上课这部分的查询,将学生涉及课程和教师的信息整合起来,这其中可以让用户查询有关对象指定课程的成绩和学分或是指定课程的任课老师的联系电话,方便同老师进行交流,或者时可以查询核定学生的所有学科的成绩或是查询某一科所有同学的成绩,并按照一定的顺序排序。
(1)学生有关宿舍的一个应用:
该应用比较简单,时当用户在查询涉及指定对象的有关宿舍的基本信息,在这个应用中用户可以查询到指定用户的宿舍号和联系电话以及地址。
能够方便的查询到所涉及的信息。
合并分E-R图,形成总E-R图
学生
宿舍
指导
导师
领导
院系
班级
成绩
教授
讲师
课程
完整E-R图
三、逻辑设计
完成关系模式的转化
根据关系模式的转换规则可得到如下的关系模式,加下划线的属性为相应的主码。
①院系的基本信息(院系编号、院系名称、联系电话、院系主任)
②班级的基本信息(班级编号、院系编号、班级名称、班长、学生数)
③学生的基本信息(学号、班级编号、姓名、性别、出生日期、家庭住址)
④课程的基本信息(课程编号、课程名称、学分、讲师)
⑤成绩的基本信息(学号、课程编号、成绩、学分)
⑥讲师的基本信息(讲师编号、讲师姓名、教授班级、联系电话)
⑦宿舍的基本信息(宿舍编号、宿舍地址、联系电话、所属院系)
⑧导师的基本信息(导师编号、导师姓名、联系电话、所属院系)
数据字典
数据和表的建立
表名
含义
Department
院系
Class
班级
Student
学生
Course
课程
Grade
成绩
Teacher
讲师
Hourse
宿舍
Director
导师
表结构
(1)、Department
表1-1Department表结构
字段名
数据类型
字段含义
约束
Dept_ID
Decimal
院系编号
PrimaryKey
Department
varChar(50)
院系名称
NotNull
Phone
varChar(50)
联系电话
Director
varChar(50)
院系主任
(2)、Class
字段名
数据类型
字段含义
约束
Class_ID
Char(7)
班级编号
PrimaryKey
Dept_ID
Decimal
院系编号
ForeignKey
Class
varChar(30)
班级名称
NotNull
Monitor
varChar(24)
班长
Student_NO
Decimal
学生数
NotNullDefault0
(3)、Student
字段名
数据类型
字段含义
约束
Student_ID
varChar(9)
学号
PrimaryKey
Class_ID
Char(7)
班级编号
ForeignKey
Name
varChar(24)
姓名
NotNull
Gender
varChar
(2)
性别
男,女
Birthday
Datetime
出生日期
Address
varChar(50)
家庭地址
H_ID
varChar(50)
寝室号
Department
Varchar(50)
所属院系
H_ID
Varchar(50)
宿舍编号
ForeignKey
(4)、Course
字段名
数据类型
字段含义
约束
Course_ID
varChar(8)
课程编号
PrimaryKey
Course
varChar(50)
课程
NotNull
Credit
Decimal
学分
Teacher
Varchar(50)
讲师
T_ID
Varchar(50)
(5)、Grade
字段名
数据类型
字段含义
约束
Student_ID
varChar(9)
学号
ForeignKey
PrimaryKey
Course_ID
varChar(8)
课程编号
ForeignKey
Grade
Decimal
成绩
NotNull
G_Value
Decimal
学分
NotNull
(6)、Teacher
字段名
数据类型
字段含义
约束
T_ID
varChar(9)
讲师编号
PrimaryKey
T_Name
varchar(50)
讲师姓名
Course
varChar(50)
教授课程
T_Phone
varChar(50)
电话
Department
Varchar(50)
所属院系
Insertintoteacher
Values('001','王玉贤','java','','信管',)
Insertintoteacher
Values('002','焦华光','网站设计与规划','','电商',)
Insertintoteacher
Values('003','郭慧峰','c语言','','信管',)
Insertintoteacher
Values('004','范海平','管理学','','管理',)
Insertintoteacher
Values('005','范朝奇','photoshop','','电商',)
Insertintoteacher
Values('006','赵金鹏','计算机网络','','信管',)
(7)、Hourse
字段名
数据类型
字段含义
约束
H_ID
varChar(50)
宿舍编号
PrimaryKey
H_Address
Varchar(50)
宿舍地址
H_Phone
varChar(50)
联系电话
Department
Varchar(50)
所属院系
Insertintoteacher
Values('210','西区','','信管',)
Insertintoteacher
Values('220','西区','','电商',)
Insertintoteacher
Values('230','西区','','信管',)
Insertintoteacher
Values('310','东区','','管理',)
Insertintoteacher
Values('320','东区','','管理',)
(8)、Director
字段名
数据类型
字段含义
约束
D_ID
varChar(9)
导师编号
PrimaryKey
D_Name
Varchar(24)
导师姓名
D_Phone
varChar(50)
联系电话
Department
varChar(50)
所属院系
Dept_ID
varChar(50)
院系编号
ForeignKey
Insertintodirector
Values('301','东区','','信管','01')
Insertintodirector
Values('501','东区','','电商','03')
Insertintodirector
Values('803','东区','','管理','02')
Insertintodirector
Values('302','东区','','信管','01')
处理逻辑描述(判定表或判定树)
判定条件
决策
判断用户查询涉及的功能模块
系部基本信息模块、宿舍楼基本信息模块、学生基本信息模块、讲师基本信息模块、导师基本信息模块、学生成绩基本信息模块、学生课程基本信息模块:
先确定查询所涉及的功能模块;然后,确定要查询的内容,确定查询数据流向;最后显示查询结果。
判断用户修改要涉及的模块,同时把相应的修改数据传到相应的模块之中
系部基本信息模块、宿舍楼基本信息模块、学生基本信息模块、讲师基本信息模块、导师基本信息模块、学生成绩基本信息模块、学生课程基本信息模块:
先确定更新所涉及的功能模块;然后,把更新信息传送到相应的模块中;最后,进行相应的更新操作。
四.物理设计阶段
物理设计阶段的目标与任务
数据库的物理设计就是为逻辑数据模型选取一个最合适应用要求的物理结构的过程,在这个阶段中要完成两大任务:
(1)确定数据库的物理结构,在关系数据库中主要是存取方法和存储结构;
(2)对物理结构进行评价,评价的重点是时间和空间效率。
数据存储方面
为数据库中各基本表建立的索引如下:
1.由于基本表class,Student的主码Class_ID,Student_ID经常在查询条件和连接操作的连接条件中出现,且它们的值唯一,考虑在两个属性上建立唯一性索引;
2.Course的主码Course_ID,Teacher经常在查询条件中出现,且它们的组合值唯一,考虑在它们之上建立组合索引;
3.基本表Student的一属性StuName,经常在查询条件中出现,且经常出现在相等的比较条件中,考虑在其之上建立聚簇索引;
4.基本表Hourse、Director的属性值几乎不会有什么变化,更新率很低,可考虑适当建立索引;
5.基本表Teacher,Grade的属性值经常发生变化,权衡系统为维护索引付出的代价,可考虑不建立索引,也可以适当建立索引。
五、系统实现
建立数据库
createdatabaseStudent_Dormitory_Management;
建立数据表
Course表的建立
createtablecourse(
course_IDvarchar(8)notnullunique,
coursevarchar(50)notnull,
creditdecimal,
teachervarchr)
Department表的建立
createtabledepartment(
Dept_IDDecimalnotnullunique,
DepartmentvarChar(50)NotNull,
PhonevarChar(50),
DirectorvarChar(50),
primarykey(Dept_ID))
Director表的建立
createtabledirector(
D_IDvarChar(9)notnullunique,
D_NameVarchar(24),
D_PhonevarChar(50),
DepartmentvarChar(50),
primarykey(D_ID))
Grade表的建立
createtableGrade(
Student_IDvarChar(9)notnullunique,
Course_IDvarChar(8)notnullunique,,
GradeDecimalNotNull,
G_ValueDecimalNotNull,.
foreignkey(Student_ID,Course_ID))
Hourse表的建立
createtableHourse(
H_IDvarChar(9)notnullunique,
H_Address,Varchar(50),
H_PhoneVarchar(50),
DepartmentVarchar(50))
Student表的建立
createtableStudent(
Student_IDvarChar(9)notnullunique,
Class_IDChar(7),
NamevarChar(24),
GendervarChar
(2),
BirthdayDatetime,
AddressvarChar(50),
H_ID寝室号,
DepartmentVarchar(50),
primarykey(Student_ID),
foreignkey(Class_ID),
check(genderorgender));
Teacher表的建立
createtableTeacher(
T_IDvarChar(9)notnullunique,,
T_Namevarchar(50)
CoursevarChar(50),
T_PhonevarChar(50),
DepartmentVarchar(50),
primarykey(T_ID))
关系图
==
=
=
=course_course_id
=
=
Directordept_id
studenth_id
courset_id
建立视图
(1)用于查询和更新学生班级基本信息的视图定义如下
createviewclassview(班级编号、班级名称、学生数、班长、
院系编号)
select*
fromclass
(2)方便于宿舍楼基本信息查询、更新的视图定义如下:
createviewdepartmentView(院系编号、院系名称、联系电话
院系主任)
as
select*
fromdepartment
(3)显示学生基本信息的视图定义如下:
createviewstuview(学号、班级编号、姓名、性别、
出生日期、家庭地址、寝室号、
所属院系)
as
select*
fromstudent
(4)可用于学生课程基本信息的查询、更新的视图定义如下:
createviewcourseview(课程编号、课程、学分、讲师)
as
select*
fromcourse
(5)用于查询和更新学生成绩基本信息的视图定义如下
createviewgradeiew(学号、课程编号、成绩、学分)
、as
select*
fromgrade
(6)查询导师的基本信息的视图定义如下:
createviewteacheriew(讲师编号、讲师姓名、教授课程、电话、
所属院系)
as
select*
fromteacher
(7)查询住宿信息的视图建立如下
createviewhourseviewview(宿舍编号、宿舍地址、联系电话、
所属院系)
as
select*
fromhourse
(8)用于查询学生导师的视图建立如下
createviewDirectorview(导师编号、导师姓名、联系电话、所属院系)
as
select*
fromDirector
六、主要代码
查询
1.表查询某同学已登录的所有成绩:
select,,Grade,G_Value
fromCOURSE,GRADE
where=and='8730201'
2.表查询某班所有同学的信息
select*
fromSTUDENT
whereClass_IDlike'873%'
更新
更新学号为8730102的学生的性别为女
Updatestudent
Setgender='女'
Fromstudent
WhereStudent_ID='8730102'
插入
在学生信息表中新插入信息:
InsertintoStudent
Values('8734065','8734','许芯','女','1990-01-01','西安','西区','08级电商','230')
InsertintoStudent
Values('001','1234','黄斌','男','1993-11-04','渭南','东区','08级信管','310')
InsertintoStudent
Values('002','1234','魏韵','女','1993-06-21','运城','西区','08级信管','230')
InsertintoStudent
Values('003','1234','金野明','男','1992-01-01','西安','东区','08级信管','310')
InsertintoStudent
Values('006','2345','马志飞','男','1990-08-11','临汾','东区','09级管理','310')
InsertintoStudent
Values('015','4567','赵子龙','男','1991-11-01','昆明','东区','10级信管','320')
InsertintoStudent
Values(001','567','林羽墨','女','1990-09-01','西安','西区','10级电商','230')
InsertintoStudent
Values('005','567','郎江峰','男','1990-03-12','西安','东区','10级电商','310')
InsertintoStudent
Values(006','567','李菁菁,'女','1990-01-01','西安','西区','10级电商','230')
InsertintoStudent
Values('004','567','付诗音','女','1992-05-15','西安','西区','10级电商','230')
InsertintoStudent
Values('8734065','8734','吉亚尼','女','1992-11-21','西安','西区','08级电商','230')
InsertintodepartmentValues('01','信管','','李建国')
InsertintodepartmentValues('02','管理','','徐胜
')
InsertintodepartmentValues('01','电商','','李雨生')
Insertintoclas