熊熊出没 发表于 2024-7-12 08:46:10

MySQL课程设计——浅易学生信息管理体系

一 分析

1.1 体系需求分析

1.1.1 业务分析

学生信息管理体系时面向学生和学校教师的一个多功能数据管理平台。
1.1.2 分析体系

本体系所设计到的用户有学校在校学生、教师,对于不同的用户体系所提供给的功能也有所不同,其中对于学生来说,学生可以通过该体系进行学生基本信息查询、测验成绩查询、选修课程查询、住宿基本信息查询,修改自身部分基本信息,教师可以通过该体系实现对自身数据查询、学生成绩管理等。
1.2 功能模块

1.2.1 学生模块

学生是整个体系的使用者,学生可以通过该体系进行学生基本信息查询、测验成绩查询、选修课程查询、住宿基本信息查询,修改自身部分基本信息。
1.2.2 教师模块

教师是整个体系的使用者,教师可以通过该体系实现对自身数据查询、学生成绩管理等,修改自身部分基本信息。
二 构建模型

2.1 概念模型:ERP模型

学生信息管理体系是学生信息进行一体化管理的体系,它提供了学生学生基本信息管理、课程管理、成绩管理、住宿基本信息管理的功能,因此本体系所对应的实体就有学生、教师、课程、成绩、住宿,该体系的E-R图如下图所示。
https://img-blog.csdnimg.cn/0e48371b6bbb40e29391311f8b04af97.png#pic_center
2.2 数据模型:设计表格

2.2.1 将ERP模型转化为关系模式

按照将E-R图转换为关系模式的规则,将上图所示E-R图转换,得到的关系模式为:
学生(学号,姓名,年岁,院系,专业,住址)
教师(教师编号,教师姓名,教师年岁,教师职位,课程编号)
课程(课程编号,课程名称,开始时间,结束时间)
成绩(成绩编号,学生学号,课程编号,课程名称,学生成绩)
住宿(公寓编号,公寓名称,公寓校区,公寓楼层)
对上述关系模式进行以下优化。“教师”关系中的“教师职位”会出现大量的数据冗余,为了更好体现教师职位和教师之间的关联关系,可以进行拆分成一个职位表;可分出一个“职位”关系,包含“职位编号”和“职位名称”等属性,将“教师”关系中的“教师职位”属性改为“职位编号”。优化后的关系模式为:
学生(学号,姓名,年岁,院系,专业,住址)
教师(教师编号,教师姓名,教师年岁,职位编号,课程编号)
课程(课程编号,课程名称,开始时间,结束时间)
成绩(成绩编号,学生学号,课程编号,课程名称,学生成绩)
住宿(公寓编号,公寓名称,公寓校区,公寓楼层)
职位(职位编号,职位名称)
2.2.2 设计表格

(1)学生实体(学生学号,学生姓名,学生年岁,地点院系,学生专业,学生住址)用于记载保存体系使用用户(学生)的基本信息;该表设计如表2.1所示。
   2.1 学生表字段名数据类型长度是否主键说明stu_idint14是学生表主键stu_namevarchar12否学生姓名stu_ageint2否学生年岁stu_departmentvarcahr10否地点院系stu_majorvarcahr10否学生专业addressvarcahr255否学生住址 (2)教师实体(教师编号,教师姓名,教师年岁,职位编号,课程编号)用于记载保存体系使用用户(教师)的基本信息;该表设计如表2.2所示。
   2.2 教师表字段名数据类型长度是否主键说明t_idint16是教师表主键t_namevarchar12否教师姓名t_ageint2否教师年岁p_idint16否职位编号course_idint16否课程编号 (3)课程实体(课程编号,课程名称,开始时间,结束时间)用于记载保存体系使用用户(学生)的课程信息;该表设计如表2.3所示。
   2.3 课程表字段名数据类型长度是否主键说明c_idint16是课程表主键c_namevarchar12否课程名称start_timedate否开始时间end_timedate否结束时间 (4)成绩实体(成绩编号,学生学号,课程编号,课程名称,学生成绩)用于记载保存体系使用用户(学生)的成绩信息;该表设计如表2.4所示。
   2.4 成绩表字段名数据类型长度是否主键说明score_idint16是成绩表主键s_idint16否学生学号c_idint16否课程编号c_namevarchar12否课程名称scoreint3否课程成绩 (5)住宿实体(公寓编号,公寓名称,公寓校区,公寓楼层)用于记载保存体系使用用户(学生)的住宿信息;该表设计如表2.5所示。
   2.5 住宿表字段名数据类型长度是否主键说明apartment_idint16是住宿表主键apartment_namevarchar12否公寓名称apartment_campusvarchar8否公寓校区apartment_floorint2否公寓楼层 (6)职位实体(职位编号,职位名称)用于记载保存体系使用用户(教师)的职位信息;该表设计如表2.6所示。
   2.6 职位表字段名数据类型长度是否主键说明position_idint16是职位表主键position_namevarchar12否职位名称 三 创建表格

