581 lines
21 KiB
Markdown
581 lines
21 KiB
Markdown
|
|
# 盘古用户平台 - 数据库设计文档
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
| 文档信息 | 内容 |
|
|||
|
|
|---------|------|
|
|||
|
|
| **文档版本** | V1.0 |
|
|||
|
|
| **项目名称** | 盘古用户平台(Pangu User Platform) |
|
|||
|
|
| **编写团队** | pangu |
|
|||
|
|
| **创建日期** | 2026-01-31 |
|
|||
|
|
| **数据库** | MySQL 8.0 |
|
|||
|
|
| **字符集** | utf8mb4 |
|
|||
|
|
| **排序规则** | utf8mb4_general_ci |
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 1. 数据库概述
|
|||
|
|
|
|||
|
|
### 1.1 数据库命名
|
|||
|
|
|
|||
|
|
- 数据库名:`pangu_user`
|
|||
|
|
- 表前缀:`pg_`
|
|||
|
|
|
|||
|
|
### 1.2 命名规范
|
|||
|
|
|
|||
|
|
| 类型 | 规范 | 示例 |
|
|||
|
|
|-----|------|------|
|
|||
|
|
| 表名 | 前缀_模块_实体(小写下划线)| pg_user_member |
|
|||
|
|
| 字段名 | 小写下划线 | member_id |
|
|||
|
|
| 主键 | 表名_id 或 id | member_id |
|
|||
|
|
| 外键 | 关联表名_id | school_id |
|
|||
|
|
| 索引 | idx_表名_字段名 | idx_member_phone |
|
|||
|
|
| 唯一索引 | uk_表名_字段名 | uk_member_phone |
|
|||
|
|
|
|||
|
|
### 1.3 公共字段
|
|||
|
|
|
|||
|
|
所有业务表包含以下公共字段:
|
|||
|
|
|
|||
|
|
| 字段名 | 类型 | 说明 |
|
|||
|
|
|-------|------|------|
|
|||
|
|
| create_by | varchar(64) | 创建者 |
|
|||
|
|
| create_time | datetime | 创建时间 |
|
|||
|
|
| update_by | varchar(64) | 更新者 |
|
|||
|
|
| update_time | datetime | 更新时间 |
|
|||
|
|
| del_flag | char(1) | 删除标志(0存在 1删除)|
|
|||
|
|
| remark | varchar(500) | 备注 |
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 2. ER图
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
|
|||
|
|
│ pg_region │◀────────│ pg_school │────────▶│pg_school_ │
|
|||
|
|
│ 区域表 │ 1 n │ 学校表 │ 1 n │grade 学校 │
|
|||
|
|
└─────────────┘ └─────────────┘ │年级关联表 │
|
|||
|
|
│ └──────┬──────┘
|
|||
|
|
│ │
|
|||
|
|
│ │ 1
|
|||
|
|
│ │
|
|||
|
|
▼ ▼ n
|
|||
|
|
┌─────────────┐ ┌─────────────┐
|
|||
|
|
│ pg_student │ │pg_school_ │
|
|||
|
|
│ 学生表 │◀────────│class 学校 │
|
|||
|
|
└──────┬──────┘ n 1 │班级关联表 │
|
|||
|
|
│ └─────────────┘
|
|||
|
|
│ n
|
|||
|
|
│
|
|||
|
|
▼ 1
|
|||
|
|
┌─────────────┐
|
|||
|
|
│ pg_member │
|
|||
|
|
│ 会员表 │
|
|||
|
|
└─────────────┘
|
|||
|
|
|
|||
|
|
┌─────────────┐ ┌─────────────┐
|
|||
|
|
│ pg_grade │ │ pg_class │
|
|||
|
|
│ 年级字典表 │ │ 班级字典表 │
|
|||
|
|
└─────────────┘ └─────────────┘
|
|||
|
|
|
|||
|
|
┌─────────────┐ ┌─────────────┐
|
|||
|
|
│ pg_subject │ │pg_application│
|
|||
|
|
│ 学科字典表 │ │ 应用表 │
|
|||
|
|
└─────────────┘ └──────┬──────┘
|
|||
|
|
│ 1
|
|||
|
|
│
|
|||
|
|
▼ n
|
|||
|
|
┌─────────────┐
|
|||
|
|
│pg_app_api │
|
|||
|
|
│ 应用接口授权 │
|
|||
|
|
└─────────────┘
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 3. 表结构设计
|
|||
|
|
|
|||
|
|
### 3.1 区域表(pg_region)
|
|||
|
|
|
|||
|
|
存储省-市-区层级区域数据。
|
|||
|
|
|
|||
|
|
```sql
|
|||
|
|
CREATE TABLE `pg_region` (
|
|||
|
|
`region_id` bigint NOT NULL AUTO_INCREMENT COMMENT '区域ID',
|
|||
|
|
`parent_id` bigint DEFAULT 0 COMMENT '父区域ID',
|
|||
|
|
`region_name` varchar(100) NOT NULL COMMENT '区域名称',
|
|||
|
|
`region_code` varchar(20) DEFAULT NULL COMMENT '区域编码',
|
|||
|
|
`level` tinyint NOT NULL DEFAULT 1 COMMENT '层级(1省 2市 3区)',
|
|||
|
|
`ancestors` varchar(500) DEFAULT '' COMMENT '祖级列表',
|
|||
|
|
`order_num` int DEFAULT 0 COMMENT '显示顺序',
|
|||
|
|
`status` char(1) DEFAULT '0' COMMENT '状态(0正常 1停用)',
|
|||
|
|
`create_by` varchar(64) DEFAULT '' COMMENT '创建者',
|
|||
|
|
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
|
|||
|
|
`update_by` varchar(64) DEFAULT '' COMMENT '更新者',
|
|||
|
|
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
|
|||
|
|
`del_flag` char(1) DEFAULT '0' COMMENT '删除标志(0存在 1删除)',
|
|||
|
|
PRIMARY KEY (`region_id`),
|
|||
|
|
KEY `idx_parent_id` (`parent_id`)
|
|||
|
|
) ENGINE=InnoDB COMMENT='区域表';
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 3.2 学校表(pg_school)
|
|||
|
|
|
|||
|
|
存储学校基本信息。
|
|||
|
|
|
|||
|
|
```sql
|
|||
|
|
CREATE TABLE `pg_school` (
|
|||
|
|
`school_id` bigint NOT NULL AUTO_INCREMENT COMMENT '学校ID',
|
|||
|
|
`school_code` varchar(32) NOT NULL COMMENT '学校编码',
|
|||
|
|
`school_name` varchar(100) NOT NULL COMMENT '学校名称',
|
|||
|
|
`school_type` char(2) DEFAULT NULL COMMENT '学校类型(01小学 02初中 03高中)',
|
|||
|
|
`region_id` bigint NOT NULL COMMENT '所属区域ID',
|
|||
|
|
`region_path` varchar(200) DEFAULT NULL COMMENT '区域路径(如:湖北省-武汉市-武昌区)',
|
|||
|
|
`address` varchar(255) DEFAULT NULL COMMENT '详细地址',
|
|||
|
|
`contact_person` varchar(50) DEFAULT NULL COMMENT '联系人',
|
|||
|
|
`contact_phone` varchar(20) DEFAULT NULL COMMENT '联系电话',
|
|||
|
|
`status` char(1) DEFAULT '0' COMMENT '状态(0正常 1停用)',
|
|||
|
|
`create_by` varchar(64) DEFAULT '' COMMENT '创建者',
|
|||
|
|
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
|
|||
|
|
`update_by` varchar(64) DEFAULT '' COMMENT '更新者',
|
|||
|
|
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
|
|||
|
|
`del_flag` char(1) DEFAULT '0' COMMENT '删除标志(0存在 1删除)',
|
|||
|
|
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
|
|||
|
|
PRIMARY KEY (`school_id`),
|
|||
|
|
UNIQUE KEY `uk_school_code` (`school_code`),
|
|||
|
|
KEY `idx_region_id` (`region_id`),
|
|||
|
|
KEY `idx_school_name` (`school_name`)
|
|||
|
|
) ENGINE=InnoDB COMMENT='学校表';
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 3.3 年级字典表(pg_grade)
|
|||
|
|
|
|||
|
|
存储年级基础数据。
|
|||
|
|
|
|||
|
|
```sql
|
|||
|
|
CREATE TABLE `pg_grade` (
|
|||
|
|
`grade_id` bigint NOT NULL AUTO_INCREMENT COMMENT '年级ID',
|
|||
|
|
`grade_code` varchar(32) NOT NULL COMMENT '年级编码',
|
|||
|
|
`grade_name` varchar(50) NOT NULL COMMENT '年级名称',
|
|||
|
|
`order_num` int DEFAULT 0 COMMENT '显示顺序',
|
|||
|
|
`status` char(1) DEFAULT '0' COMMENT '状态(0正常 1停用)',
|
|||
|
|
`create_by` varchar(64) DEFAULT '' COMMENT '创建者',
|
|||
|
|
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
|
|||
|
|
`update_by` varchar(64) DEFAULT '' COMMENT '更新者',
|
|||
|
|
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
|
|||
|
|
`del_flag` char(1) DEFAULT '0' COMMENT '删除标志(0存在 1删除)',
|
|||
|
|
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
|
|||
|
|
PRIMARY KEY (`grade_id`),
|
|||
|
|
UNIQUE KEY `uk_grade_code` (`grade_code`)
|
|||
|
|
) ENGINE=InnoDB COMMENT='年级字典表';
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 3.4 班级字典表(pg_class)
|
|||
|
|
|
|||
|
|
存储班级基础数据。
|
|||
|
|
|
|||
|
|
```sql
|
|||
|
|
CREATE TABLE `pg_class` (
|
|||
|
|
`class_id` bigint NOT NULL AUTO_INCREMENT COMMENT '班级ID',
|
|||
|
|
`class_code` varchar(32) NOT NULL COMMENT '班级编码',
|
|||
|
|
`class_name` varchar(50) NOT NULL COMMENT '班级名称',
|
|||
|
|
`order_num` int DEFAULT 0 COMMENT '显示顺序',
|
|||
|
|
`status` char(1) DEFAULT '0' COMMENT '状态(0正常 1停用)',
|
|||
|
|
`create_by` varchar(64) DEFAULT '' COMMENT '创建者',
|
|||
|
|
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
|
|||
|
|
`update_by` varchar(64) DEFAULT '' COMMENT '更新者',
|
|||
|
|
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
|
|||
|
|
`del_flag` char(1) DEFAULT '0' COMMENT '删除标志(0存在 1删除)',
|
|||
|
|
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
|
|||
|
|
PRIMARY KEY (`class_id`),
|
|||
|
|
UNIQUE KEY `uk_class_code` (`class_code`)
|
|||
|
|
) ENGINE=InnoDB COMMENT='班级字典表';
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 3.5 学校年级关联表(pg_school_grade)
|
|||
|
|
|
|||
|
|
学校与年级的多对多关联。
|
|||
|
|
|
|||
|
|
```sql
|
|||
|
|
CREATE TABLE `pg_school_grade` (
|
|||
|
|
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
|||
|
|
`school_id` bigint NOT NULL COMMENT '学校ID',
|
|||
|
|
`grade_id` bigint NOT NULL COMMENT '年级ID',
|
|||
|
|
`order_num` int DEFAULT 0 COMMENT '显示顺序',
|
|||
|
|
`status` char(1) DEFAULT '0' COMMENT '状态(0正常 1停用)',
|
|||
|
|
`create_by` varchar(64) DEFAULT '' COMMENT '创建者',
|
|||
|
|
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
|
|||
|
|
`del_flag` char(1) DEFAULT '0' COMMENT '删除标志(0存在 1删除)',
|
|||
|
|
PRIMARY KEY (`id`),
|
|||
|
|
UNIQUE KEY `uk_school_grade` (`school_id`, `grade_id`),
|
|||
|
|
KEY `idx_school_id` (`school_id`),
|
|||
|
|
KEY `idx_grade_id` (`grade_id`)
|
|||
|
|
) ENGINE=InnoDB COMMENT='学校年级关联表';
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 3.6 学校班级关联表(pg_school_class)
|
|||
|
|
|
|||
|
|
学校年级下班级的关联。
|
|||
|
|
|
|||
|
|
```sql
|
|||
|
|
CREATE TABLE `pg_school_class` (
|
|||
|
|
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
|||
|
|
`school_grade_id` bigint NOT NULL COMMENT '学校年级关联ID',
|
|||
|
|
`class_id` bigint NOT NULL COMMENT '班级ID',
|
|||
|
|
`order_num` int DEFAULT 0 COMMENT '显示顺序',
|
|||
|
|
`status` char(1) DEFAULT '0' COMMENT '状态(0正常 1停用)',
|
|||
|
|
`create_by` varchar(64) DEFAULT '' COMMENT '创建者',
|
|||
|
|
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
|
|||
|
|
`del_flag` char(1) DEFAULT '0' COMMENT '删除标志(0存在 1删除)',
|
|||
|
|
PRIMARY KEY (`id`),
|
|||
|
|
UNIQUE KEY `uk_school_grade_class` (`school_grade_id`, `class_id`),
|
|||
|
|
KEY `idx_school_grade_id` (`school_grade_id`),
|
|||
|
|
KEY `idx_class_id` (`class_id`)
|
|||
|
|
) ENGINE=InnoDB COMMENT='学校班级关联表';
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 3.7 学科表(pg_subject)
|
|||
|
|
|
|||
|
|
存储学科基础数据。
|
|||
|
|
|
|||
|
|
```sql
|
|||
|
|
CREATE TABLE `pg_subject` (
|
|||
|
|
`subject_id` bigint NOT NULL AUTO_INCREMENT COMMENT '学科ID',
|
|||
|
|
`subject_code` varchar(32) NOT NULL COMMENT '学科编码',
|
|||
|
|
`subject_name` varchar(50) NOT NULL COMMENT '学科名称',
|
|||
|
|
`order_num` int DEFAULT 0 COMMENT '显示顺序',
|
|||
|
|
`status` char(1) DEFAULT '0' COMMENT '状态(0正常 1停用)',
|
|||
|
|
`create_by` varchar(64) DEFAULT '' COMMENT '创建者',
|
|||
|
|
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
|
|||
|
|
`update_by` varchar(64) DEFAULT '' COMMENT '更新者',
|
|||
|
|
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
|
|||
|
|
`del_flag` char(1) DEFAULT '0' COMMENT '删除标志(0存在 1删除)',
|
|||
|
|
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
|
|||
|
|
PRIMARY KEY (`subject_id`),
|
|||
|
|
UNIQUE KEY `uk_subject_code` (`subject_code`)
|
|||
|
|
) ENGINE=InnoDB COMMENT='学科表';
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 3.8 会员表(pg_member)
|
|||
|
|
|
|||
|
|
存储前端用户(家长/教师)信息。
|
|||
|
|
|
|||
|
|
```sql
|
|||
|
|
CREATE TABLE `pg_member` (
|
|||
|
|
`member_id` bigint NOT NULL AUTO_INCREMENT COMMENT '会员ID',
|
|||
|
|
`member_code` varchar(32) NOT NULL COMMENT '会员编号',
|
|||
|
|
`phone` varchar(20) NOT NULL COMMENT '手机号',
|
|||
|
|
`password` varchar(100) DEFAULT NULL COMMENT '密码',
|
|||
|
|
`nickname` varchar(50) DEFAULT NULL COMMENT '昵称',
|
|||
|
|
`avatar` varchar(255) DEFAULT NULL COMMENT '头像URL',
|
|||
|
|
`gender` char(1) DEFAULT '0' COMMENT '性别(0未知 1男 2女)',
|
|||
|
|
`birthday` date DEFAULT NULL COMMENT '出生日期',
|
|||
|
|
`identity_type` char(1) NOT NULL DEFAULT '1' COMMENT '身份类型(1家长 2教师)',
|
|||
|
|
`open_id` varchar(100) DEFAULT NULL COMMENT '微信OpenID',
|
|||
|
|
`union_id` varchar(100) DEFAULT NULL COMMENT '微信UnionID',
|
|||
|
|
`region_id` bigint DEFAULT NULL COMMENT '所属区域ID(教师必填)',
|
|||
|
|
`school_id` bigint DEFAULT NULL COMMENT '所属学校ID(教师必填)',
|
|||
|
|
`school_grade_id` bigint DEFAULT NULL COMMENT '所属学校年级ID(教师必填)',
|
|||
|
|
`school_class_id` bigint DEFAULT NULL COMMENT '所属学校班级ID(教师必填)',
|
|||
|
|
`register_source` char(1) DEFAULT '1' COMMENT '注册来源(1小程序 2H5 3后台 4导入)',
|
|||
|
|
`register_time` datetime DEFAULT NULL COMMENT '注册时间',
|
|||
|
|
`last_login_time` datetime DEFAULT NULL COMMENT '最后登录时间',
|
|||
|
|
`last_login_ip` varchar(50) DEFAULT NULL COMMENT '最后登录IP',
|
|||
|
|
`login_count` int DEFAULT 0 COMMENT '登录次数',
|
|||
|
|
`status` char(1) DEFAULT '0' COMMENT '状态(0正常 1停用)',
|
|||
|
|
`create_by` varchar(64) DEFAULT '' COMMENT '创建者',
|
|||
|
|
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
|
|||
|
|
`update_by` varchar(64) DEFAULT '' COMMENT '更新者',
|
|||
|
|
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
|
|||
|
|
`del_flag` char(1) DEFAULT '0' COMMENT '删除标志(0存在 1删除)',
|
|||
|
|
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
|
|||
|
|
PRIMARY KEY (`member_id`),
|
|||
|
|
UNIQUE KEY `uk_member_code` (`member_code`),
|
|||
|
|
UNIQUE KEY `uk_phone` (`phone`),
|
|||
|
|
KEY `idx_open_id` (`open_id`),
|
|||
|
|
KEY `idx_school_id` (`school_id`),
|
|||
|
|
KEY `idx_identity_type` (`identity_type`)
|
|||
|
|
) ENGINE=InnoDB COMMENT='会员表';
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 3.9 学生表(pg_student)
|
|||
|
|
|
|||
|
|
存储学生信息。
|
|||
|
|
|
|||
|
|
```sql
|
|||
|
|
CREATE TABLE `pg_student` (
|
|||
|
|
`student_id` bigint NOT NULL AUTO_INCREMENT COMMENT '学生ID',
|
|||
|
|
`student_name` varchar(50) NOT NULL COMMENT '学生姓名',
|
|||
|
|
`student_no` varchar(32) DEFAULT NULL COMMENT '学号',
|
|||
|
|
`gender` char(1) DEFAULT '0' COMMENT '性别(0未知 1男 2女)',
|
|||
|
|
`birthday` date DEFAULT NULL COMMENT '出生年月',
|
|||
|
|
`region_id` bigint NOT NULL COMMENT '所属区域ID',
|
|||
|
|
`region_path` varchar(200) DEFAULT NULL COMMENT '区域路径',
|
|||
|
|
`school_id` bigint NOT NULL COMMENT '所属学校ID',
|
|||
|
|
`school_grade_id` bigint NOT NULL COMMENT '所属学校年级ID',
|
|||
|
|
`school_class_id` bigint NOT NULL COMMENT '所属学校班级ID',
|
|||
|
|
`subject_id` bigint DEFAULT NULL COMMENT '学科ID',
|
|||
|
|
`member_id` bigint NOT NULL COMMENT '归属会员ID',
|
|||
|
|
`status` char(1) DEFAULT '0' COMMENT '状态(0正常 1停用)',
|
|||
|
|
`create_by` varchar(64) DEFAULT '' COMMENT '创建者',
|
|||
|
|
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
|
|||
|
|
`update_by` varchar(64) DEFAULT '' COMMENT '更新者',
|
|||
|
|
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
|
|||
|
|
`del_flag` char(1) DEFAULT '0' COMMENT '删除标志(0存在 1删除)',
|
|||
|
|
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
|
|||
|
|
PRIMARY KEY (`student_id`),
|
|||
|
|
UNIQUE KEY `uk_student_no` (`student_no`),
|
|||
|
|
KEY `idx_member_id` (`member_id`),
|
|||
|
|
KEY `idx_school_id` (`school_id`),
|
|||
|
|
KEY `idx_school_class_id` (`school_class_id`),
|
|||
|
|
KEY `idx_student_name` (`student_name`)
|
|||
|
|
) ENGINE=InnoDB COMMENT='学生表';
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 3.10 应用表(pg_application)
|
|||
|
|
|
|||
|
|
存储接入平台的第三方应用信息。
|
|||
|
|
|
|||
|
|
```sql
|
|||
|
|
CREATE TABLE `pg_application` (
|
|||
|
|
`app_id` bigint NOT NULL AUTO_INCREMENT COMMENT '应用ID',
|
|||
|
|
`app_code` varchar(32) NOT NULL COMMENT '应用编码',
|
|||
|
|
`app_name` varchar(100) NOT NULL COMMENT '应用名称',
|
|||
|
|
`app_secret` varchar(64) NOT NULL COMMENT '应用密钥',
|
|||
|
|
`app_desc` varchar(500) DEFAULT NULL COMMENT '应用描述',
|
|||
|
|
`contact_person` varchar(50) DEFAULT NULL COMMENT '联系人',
|
|||
|
|
`contact_phone` varchar(20) DEFAULT NULL COMMENT '联系电话',
|
|||
|
|
`status` char(1) DEFAULT '0' COMMENT '状态(0正常 1停用)',
|
|||
|
|
`create_by` varchar(64) DEFAULT '' COMMENT '创建者',
|
|||
|
|
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
|
|||
|
|
`update_by` varchar(64) DEFAULT '' COMMENT '更新者',
|
|||
|
|
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
|
|||
|
|
`del_flag` char(1) DEFAULT '0' COMMENT '删除标志(0存在 1删除)',
|
|||
|
|
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
|
|||
|
|
PRIMARY KEY (`app_id`),
|
|||
|
|
UNIQUE KEY `uk_app_code` (`app_code`)
|
|||
|
|
) ENGINE=InnoDB COMMENT='应用表';
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 3.11 应用接口授权表(pg_app_api)
|
|||
|
|
|
|||
|
|
存储应用可访问的接口授权。
|
|||
|
|
|
|||
|
|
```sql
|
|||
|
|
CREATE TABLE `pg_app_api` (
|
|||
|
|
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
|||
|
|
`app_id` bigint NOT NULL COMMENT '应用ID',
|
|||
|
|
`api_code` varchar(100) NOT NULL COMMENT '接口编码',
|
|||
|
|
`api_name` varchar(100) DEFAULT NULL COMMENT '接口名称',
|
|||
|
|
`api_path` varchar(200) NOT NULL COMMENT '接口路径',
|
|||
|
|
`create_by` varchar(64) DEFAULT '' COMMENT '创建者',
|
|||
|
|
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
|
|||
|
|
PRIMARY KEY (`id`),
|
|||
|
|
UNIQUE KEY `uk_app_api` (`app_id`, `api_code`),
|
|||
|
|
KEY `idx_app_id` (`app_id`)
|
|||
|
|
) ENGINE=InnoDB COMMENT='应用接口授权表';
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 3.12 API接口字典表(pg_api_dict)
|
|||
|
|
|
|||
|
|
存储系统对外开放的API接口定义。
|
|||
|
|
|
|||
|
|
```sql
|
|||
|
|
CREATE TABLE `pg_api_dict` (
|
|||
|
|
`api_id` bigint NOT NULL AUTO_INCREMENT COMMENT '接口ID',
|
|||
|
|
`api_code` varchar(100) NOT NULL COMMENT '接口编码',
|
|||
|
|
`api_name` varchar(100) NOT NULL COMMENT '接口名称',
|
|||
|
|
`api_path` varchar(200) NOT NULL COMMENT '接口路径',
|
|||
|
|
`api_method` varchar(10) DEFAULT 'GET' COMMENT '请求方法',
|
|||
|
|
`api_desc` varchar(500) DEFAULT NULL COMMENT '接口描述',
|
|||
|
|
`order_num` int DEFAULT 0 COMMENT '显示顺序',
|
|||
|
|
`status` char(1) DEFAULT '0' COMMENT '状态(0正常 1停用)',
|
|||
|
|
`create_by` varchar(64) DEFAULT '' COMMENT '创建者',
|
|||
|
|
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
|
|||
|
|
`update_by` varchar(64) DEFAULT '' COMMENT '更新者',
|
|||
|
|
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
|
|||
|
|
PRIMARY KEY (`api_id`),
|
|||
|
|
UNIQUE KEY `uk_api_code` (`api_code`)
|
|||
|
|
) ENGINE=InnoDB COMMENT='API接口字典表';
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 4. 初始化数据
|
|||
|
|
|
|||
|
|
### 4.1 区域数据
|
|||
|
|
|
|||
|
|
```sql
|
|||
|
|
-- 省级
|
|||
|
|
INSERT INTO pg_region (region_id, parent_id, region_name, level, ancestors, order_num) VALUES
|
|||
|
|
(1, 0, '湖北', 1, '0', 1),
|
|||
|
|
(2, 0, '北京', 1, '0', 2),
|
|||
|
|
(3, 0, '香港', 1, '0', 3),
|
|||
|
|
(4, 0, '吉宁', 1, '0', 4);
|
|||
|
|
|
|||
|
|
-- 市级(湖北)
|
|||
|
|
INSERT INTO pg_region (region_id, parent_id, region_name, level, ancestors, order_num) VALUES
|
|||
|
|
(11, 1, '武汉', 2, '0,1', 1),
|
|||
|
|
(12, 1, '黄冈', 2, '0,1', 2);
|
|||
|
|
|
|||
|
|
-- 区级(武汉)
|
|||
|
|
INSERT INTO pg_region (region_id, parent_id, region_name, level, ancestors, order_num) VALUES
|
|||
|
|
(111, 11, '武昌区', 3, '0,1,11', 1),
|
|||
|
|
(112, 11, '汉口区', 3, '0,1,11', 2),
|
|||
|
|
(113, 11, '汉阳区', 3, '0,1,11', 3),
|
|||
|
|
(114, 11, '江夏区', 3, '0,1,11', 4),
|
|||
|
|
(115, 11, '新洲区', 3, '0,1,11', 5),
|
|||
|
|
(116, 11, '黄陂区', 3, '0,1,11', 6);
|
|||
|
|
|
|||
|
|
-- 区级(黄冈)
|
|||
|
|
INSERT INTO pg_region (region_id, parent_id, region_name, level, ancestors, order_num) VALUES
|
|||
|
|
(121, 12, '黄州区', 3, '0,1,12', 1),
|
|||
|
|
(122, 12, '红安县', 3, '0,1,12', 2),
|
|||
|
|
(123, 12, '麻城市', 3, '0,1,12', 3);
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 4.2 年级数据
|
|||
|
|
|
|||
|
|
```sql
|
|||
|
|
INSERT INTO pg_grade (grade_id, grade_code, grade_name, order_num) VALUES
|
|||
|
|
(1, 'GRD001', '一年级', 1),
|
|||
|
|
(2, 'GRD002', '二年级', 2),
|
|||
|
|
(3, 'GRD003', '三年级', 3),
|
|||
|
|
(4, 'GRD004', '四年级', 4),
|
|||
|
|
(5, 'GRD005', '五年级', 5),
|
|||
|
|
(6, 'GRD006', '六年级', 6),
|
|||
|
|
(7, 'GRD007', '七年级', 7),
|
|||
|
|
(8, 'GRD008', '八年级', 8),
|
|||
|
|
(9, 'GRD009', '九年级', 9),
|
|||
|
|
(10, 'GRD010', '高一', 10),
|
|||
|
|
(11, 'GRD011', '高二', 11),
|
|||
|
|
(12, 'GRD012', '高三', 12);
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 4.3 班级数据
|
|||
|
|
|
|||
|
|
```sql
|
|||
|
|
INSERT INTO pg_class (class_id, class_code, class_name, order_num) VALUES
|
|||
|
|
(1, 'CLS001', '1班', 1),
|
|||
|
|
(2, 'CLS002', '2班', 2),
|
|||
|
|
(3, 'CLS003', '3班', 3),
|
|||
|
|
(4, 'CLS004', '4班', 4),
|
|||
|
|
(5, 'CLS005', '5班', 5),
|
|||
|
|
(6, 'CLS006', '6班', 6),
|
|||
|
|
(7, 'CLS007', '7班', 7),
|
|||
|
|
(8, 'CLS008', '8班', 8),
|
|||
|
|
(9, 'CLS009', '9班', 9),
|
|||
|
|
(10, 'CLS010', '10班', 10);
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 4.4 学科数据
|
|||
|
|
|
|||
|
|
```sql
|
|||
|
|
INSERT INTO pg_subject (subject_id, subject_code, subject_name, order_num) VALUES
|
|||
|
|
(1, 'SUB001', '语文', 1),
|
|||
|
|
(2, 'SUB002', '数学', 2),
|
|||
|
|
(3, 'SUB003', '英语', 3),
|
|||
|
|
(4, 'SUB004', '物理', 4),
|
|||
|
|
(5, 'SUB005', '化学', 5),
|
|||
|
|
(6, 'SUB006', '生物', 6),
|
|||
|
|
(7, 'SUB007', '历史', 7),
|
|||
|
|
(8, 'SUB008', '地理', 8),
|
|||
|
|
(9, 'SUB009', '政治', 9),
|
|||
|
|
(10, 'SUB010', '体育', 10),
|
|||
|
|
(11, 'SUB011', '音乐', 11),
|
|||
|
|
(12, 'SUB012', '美术', 12);
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 4.5 API接口字典数据
|
|||
|
|
|
|||
|
|
```sql
|
|||
|
|
INSERT INTO pg_api_dict (api_id, api_code, api_name, api_path, api_method, api_desc, order_num) VALUES
|
|||
|
|
(1, 'STUDENT_LIST', '查询学生信息', '/open/student/list', 'GET', '获取学生列表', 1),
|
|||
|
|
(2, 'SCHOOL_LIST', '查询学校信息', '/open/school/list', 'GET', '获取学校列表', 2),
|
|||
|
|
(3, 'GRADE_LIST', '查询年级信息', '/open/grade/list', 'GET', '获取年级列表', 3),
|
|||
|
|
(4, 'CLASS_LIST', '查询班级信息', '/open/class/list', 'GET', '获取班级列表', 4),
|
|||
|
|
(5, 'MEMBER_LIST', '查询会员信息', '/open/member/list', 'GET', '获取会员列表', 5),
|
|||
|
|
(6, 'REGION_TREE', '查询区域树', '/open/region/tree', 'GET', '获取区域树形结构', 6);
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 5. 索引设计
|
|||
|
|
|
|||
|
|
### 5.1 索引策略
|
|||
|
|
|
|||
|
|
| 索引类型 | 应用场景 |
|
|||
|
|
|---------|---------|
|
|||
|
|
| 主键索引 | 所有表的主键 |
|
|||
|
|
| 唯一索引 | 编码、手机号等唯一字段 |
|
|||
|
|
| 普通索引 | 查询条件、外键关联 |
|
|||
|
|
| 组合索引 | 多字段联合查询 |
|
|||
|
|
|
|||
|
|
### 5.2 关键索引说明
|
|||
|
|
|
|||
|
|
| 表名 | 索引名 | 索引字段 | 说明 |
|
|||
|
|
|-----|-------|---------|------|
|
|||
|
|
| pg_member | uk_phone | phone | 手机号唯一 |
|
|||
|
|
| pg_member | idx_open_id | open_id | 微信登录查询 |
|
|||
|
|
| pg_member | idx_school_id | school_id | 按学校查询 |
|
|||
|
|
| pg_student | uk_student_no | student_no | 学号唯一 |
|
|||
|
|
| pg_student | idx_member_id | member_id | 按会员查询 |
|
|||
|
|
| pg_student | idx_school_class_id | school_class_id | 按班级查询 |
|
|||
|
|
| pg_school | uk_school_code | school_code | 学校编码唯一 |
|
|||
|
|
| pg_school | idx_region_id | region_id | 按区域查询 |
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 6. 数据字典
|
|||
|
|
|
|||
|
|
### 6.1 性别(gender)
|
|||
|
|
|
|||
|
|
| 值 | 说明 |
|
|||
|
|
|---|------|
|
|||
|
|
| 0 | 未知 |
|
|||
|
|
| 1 | 男 |
|
|||
|
|
| 2 | 女 |
|
|||
|
|
|
|||
|
|
### 6.2 身份类型(identity_type)
|
|||
|
|
|
|||
|
|
| 值 | 说明 |
|
|||
|
|
|---|------|
|
|||
|
|
| 1 | 家长 |
|
|||
|
|
| 2 | 教师 |
|
|||
|
|
|
|||
|
|
### 6.3 注册来源(register_source)
|
|||
|
|
|
|||
|
|
| 值 | 说明 |
|
|||
|
|
|---|------|
|
|||
|
|
| 1 | 小程序 |
|
|||
|
|
| 2 | H5 |
|
|||
|
|
| 3 | 后台新增 |
|
|||
|
|
| 4 | 批量导入 |
|
|||
|
|
|
|||
|
|
### 6.4 状态(status)
|
|||
|
|
|
|||
|
|
| 值 | 说明 |
|
|||
|
|
|---|------|
|
|||
|
|
| 0 | 正常/启用 |
|
|||
|
|
| 1 | 停用/禁用 |
|
|||
|
|
|
|||
|
|
### 6.5 删除标志(del_flag)
|
|||
|
|
|
|||
|
|
| 值 | 说明 |
|
|||
|
|
|---|------|
|
|||
|
|
| 0 | 存在 |
|
|||
|
|
| 1 | 已删除 |
|
|||
|
|
|
|||
|
|
### 6.6 学校类型(school_type)
|
|||
|
|
|
|||
|
|
| 值 | 说明 |
|
|||
|
|
|---|------|
|
|||
|
|
| 01 | 小学 |
|
|||
|
|
| 02 | 初中 |
|
|||
|
|
| 03 | 高中 |
|
|||
|
|
| 04 | 完全中学 |
|
|||
|
|
| 99 | 其他 |
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
*文档结束*
|