目录
- 【手摸手教学】创建SpringBoot项目完成简单的接口访问
- 【手摸手教学】SpringBoot集成lombok
- 【手摸手教学】从零开始,轻松设计学生信息管理系统表结构
- 【手摸手教学】拯救开发烦恼,SpringBoot集成Swagger,快速生成API文档
- 【手摸手教学】SpringBoo集成shiro+redis,实现JWT鉴权–(未完成)
- 【手摸手教学】实现用户角色管理–(未完成)
- 【手摸手教学】老师信息管理–(未完成)
- 【手摸手教学】学生信息管理–(未完成)
简介
简单的整一下数据表结构吧,主体功能:用户管理,角色管理,学生管理,班级管理,老师管理,课程管理 在项目开始真正开始之前 我们必须把表设计好,这个是基石,没有整好的后面的工作也很难开展
表的简单设计
- 用户管理+角色管理就是我们权限管理那一套包含:user,role,user_role 3张表这里我就没有设计权限那一套了,后面我们在补充
-- 用户表
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '用户ID',
`username` varchar(50) NOT NULL COMMENT '用户名',
`password` varchar(255) NOT NULL COMMENT '用户密码',
`email` varchar(50) DEFAULT NULL COMMENT '邮箱',
`phone` varchar(20) DEFAULT NULL COMMENT '电话',
`status` tinyint(1) NOT NULL DEFAULT '0' COMMENT '用户状态,0:正常,1:禁用',
`create_time` datetime NOT NULL COMMENT '创建时间',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `username_UNIQUE` (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户表';
-- 角色表
CREATE TABLE `role` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '角色ID',
`name` varchar(50) NOT NULL COMMENT '角色名称',
`description` varchar(255) DEFAULT NULL COMMENT '角色描述',
`create_time` datetime NOT NULL COMMENT '创建时间',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='角色表';
-- 用户关联角色表
CREATE TABLE `user_role` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '关联ID',
`user_id` int(11) NOT NULL COMMENT '用户ID',
`role_id` int(11) NOT NULL COMMENT '角色ID',
`create_time` datetime NOT NULL COMMENT '创建时间',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户关联角色表';
- 学生管理+班级管理 ,学生和班级是一个1对1的关系,这里就不想复杂了,不考虑学生可以加入多个班级的情况了
-- 班级表
CREATE TABLE class (
id INT PRIMARY KEY AUTO_INCREMENT COMMENT '班级ID',
name VARCHAR(255) NOT NULL COMMENT '班级名称',
create_time DATETIME NOT NULL COMMENT '创建',
update_time DATETIME NOT NULL COMMENT '更新'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='班级表';
-- 学生表
CREATE TABLE `student` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '学生ID',
`name` varchar(50) NOT NULL COMMENT '姓名',
`class_id` INT(11) NOT NULL COMMENT '班级id' ,
`gender` varchar(10) NOT NULL COMMENT '性别',
`birthday` date NOT NULL COMMENT '出生日期',
`address` varchar(100) DEFAULT NULL COMMENT '家庭地址',
`phone` varchar(20) DEFAULT NULL COMMENT '联系电话',
`email` varchar(50) DEFAULT NULL COMMENT '电子邮箱',
`create_time` datetime NOT NULL COMMENT '创建时间',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='学生表';
- 讲师管理+课程管理,讲师与课程直接是多对多关系,老师可以教多门不同课程,课程也可以由不同的老师来上
-- 讲师表
CREATE TABLE teacher (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(255) NOT NULL COMMENT '教师姓名',
gender VARCHAR(10) NOT NULL COMMENT '教师性别',
create_time DATETIME NOT NULL COMMENT '创建时间',
update_time DATETIME NOT NULL COMMENT '更新时间'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT '教师管理';
-- 课程表
CREATE TABLE course (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(255) NOT NULL COMMENT '课程名称',
description VARCHAR(1000) COMMENT '课程描述',
create_time DATETIME NOT NULL COMMENT '创建时间',
update_time DATETIME NOT NULL COMMENT '更新时间'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT '课程管理';
-- 讲师课程关系表
CREATE TABLE teacher_course (
teacher_id INT NOT NULL,
course_id INT NOT NULL,
PRIMARY KEY (teacher_id, course_id),
FOREIGN KEY (teacher_id) REFERENCES teacher(id),
FOREIGN KEY (course_id) REFERENCES course(id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT '讲师课程关系表';
在这个示例中,teacher 表表示教师,包含教师姓名、年龄、性别、创建时间和更新时间等基本信息,course 表表示课程,包含课程名称、学分、创建时间和更新时间等基本信息,teacher_course 表是中间表,用于建立教师与课程的多对多关系。它包含了 teacher_id 和 course_id 两个外键,分别指向 teacher 表和 course 表中的对应记录,以及一个联合主键,保证了每个教师最多对一个课程的关联只能出现一次。
当需要查询某个教师所教授的课程时,可以通过 teacher_course 表进行关联查询,如下所示:
SELECT c.name as course_name
FROM teacher t
INNER JOIN teacher_course tc ON t.id = tc.teacher_id
INNER JOIN course c ON tc.course_id = c.id
WHERE t.name = '某个教师的姓名';
总结
过程就是这么个过程,后面外面就在数据库中把表执行一下就好了,后面我们在整一下SpringBoot,建一些实体类
sql 文件地址:https://download.csdn.net/download/qq_20067575/87457831