3.1 学生表创建

在这create table student
(
​    stu_idint(14) not null primary key auto_increment comment '学生表主键',

​    stu_namevarchar(12) comment '学生姓名',

​    stu_ageint(2) comment '学生年龄',

​    stu_departmentvarchar(10) comment '所在院系',

​    stu_majorvarchar(10) comment '学生专业',

​    addressvarchar(255) comment '学生住址'

) character set utf8;
3.2 教师表创建

create table teacher
(
​    t_idint(16) not null primary key auto_increment comment '教师表主键',

​    t_namevarchar(12) comment '教师姓名',

​    t_ageint(2) comment '教师年龄',

​    p_idint(16) comment '职位编号',

​    course_idint(16) comment '课程编号'

) character set utf8;
3.3 课程表创建

create table course
(

​    c_idint(16) not null primary key auto_increment comment '课程表主键',

​    c_namevarchar(12) comment '课程名称',

​    start_timedate comment '开始时间',

​    end_timedate comment '结束时间'

) character set utf8;
3.4 成绩表创建

create table score
(

​    score_idint(16) not null primary key auto_increment comment '创建表主键',

​    s_idint(16) comment '学生学号',

​    c_idint(16) comment '课程编号',

​    c_namevarchar(12) comment '课程名称',

​    scoreint(3) comment '课程成绩'

) character set utf8;
3.5 住宿表创建

create table apartment
(

​    apartment_idint(16) not null primary key auto_increment comment '住宿表主键',

​    apartment_namevarchar(12) comment '公寓名称',

​    apartment_campusvarchar(8) comment '公寓校区',

​    apartment_floorint(2) comment '公寓楼层'

) character set utf8;
3.6 职位表创建

create table position
(

​    position_idint(16) not null primary key auto_increment comment '职位表主键',

​    position_namevarchar(12) comment '职位名称'

) character set utf8;
四 插入数据

4.1 学生表数据添加

INSERT INTO student (stu_id, stu_name, stu_age, stu_department, stu_major, address)

VALUES (101, '张三', 18, '计算机', '软件工程', '湖北武汉'),

​      (102, '李四', 21, '文新', '汉语言', '湖南长沙')
4.2 教师表数据添加

INSERT INTO teacher (t_id, t_name, t_age, p_id, course_id)

VALUES (201, '张三', 31, 601, 301),

​       (202, '李四', 32, 602, 602)
4.3 课程表数据添加

INSERT INTO course (c_id, c_name, start_time, end_time)

VALUES (301, 'Java', '2022-03-15', '2022-06-15'),

​      (302, 'Python', '2021-09-16', '2021-12-16')
4.4 成绩表数据添加

INSERT INTO score (score_id, s_id, c_id, c_name, score)

VALUES (401, 101, 301, 'Java', 95),

​       (402, 102, 302, 'Python', 87)
4.5 住宿表数据添加

INSERT INTO apartment (apartment_id, apartment_name,

apartment_campus, apartment_floor)

VALUES (501, '楷苑', '龙山校区', 6),

​       (502, '桃苑', '龙山校区', 12);
4.6 职位表数据添加

INSERT INTO position (position_id, position_name)

VALUES (601, '讲师'),

​       (602, '教授')
五 维护数据

5.1 查询学生全部信息

select * from student;
https://img-blog.csdnimg.cn/1297d273e000423fbfbb968ed59126e1.png#pic_center
5.2 查询老师全部信息

select * from teacher;
https://img-blog.csdnimg.cn/9deb2193d1504475afb04ff2d3491d6a.png#pic_center
5.3 查询选课了Java科目标学生信息

select s.*,sc.score,c.c_name

from student s

​         join score sc on s.stu_id = sc.s_id

​         join course c on sc.c_id = c.c_id where c.c_name='Java';
https://img-blog.csdnimg.cn/3fdbf7e30a8b4839a51d38969358b2ff.png#pic_center
5.4 对应科目标老师信息

select t.*, c.c_id, c.c_name

from teacher t

​         join course c on t.course_id = c.c_id;
https://img-blog.csdnimg.cn/36f504d0bfd846279fb88e17976fd271.png#pic_center
5.5 查询学号为102的学生选择Python课程

select s.*, c.c_name

from student s

​         join score sc on s.stu_id = sc.s_id

​         join course c on sc.c_id = c.c_id

where s.stu_id = 102

and c.c_name = 'Python';
https://img-blog.csdnimg.cn/d18919ed5b5a4e1bbabf920ef78646e1.png#pic_center
5.6 查询年岁大于20岁的学生信息

select *

from student

where stu_age > 20;
https://img-blog.csdnimg.cn/2f368b21ebc348c0a9eab53c5a6f81b7.png#pic_center

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: MySQL课程设计——浅易学生信息管理体系