【手摸手教学】从零开始,轻松设计学生信息管理系统表结构

在这里插入图片描述

目录

  1. 【手摸手教学】创建SpringBoot项目完成简单的接口访问
  2. 【手摸手教学】SpringBoot集成lombok
  3. 【手摸手教学】从零开始,轻松设计学生信息管理系统表结构
  4. 【手摸手教学】拯救开发烦恼,SpringBoot集成Swagger,快速生成API文档
  5. 【手摸手教学】SpringBoo集成shiro+redis,实现JWT鉴权–(未完成)
  6. 【手摸手教学】实现用户角色管理–(未完成)
  7. 【手摸手教学】老师信息管理–(未完成)
  8. 【手摸手教学】学生信息管理–(未完成)

简介

简单的整一下数据表结构吧,主体功能:用户管理,角色管理,学生管理,班级管理,老师管理,课程管理 在项目开始真正开始之前 我们必须把表设计好,这个是基石,没有整好的后面的工作也很难开展

表的简单设计

  1. 用户管理+角色管理就是我们权限管理那一套包含: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对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='学生表';
  1. 讲师管理+课程管理,讲师与课程直接是多对多关系,老师可以教多门不同课程,课程也可以由不同的老师来上
-- 讲师表
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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

纯洁阿运

打赏我的都能暴富

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值