目录
高校学籍管理系统
1.概述
1.1 选题背景
1.2 开发环境
1.3 开发目的和任务
1.4 开发意义
1.5 文章组织结构
2.需求分析
2.1 用户需求
2.2 功能需求
3.概念结构设计
3.1 抽象出系统的实体
3.2 实体间的联系
3.3 设计分E-R图
3.4 全局E-R图
4.逻辑结构设计
4.1 关系数据模式
4.2 数据字典
4.3 视图设计
5.数据库物理设计与实施
5.1 创建数据库
5.2 建立和管理基本表
5.3 建立和管理视图
5.4 创建触发器
5.5 创建存储过程
6.访问数据库
6.1 数据查询操作
6.2 数据更新操作
6.3 数据维护操作
7.总结
8.参考文献
声明:该数据库课程设计报告为本人期末课程作业,禁止转载。
主页:噗-噗
灵魂n连问:
1.数据库的定义是什么?
2.什么是视图?视图的作用是什么?你为何要创建视图?视图属于那种三级模式?二级映像是什么?
3.什么是E-R图?什么是实体属性图?如何合并E-R图?合并为全局E-R图时解决哪些冲突?E-R图的三要素是什么?画出E-R图的步骤是什么?
4.转换为关系模式的原则是什么?多对多联系如何转化为关系模式的?关系模式如何写?
5.数据库设计有哪些阶段?查询(包括多表)、插入、删除、更新的基本语法是啥?
6.三种完整性是什么?他们的定义?主键的定义与作用?什么是外码、码、超码?规范化的过程?
7.如何进行概念结构设计?如何进行逻辑结构设计?
以上为答辩过程中的提问的一些部分基础问题......
注意:图如何放、如何标注?表格如何标注?sql语句运行的顺序是什么?摘要如何写?你开发的是数据库还是系统?
摘要:
高校学籍管理系统在现今的教育环境中具有不可或缺的重要性。本次数据库课程设计致力于构建一个稳健的学籍管理系统数据库,旨在提升学校的运营效率和教学质量。我们采用关系型数据库来存储和管理核心数据,包括学生信息、课程安排、成绩记录以及奖惩情况等。
在实现这一目标的过程中,我们首先通过E-R图对实体及其联系进行了概念结构设计,确保了数据的内在一致性。具体来说,我们设计了以下几个关键数据库表:学生信息表、课程表、成绩表等,并确保了这些表之间的主键和外键关系,从而维护了数据的完整性;并设计视图、分析出关系数据模式进行逻辑结构设计。该数据库不仅支持对学生信息的增删查改操作,还实现了课程的安排与成绩的精确查询,以及对奖惩信息的有效管理。为了确保系统的性能,我们还采取了多种优化措施,如创建视图、优化查询语句、使用触发器和存储过程等。
通过这次课程设计,我们不仅提升了数据库的设计和管理能力,还增强了应用程序的开发技能。高校学籍管理系统的应用将极大地提高高校的管理效率、简化维护流程、降低运营成本,并提高数据准确性。此外,我们还学习了如何运用先进的软件开发工具和数据库来实现实际的应用系统。
关键词:高校学籍管理系统;关系型数据库;学生信息;课程安排;成绩记录;奖惩情况;E-R图;数据完整性;查询优化;触发器;存储过程;管理效率;维护流程;运营成本;数据准确性。
随着互联网的发展,传统的高校学籍管理系统存在效率低下、易出错等问题,已无法满足现代教育的需求。作为学校,除了育人,就是育知,高校学籍管理系统是计算机化是整个学校教务管理中的重要一部分,介于它的重要性,学生学籍管理系统的开发与应用就逐渐提入议程,并占着越来越重要的份量。高校学籍管理是学校管理的重要组成部分,涉及到学生的入学、选课、考试、成绩等多个环节。因此,开发一个高效、稳定的高校学籍管理系统,可以大大提高学籍管理的效率和质量。
1.Windows 11系统
2.Navicat Premium 12
3.MySQL Serve 5.7
高校学籍管理系统开发的目的是为了提高学校学生学籍管理工作的效率,实现学生信息关系的科学化和规范化。通过该系统,学校可以对学生各种信息进行日常管理,如查询、修改等,针对这些要求设计了学生学籍管理系统。其任务主要包括:收集并整理学生个人信息、成绩记录、奖惩记录等;提供查询和修改功能;实现学籍变动管理等任务。
高校学籍管理对高校来说是不可或缺的一部分,它对于学校管理人员、授课教师或者学生都非常重要,所以高校学籍管理系统应该能够为用户提供足够的信息和信息的查询手段。开发高校学籍管理系统不仅仅能提高管理效率、提升服务质量更多的是为了增强安全性,保障师生权益。
本课程设计主要分为八个部分,每一部分组织结构如下:
第一部分 概述。这一部分主要介绍了开发高校学籍管理系统背景、目的、开发环境以及任务,简要说明了开发该系统的重要意义。
第二部分 需求分析。这一部分根据实际情况进行需求分析,主要给出用户需求、功能需求以及其他需求。
第三部分 概念结构设计。这一部分根据要求首先抽象出该管理系统的实体,然后分析实体与实体之间的联系,再根据抽象出的实体、实体间的联系画出E-R图及总E-R图。
第四部分 逻辑结构设计。这一部分主要根据Navicat12中的关系数据模型以及总E-R图写出关系模式及数据字典。
第五部分 数据库物理设计与实施。这一部分主要介绍了数据库的设计以及为实现某些功能而创建视图、触发器、存储过程。
第六部分 访问数据库。给出了数据库的具体功能实现过程,选取了具有代表性的功能进行介绍并进行数据库的维护。
第七部分 总结。这部分主要写了我在编写数据库课程设计中遇到的问题、难点以及解决方案,及在本次课程设计中的收获。
第八部分 参考文献。最后一部分给出了我在写课程设计时使用到的参考书、资料、网站等。
(1)学生需求
学生一般利用此系统进行学号密码登录,查询自己的成绩、课程信息等
(2)管理员需求
管理员权限最大,可以对学生、课程等许多信息进行处理,包括对学生学籍信息的增删改查,以及对课程信息的修改或者系统出现问题时的一些相关维护。
本高校学籍管理系统具体功能有实现对学生的基本信息、班级、专业、院系等的查询、修改和删除等功能以及对课程、学生成绩信息管理、实现学生的奖惩信息管理等,具体实现如下:
(1)实现学生信息、班级、院系、专业等的管理;
(2)实现课程、学生成绩信息等的管理;
(3)实现学生的奖惩信息的管理;
(4)创建规则用于限制性别项只能输入“男”或“女”;
(5)创建视图查询各个学生的学号、姓名、班级、专业、院系。
(6)给管理员、学生不同的权限,提高数据安全性;
(7)创建触发器,存储过程,防止数据不一致;
(8)创建存储过程查询指定学生的成绩单。
根据高校学生学籍管理系统的需求,可以抽象出以下实体:
(1)学生信息
(2)班级信息
(3)专业信息
(4)院系信息
(5)课程信息
(6)成绩信息
(7)奖惩信息
(1)学生与班级:一个学生属于一个班级,一个班级有多个学生,所以是 1对多的关系。
(2)学生与专业:一个学生属于一个专业,一个专业有多个学生,所以是 1对多的关系。
(3)学生与院系:一个学生属于一个院系,一个院系有多个学生,所以是1对多的关系。
(4)学生与课程:一个学生选修一门或多门课程,同时课程可被多个学生选择,所以是多对多的关系。
(5)学生与成绩:一个学生的每门课程对应一个成绩,所以是1对1的关系。
(6)学生与奖惩:一个学生可能获得一个或多个奖惩,每个奖惩记录只属于 一个学生,所以是1对多的关系。
(7)班级与专业:一个班级属于一个专业,一个专业有多个班级,所以是1对多的关系。
(8)班级与院系:一个班级属于一个院系,一个院系有多个班级,所以是1对多的关系。
(9)专业与院系:一个专业属于一个院系,一个院系有多个专业,是1对多
(10)课程与成绩:课程成绩属于一个或多个学生,一个学生有一个课程成绩,所以是1对多的关系。
3.3.1 学生与班级
图1 学生-班级E-R图
3.3.2 学生与专业
图2 学生-专业E-R图
3.3.3 学生与院系
图3 学生-院系E-R图
3.3.4 学生与课程
图4 学生-课程E-R图
3.3.5 学生与成绩
图5 学生-成绩E-R图
3.3.6 学生与奖惩
图6 学生-奖惩E-R图
3.3.7 班级与专业
图7 班级-专业E-R图
3.3.8 班级与院系
图8 班级-院系E-R图
3.3.9 课程与院系
3.3.10 专业与院系
图10 专业-院系E-R图
3.3.11 课程与成绩
图11 课程-成绩E-R图
(1)学生(学号,姓名,性别,班级号,专业号,院系号,民族,年龄,出生日期,家庭地址,入学时间)
(2)班级(班级号,专业号,院系号,班级名称,人数)
(3)专业(专业号,院系号,专业名称)
(4)院系(院系号,院系名称)
(5)课程(课程号,课程名,学分,学时)
(6)课程成绩(课程号,学号,成绩)
(7)奖惩(奖惩号,学号,专业号,院系号,奖惩名称,奖惩方案)
表1 学生数据字典
属性名 |
存储代码 |
类型 |
长度 |
备注 |
学号 |
id |
varchar |
20 |
学生号 |
姓名 |
name |
varchar |
20 |
学生姓名 |
性别 |
sex |
char |
2 |
学生性别 |
班级号 |
Cid |
varchar |
30 |
学生所在班级号 |
专业号 |
Mid |
varchar |
30 |
学生所属专业号 |
院系号 |
Did |
varchar |
30 |
学生所在院系号 |
民族 |
nation |
varchar |
20 |
学生所属民族 |
年龄 |
age |
int |
学生的年龄 |
|
出生日期 |
birthday |
date |
学生的出生日期 |
|
家庭地址 |
location |
varchar |
20 |
学生的家庭地址 |
入学时间 |
enrol |
date |
学生的入学时间 |
表2 院系数据字典
属性名 |
存储代码 |
类型 |
长度 |
备注 |
院系号 |
Did |
varchar |
30 |
院系编号 |
院系名称 |
Dname |
varchar |
30 |
院系名称 |
表3 专业数据字典
属性名 |
存储代码 |
类型 |
长度 |
备注 |
专业号 |
Mid |
varchar |
30 |
专业编号 |
院系号 |
Did |
varchar |
30 |
院系编号 |
专业名称 |
Mname |
varchar |
30 |
专业名称 |
表4 班级数据字典
属性名 |
存储代码 |
类型 |
长度 |
备注 |
班级号 |
Cid |
varchar |
30 |
班级编号 |
专业号 |
Mid |
varchar |
30 |
专业编号 |
院系号 |
Did |
varchar |
30 |
院系编号 |
班级名称 |
Cname |
varchar |
30 |
班级名称 |
班级人数 |
Cnumber |
int |
班级人数 |
表5 课程数据字典
属性名 |
存储代码 |
类型 |
长度 |
备注 |
课程号 |
Kid |
varchar |
30 |
课程编号 |
课程名称 |
Kname |
varchar |
30 |
课程名称 |
学分 |
Kcredit |
int |
该课程的学分 |
|
学时 |
Kperiod |
int |
该课程的学时 |
表6 成绩数据字典
属性名 |
存储代码 |
类型 |
长度 |
备注 |
课程号 |
Kid |
varchar(30) |
30 |
课程编号 |
学号 |
id |
varchar(20) |
20 |
学号 |
成绩 |
Ggrade |
int |
成绩 |
表7 奖惩数据字典
属性名 |
存储代码 |
类型 |
长度 |
备注 |
奖惩号 |
Aid |
varchar |
20 |
奖惩号 |
学号 |
id |
varchar |
20 |
学号 |
专业号 |
Mid |
varchar |
30 |
专业编号 |
院系号 |
Did |
varchar |
30 |
院系编号 |
奖惩名称 |
Aname |
varchar |
30 |
奖惩名称 |
奖惩方案 |
Aproject |
varchar |
100 |
奖惩方案 |
(1)创建学生基本信息视图,实现查询各个学生的学号、姓名、班级编号、专业编号、院系编号
(2)创建学生成绩视图,实现查询各个学生的学号、姓名、课程、成绩
(3)创建学生奖惩视图,实现查询各个学生的学号、姓名、班级、专业、院系、奖惩号、奖惩名、奖惩方案
创建数据库,数据库名为course
图13 数据库的创建
相关MySQL语句为:
create database course;
use course;
5.2.1 student表的创建
表8 student表
列名 |
数据类型 |
约束 |
说明 |
id |
varchar(20) |
primary key |
学号 |
name |
varchar(20) |
姓名 |
|
sex |
char(2) |
性别 |
|
Cid |
varchar(30) |
foreign key |
班级编号 |
Mid |
varchar(30) |
foreign key |
专业编号 |
Did |
varchar(30) |
foreign key |
院系编号 |
nation |
varchar(20) |
民族 |
|
age |
int |
年龄 |
|
birthday |
date |
出生日期 |
|
location |
varchar(20) |
家庭地址 |
|
enrol |
date |
入学时间 |
相关MYSQL语句:
CREATE TABLE Student(
id VARCHAR(20) PRIMARY KEY ,
name VARCHAR(20) ,
sex CHAR(1) CHECK(sex IN('男','女')), 改为CHAR(1),存储单个字符
Cid VARCHAR(30) ,
Mid VARCHAR(30) ,
Did VARCHAR(30) ,
nation VARCHAR(20) ,
age INT ,
birthday DATE ,
location VARCHAR(20) ,
enrol DATE ,
FOREIGN KEY (Cid) REFERENCES Class (Cid)
ON DELETE CASCADE
/*当删除Class表中元组时,级联删除Student表中相应的元组*/
ON UPDATE CASCADE,
/*当更新Class表中元组时,级联更新Student表中相应的元组*/
FOREIGN KEY (Mid) REFERENCES Major (Mid)
ON DELETE NO ACTION
/*当删除Major表中的元组造成与Student表不一致时,拒绝删除*/
ON UPDATE NO ACTION,
/*当更新Major表中的元组造成与Student表不一致时,拒绝更新*/
FOREIGN KEY (Did) REFERENCES Department (Did)
ON DELETE NO ACTION
/*当删除Department 中的元组造成与Student表不一致时,拒绝删除*/
ON UPDATE NO ACTION
/*当更新Department 中的元组造成与Student表不一致时,拒绝更新*/
);
5.2.2 department表
表9 department表
列名 |
数据类型 |
约束 |
说明 |
Did |
varchar(30) |
primary key |
院系编号 |
Dname |
varchar(30) |
院系名称 |
相关MYSQL语句:
create table Department(
Did varchar(30) primary key,
Dname varchar(30)
);
5.2.3 Major表
表10 major表
列名 |
数据类型 |
约束 |
说明 |
Mid |
varchar(30) |
primary key |
专业编号 |
Did |
varchar(30) |
foreign key |
院系编号 |
Mname |
varchar(30) |
专业名称 |
相关MYSQL语句:
create table Major(
Mid varchar(30) primary key ,
Did varchar(30) ,
Mname varchar(30) ,
foreign key (Did) references Department (Did)
on delete cascade
/*当删除Department表中元组时,级联删除Major表中相应的元组*/
on update cascade
/*当更新Department表中Did时,级联更新Major表中相应的元组*/
);
5.2.4 Class表
表11 class表
列名 |
数据类型 |
约束 |
说明 |
Cid |
varchar(30) |
primary key |
班级编号 |
Mid |
varchar(30) |
foreign key |
专业编号 |
Did |
varchar(30) |
foreign key |
院系编号 |
Cname |
varchar(30) |
班级名称 |
|
Cnumber |
int |
班级人数 |
相关MYSQL语句:
create table Class(
Cid varchar(30) primary key ,
Mid varchar(30) ,
Did varchar(30) ,
Cname varchar(30) ,
Cnumber int not null,
foreign key (Did) references Department (Did)
on delete cascade
/*当删除Department表中元组时,级联删除Class表中相应的元组*/
on update cascade,
/*当更新Department表中Did时,级联更新Class表中相应的元组*/
foreign key (Mid) references Major (Mid)
on delete no action
/*当删除Major表中的元组造成与Class表不一致时,拒绝删除*/
on update no action
/*当更新Major表中的元组造成与Class表不一致时,拒绝更新*/
);
5.2.5 Course表
表12 course表
列名 |
数据类型 |
约束 |
说明 |
Kid |
varchar(30) |
primary key |
课程编号 |
Kname |
varchar(30) |
课程名称 |
|
Kcredit |
int |
学分 |
|
Kperiod |
int |
学时 |
相关MYSQL语句:
create table Course(
Kid varchar(30) primary key ,
Kname varchar(30) ,
Kcredit int ,
Kperiod int
);
5.2.6 Grade表
表13 grade表
列名 |
数据类型 |
约束 |
说明 |
Kid |
varchar(30) |
primary key |
课程编号 |
id |
varchar(20) |
primary key |
学号 |
Ggrade |
int |
成绩 |
相关MYSQL语句:
create table Grade(
Kid varchar(30) ,
id varchar(20) ,
Ggrade int ,
primary key(Kid,id),
foreign key (Kid) references Course (Kid)
on delete cascade
/*当删除Course 表中元组时,级联删除Grade表中相应的元组*/
on update cascade,
/*当更新Course 表中元组时,级联更新Grade表中相应的元组*/
foreign key (id) references Student (id)
on delete cascade
/*当删除Student 表中元组时,级联删除Grade表中相应的元组*/
on update cascade
/*当更新Student 表中元组时,级联更新Grade表中相应的元组*/
);
5.2.7 Award_punish表
表14 award_punish表
列名 |
数据类型 |
约束 |
说明 |
Aid |
varchar(20) |
primary key |
奖惩号 |
id |
varchar(20) |
foreign key |
学号 |
Mid |
varchar(30) |
foreign key |
专业编号 |
Did |
varchar(30) |
foreign key |
院系编号 |
Aname |
varchar(30) |
奖惩名称 |
|
Aproject |
varchar(100) |
奖惩方案 |
相关MYSQL语句:
create table Award_punish(
Aid varchar(20) primary key ,
id varchar(20) ,
Mid varchar(30) ,
Did varchar(30) ,
Aname varchar(30) ,
Aproject varchar(100) ,
foreign key (id) references Student (id)
on delete cascade
/*当删除Student 中元组时,级联删除Award_punish表中相应的元组*/
on update cascade,
/*当更新Student 中元组时,级联更新Award_punish表中相应的元组*/
foreign key (Mid) references Major (Mid)
on delete no action
/*当删除Major 中的元组造成与Award_punish表不一致时,拒绝删除*/
on update no action,
/*当更新Major 中的元组造成与Award_punish表不一致时,拒绝更新*/
foreign key (Did) references Department (Did)
on delete no action
/*当删除Department中的元组造成与Award_punish表不一致时,拒绝删除*/
on update no action
/*当更新Department 表中的元组造成与Award_punish表不一致时,拒绝更新*/
);
(1)创建学生基本信息视图,实现查询各个学生的学号、姓名、班级编号、专业编号、院系编号,MYSQL语句:
create view A_Student(id,name,Cname,Mname,Dname)
as
select id,name,Cname,Mname,Dname
from Student,Class,Major,Department
where Class.Did = Department.Did
and Class.Mid = Major.Mid
and Student.Did = Department.Did
and Student.Mid = Major.Mid
with check option;
运行结果如下(以部分图为例):
(2)创建学生成绩视图,实现查询各个学生的学号、姓名、课程、成绩,MySQL语句如下:
create view B_Grade(id,name,Kname,Ggrade)
as
select Student.id,name,Kname,Ggrade
from Student,Grade,Course
where Student.id = Grade.id
and Grade.Kid = Course.Kid
with check option;
运行结果如下(以部分图为例):
图15 学生成绩视图
(3)创建学生奖惩视图,实现查询各个学生的学号、姓名、班级、专业、院系、奖惩号、奖惩名、奖惩方案,MySQL语句如下:
Create view C_Award_punish
(id,name,Cname,Mname,Dname,Aid,Aname,Aproject)
as
select Student.id,name,Cname,Mname,Dname,Aid,Aname,Aproject
from Student,Class,Major,Department,Award_punish
where Student.id = Award_punish.id
and Award_punish.Mid = Major.Mid
and Award_punish.Did = Department.Did
and Class.Did = Department.Did
and Class.Mid = Major.Mid
with check option;
图16 学生奖惩视图
(1)创建触发器,当增加学生班级信息时自动修改相应班级学生人数,MySQL语句如下:
DELIMITER $
CREATE TRIGGER insert_stu
AFTER INSERT ON Student
FOR EACH ROW
BEGIN
UPDATE Class
SET Cnumber = Cnumber + 1
WHERE Cid = NEW.Cid;
END $
DELIMITER ;
如下图:
图17 触发器insert_stu的创建
验证该操作:
未增加时,MYSQL语句和结果如图:
select * from Class where Cname = '软工一班';
图18 验证操作1
增加时,MYSQL语句和结果如图:
insert into Student values('221073075','普鹏磊','男','RG1','RJ11','RJ111','汉族',19,'2003-09-08','宇宙沈丘','2022-09-01');
select * from Class where Cname = '软工一班';
图19 验证操作2
(2)创建触发器,当删除学生班级信息时自动修改相应班级学生人数,MySQL语句如下:
DELIMITER $
CREATE TRIGGER delete_stu
AFTER DELETE ON Student
FOR EACH ROW
BEGIN
UPDATE Class
SET Cnumber = Cnumber - 1
WHERE Cid = OLD.Cid;
END$;
图20 触发器delete_stu的创建
验证该操作:未删除时,MYSQL语句和结果如图:
select * from Class where Cname = '软工一班';
图21 验证操作1
删除时,MYSQL语句和结果如图:
delete from Student where name = '普鹏磊';
select * from Class where Cname = '软工一班';
图22 验证操作2
(3)创建触发器,当修改学生班级信息时自动修改相应班级学生人数,MySQL语句如下:
DELIMITER $
CREATE TRIGGER update_stu
AFTER UPDATE ON Student
FOR EACH ROW
BEGIN
UPDATE Class
SET Cnumber = Cnumber - 1
WHERE Cid = OLD.Cid;
-- 增加新班级的学生人数
UPDATE Class
SET Cnumber = Cnumber + 1
WHERE Cid = NEW.Cid;
END$
DELIMITER ;
结果如下图
图23 触发器update_stu的创建
验证该操作:未修改时,MYSQL语句和结果如图
select * from Student where name = '王铁柱';
select * from Class where Cname = '软工一班';
select * from Class where Cname = '英语一班';
图24 验证操作 1
图25 验证操作2
删除时,MYSQL语句和结果如图:
update Student set Cid = 'YY1' where name = '王铁柱';
select * from Student where name = '王铁柱';
select * from Class where Cname = '软工一班';
select * from Class where Cname = '英语一班';
图27 验证操作4
创建存储过程查询指定学生的成绩单
相关MYSQL语句如下:
DELIMITER $
CREATE PROCEDURE pro_grade(
IN p_id VARCHAR(30),
IN p_name VARCHAR(30)
)
BEGIN
IF p_id IS NULL OR p_name IS NULL THEN
SELECT '请输入学号与姓名!';
ELSEIF (
(SELECT name FROM Student WHERE id = p_id) != p_name
OR (SELECT id FROM Student WHERE name = p_name) != p_id)
THEN
SELECT '输入有误!';
ELSE
SELECT Student.id, name, Kname, Ggrade
FROM Student, Grade, Course
WHERE Student.id = Grade.id
AND Grade.Kid = Course.Kid
AND name = p_name;
END IF;
END $
DELIMITER ;
验证,查询王铁柱这个学生,如图:
图28 验证存储操作
(1)查询年龄小于20、班级为软工一班的学生的基本信息
MYSQL语句:
select * from Student where age < 20 and Cid = 'RG1';
运行结果:
图29 查询操作1
(2)查询选修了“SJK3”课程的学生的学号、姓名、成绩,其中按照成绩从大到小的顺序排列
MYSQL语句:
select Student.id,name,Ggrade from Student,Grade
where Student.id = Grade.id and Grade.Kid = 'SJK3'
order by Ggrade desc;
运行结果如图(部分为例):
图30 查询操作2
(3)查询获得“三好学生”称号的学生的学号、姓名、专业、院系MYSQL语句:
select Student.id '学号',name '姓名',Mname '专业名称',Dname '院系名称'
from Student,Major,Department,Award_punish
where Student.id = Award_punish.id
and Major.Mid = Award_punish.Mid
and Department.Did = Award_punish.Did
and Aname = '三好学生';
(1)将家庭地址为“江苏南京”的学生的家庭地址更改为“中国沈丘”
MYSQL语句:
update Student set location = '中国沈丘' where location = '江苏南京';
图33 更新后
(2)将课程“数据库”的学时更改为99
MYSQL语句:
update Course set Kperiod = 99 where Kname = '数据库' ;
如图所示:
图35 更新后
(1)插入操作:将新数据插入到数据库表中,相关mysql语句如下:
insert into Student values('221073074','xw','男','RG1','RJ11','RJ111','汉族',19,'2004-11-03','河南周口','2022-09-01');
结果下如图所示:
图36 维护操作之插入
(2)删除操作:从数据库表中删除数据,相关mysql语句如下:
delete from student where id='221073074';
图37 维护操作之删除
(3)数据备份与恢复,终端进入mysql安装目录下的bin目录下,即D:\LeStoreDownload\MySQL Server 5.7\bin下运行下列语句:
mysqldump -u root -p course -R>221075075普鹏磊
mysql -u root -p ppl <221075075普鹏磊
通过这次课程设计,我更加深入地了解了数据库有关知识的基本概念和一些基本的操作并体会到了流程和数据的重要性,进行数据库设计之前,需要对开发的系统进行分析,明确数据的需求,并进行可行性研究,只有这样,才能设计出合理、高效的数据库结构。
遇到的问题和解决方法:在课程设计过程中,我遇到了许多问题。例如,在画E-R图时,我总是出现缺少某一实体,而且在画全局E-R图时,实体与实体之间的关系容易搞混,但在练习和查阅资料后,我逐渐掌握了画E-R图的技巧和方法。此外,我在创建基本表时,先创建了student表导致出错,但院系号、专业号、班级号是学生表(student)的外键,因此应该先创建院系表(department)、专业表(major)、班级表(calss)再创建学生表(student),通过这个错误,我意识到了在数据库设计中,外键的约束是非常重要的。“ON DELETE CASCADE ON UPDATE CASCADE,”在级联删除时,前面的ON DELETE CASCADE加上了逗号; 在创建存储过程时,一开始使用了join on进行连接,但是出现报错,后面加入limit 1仍然不行,经过查询网上的资源后解决了这个问题。
在课程设计过程中,我遇到了许多不懂的问题。但是,通过上网查询资料、查看参考书询问同学等,我逐渐解决了这些问题。同时,也使我对常用画图软件Visio、Word文档编辑等操作掌握得更加熟练。总之,这次课程设计让我更加巩固了数据库的基础知识,锻炼了自己的动手能力!
[1] 数据库:数据库设计(需求,设计,运行,维护)-CSDN博客
[2] 王珊.《数据库系统概论》(第6版) 高等教育出版社
[3] 文心一言 (baidu.com)
[4] 高校学籍管理系统【数据库设计】2020.7.26_高效学籍管理系统-CSDN博客
到此,课程设计完结。注意排版问题,参考文献我这里写的不仅有参考书,包括网址及其他