feat: 项目整体提交
- 更新项目配置文件 - 更新API文档 - 更新数据库文档 - 优化Redis配置 - 优化课程任务服务
This commit is contained in:
145
数据库.md
Normal file
145
数据库.md
Normal file
@ -0,0 +1,145 @@
|
||||
# 数据库设计文档
|
||||
|
||||
## 1. 部门表 (departments)
|
||||
|
||||
用于存储组织的部门信息。
|
||||
|
||||
```sql
|
||||
CREATE TABLE departments (
|
||||
id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
||||
name VARCHAR(100) NOT NULL COMMENT '部门名称',
|
||||
description TEXT DEFAULT NULL COMMENT '部门描述',
|
||||
created_at BIGINT NOT NULL COMMENT '创建时间(时间戳)',
|
||||
updated_at BIGINT NOT NULL COMMENT '更新时间(时间戳)'
|
||||
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT ='部门表';
|
||||
```
|
||||
|
||||
### 字段说明
|
||||
- `id`: 部门ID,自增主键
|
||||
- `name`: 部门名称,不可为空
|
||||
- `description`: 部门描述,可为空
|
||||
- `created_at`: 创建时间,毫秒级时间戳
|
||||
- `updated_at`: 更新时间,毫秒级时间戳
|
||||
|
||||
## 2. 用户表 (users)
|
||||
|
||||
存储系统用户信息,包括教师、管理员等角色。
|
||||
|
||||
```sql
|
||||
CREATE TABLE users (
|
||||
id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
||||
username VARCHAR(50) NOT NULL COMMENT '用户名',
|
||||
email VARCHAR(100) NOT NULL UNIQUE COMMENT '邮箱',
|
||||
password VARCHAR(100) NOT NULL COMMENT '密码',
|
||||
department_id BIGINT NOT NULL COMMENT '所属部门',
|
||||
roles INT NOT NULL COMMENT '角色: 1-教师, 2-普通管理员, 3-沟通联络人, 4-系统管理员',
|
||||
jobs INT NOT NULL COMMENT '岗位: 1-课程制作教师, 2-课程购买方项目负责人, 3-课程制作方沟通联络人, 4-系统制作方项目负责人',
|
||||
avatar VARCHAR(255) DEFAULT NULL COMMENT '头像',
|
||||
creator_id BIGINT NOT NULL DEFAULT 1 COMMENT '创建用户的管理员ID',
|
||||
status INT NOT NULL DEFAULT 1 COMMENT '用户状态: 1-正常, 0-禁用',
|
||||
created_at BIGINT NOT NULL COMMENT '创建时间(时间戳)',
|
||||
updated_at BIGINT NOT NULL COMMENT '更新时间(时间戳)',
|
||||
FOREIGN KEY (department_id) REFERENCES departments (id) ON DELETE RESTRICT,
|
||||
INDEX idx_users_department_id (department_id)
|
||||
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT ='用户表';
|
||||
```
|
||||
|
||||
### 字段说明
|
||||
- `id`: 用户ID,自增主键
|
||||
- `username`: 用户名,不可为空
|
||||
- `email`: 邮箱地址,不可为空,唯一索引
|
||||
- `password`: 密码(加密存储),不可为空
|
||||
- `department_id`: 所属部门ID,外键关联departments表
|
||||
- `roles`: 用户角色,整数枚举:
|
||||
- 1: 教师
|
||||
- 2: 普通管理员
|
||||
- 3: 沟通联络人
|
||||
- 4: 系统管理员
|
||||
- `jobs`: 用户岗位,整数枚举:
|
||||
- 1: 课程制作教师
|
||||
- 2: 课程购买方项目负责人
|
||||
- 3: 课程制作方沟通联络人
|
||||
- 4: 系统制作方项目负责人
|
||||
- `avatar`: 用户头像URL,可为空
|
||||
- `creator_id`: 创建该用户的管理员ID
|
||||
- `status`: 用户状态:
|
||||
- 1: 正常
|
||||
- 0: 禁用
|
||||
- `created_at`: 创建时间,毫秒级时间戳
|
||||
- `updated_at`: 更新时间,毫秒级时间戳
|
||||
|
||||
### 索引
|
||||
- 主键索引:`id`
|
||||
- 外键索引:`idx_users_department_id (department_id)`
|
||||
- 唯一索引:`email`
|
||||
|
||||
## 3. 课程任务表 (lesson_tasks)
|
||||
|
||||
存储课程制作任务的信息和进度。
|
||||
|
||||
```sql
|
||||
CREATE TABLE lesson_tasks (
|
||||
id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
||||
course_name VARCHAR(100) NOT NULL COMMENT '课程名称',
|
||||
micro_lesson_name VARCHAR(100) NOT NULL COMMENT '微课名称',
|
||||
user_id BIGINT NOT NULL COMMENT '负责人ID',
|
||||
progress_status INT NOT NULL DEFAULT 0 COMMENT '当前任务进度状态: 0-脚本上传, 1-脚本确认, 2-视频拍摄, 3-后期制作, 4-任务完成',
|
||||
script_upload_time BIGINT DEFAULT NULL COMMENT '脚本上传时间(时间戳)',
|
||||
script_confirm_time BIGINT DEFAULT NULL COMMENT '脚本确认时间(时间戳)',
|
||||
video_capture_time BIGINT DEFAULT NULL COMMENT '视频拍摄时间(时间戳)',
|
||||
video_confirm_time BIGINT DEFAULT NULL COMMENT '视频确认时间(时间戳)',
|
||||
finish_time BIGINT DEFAULT NULL COMMENT '任务完成时间(时间戳)',
|
||||
advise TEXT DEFAULT NULL COMMENT '任务建议或备注',
|
||||
created_at BIGINT NOT NULL COMMENT '创建时间(时间戳)',
|
||||
updated_at BIGINT NOT NULL COMMENT '更新时间(时间戳)',
|
||||
FOREIGN KEY (user_id) REFERENCES users (id) ON DELETE CASCADE,
|
||||
INDEX idx_lesson_tasks_user_id (user_id),
|
||||
INDEX idx_lesson_tasks_progress_status (progress_status)
|
||||
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT ='课程任务表';
|
||||
```
|
||||
|
||||
### 字段说明
|
||||
- `id`: 任务ID,自增主键
|
||||
- `course_name`: 课程名称,不可为空
|
||||
- `micro_lesson_name`: 微课名称,不可为空
|
||||
- `user_id`: 负责人ID,外键关联users表
|
||||
- `progress_status`: 任务进度状态:
|
||||
- 0: 脚本上传
|
||||
- 1: 脚本确认
|
||||
- 2: 视频拍摄
|
||||
- 3: 后期制作
|
||||
- 4: 任务完成
|
||||
- `script_upload_time`: 脚本上传时间,毫秒级时间戳
|
||||
- `script_confirm_time`: 脚本确认时间,毫秒级时间戳
|
||||
- `video_capture_time`: 视频拍摄时间,毫秒级时间戳
|
||||
- `video_confirm_time`: 视频确认时间,毫秒级时间戳
|
||||
- `finish_time`: 任务完成时间,毫秒级时间戳
|
||||
- `advise`: 任务相关的建议或备注,文本字段
|
||||
- `created_at`: 创建时间,毫秒级时间戳
|
||||
- `updated_at`: 更新时间,毫秒级时间戳
|
||||
|
||||
### 索引
|
||||
- 主键索引:`id`
|
||||
- 外键索引:`idx_lesson_tasks_user_id (user_id)`
|
||||
- 普通索引:`idx_lesson_tasks_progress_status (progress_status)`
|
||||
|
||||
## 数据库关系
|
||||
|
||||
1. `users.department_id` -> `departments.id`
|
||||
- 一个部门可以有多个用户
|
||||
- 一个用户只能属于一个部门
|
||||
- 使用RESTRICT约束,防止删除仍有用户的部门
|
||||
|
||||
2. `lesson_tasks.user_id` -> `users.id`
|
||||
- 一个用户可以负责多个课程任务
|
||||
- 一个课程任务只能有一个负责人
|
||||
- 使用CASCADE约束,删除用户时自动删除其负责的课程任务
|
||||
|
||||
## 注意事项
|
||||
|
||||
1. 所有时间戳字段使用BIGINT类型,存储毫秒级时间戳
|
||||
2. 字符编码统一使用utf8mb4,支持完整的Unicode字符集
|
||||
3. 所有表都使用InnoDB引擎,支持事务和外键
|
||||
4. 关键字段都建立了适当的索引以提高查询性能
|
||||
5. 用户密码在存储前需要进行加密处理
|
||||
6. 删除用户时会自动删除其关联的课程任务,但不会影响部门数据
|
||||
Reference in New Issue
Block a user