pangu-user-platform/docs/03-数据库设计/数据库设计文档_v1.0.md

644 lines
24 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 盘古用户平台 - 数据库设计文档
---
| 文档信息 | 内容 |
|---------|------|
| **文档版本** | 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 DEFAULT 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);
```
### 4.6 学校示例数据
> 以下数据来源于墨刀原型设计
```sql
-- 学校数据
INSERT INTO pg_school (school_id, school_code, school_name, school_type, region_id, region_path, status, create_time) VALUES
(1, 'SCH20260001', '武汉市第一中学', '02', 111, '湖北省-武汉市-武昌区', '0', NOW()),
(2, 'SCH20260002', '武汉市第三中学', '02', 111, '湖北省-武汉市-武昌区', '0', NOW()),
(3, 'SCH20260003', '武汉市水果湖小学', '01', 111, '湖北省-武汉市-武昌区', '0', NOW());
-- 学校-年级关联(武汉市第一中学)
INSERT INTO pg_school_grade (id, school_id, grade_id, order_num) VALUES
(1, 1, 7, 1), -- 七年级
(2, 1, 8, 2), -- 八年级
(3, 1, 9, 3); -- 九年级
-- 学校-年级关联(武汉市水果湖小学)
INSERT INTO pg_school_grade (id, school_id, grade_id, order_num) VALUES
(4, 3, 1, 1), -- 一年级
(5, 3, 2, 2), -- 二年级
(6, 3, 3, 3), -- 三年级
(7, 3, 4, 4), -- 四年级
(8, 3, 5, 5), -- 五年级
(9, 3, 6, 6); -- 六年级
-- 学校-班级关联(武汉市第一中学-七年级)
INSERT INTO pg_school_class (id, school_grade_id, class_id, order_num) VALUES
(1, 1, 1, 1), -- 1班
(2, 1, 2, 2), -- 2班
(3, 1, 3, 3); -- 3班
```
### 4.7 会员示例数据
```sql
INSERT INTO pg_member (member_id, member_code, phone, password, nickname, gender, identity_type, region_id, school_id, register_source, register_time, status) VALUES
(1, 'JS123123123', '13207166213', '$2a$10$7JB720yubVSZvUI0rEqK/.VqGOZTH.ulu33dHOiBE8ByOhJIrdAu2', '张三家长', '1', '1', NULL, NULL, '1', NOW(), '0'),
(2, 'JS123123124', '13807166214', '$2a$10$7JB720yubVSZvUI0rEqK/.VqGOZTH.ulu33dHOiBE8ByOhJIrdAu2', '李老师', '2', '2', 111, 1, '1', NOW(), '0');
```
### 4.8 学生示例数据
```sql
INSERT INTO pg_student (student_id, student_name, student_no, gender, birthday, region_id, region_path, school_id, school_grade_id, school_class_id, member_id, status, create_time) VALUES
(1, '张小明', 'STU20260001', '1', '2015-03-15', 111, '湖北省-武汉市-武昌区', 1, 1, 1, 1, '0', NOW()),
(2, '张小红', 'STU20260002', '2', '2017-06-20', 111, '湖北省-武汉市-武昌区', 3, 4, 1, 1, '0', NOW());
```
### 4.9 应用示例数据
```sql
-- 应用数据
INSERT INTO pg_application (app_id, app_code, app_name, app_secret, app_desc, status, create_time) VALUES
(1, 'YY000001', 'AI智慧平台', 'a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6', 'AI智慧教育平台接入', '0', NOW());
-- 应用接口授权
INSERT INTO pg_app_api (id, app_id, api_code, api_name, api_path, create_time) VALUES
(1, 1, 'SCHOOL_LIST', '查询学校信息', '/open/school/list', NOW()),
(2, 1, 'GRADE_LIST', '查询年级信息', '/open/grade/list', NOW()),
(3, 1, 'CLASS_LIST', '查询班级信息', '/open/class/list', NOW());
```
---
## 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 | 其他 |
---
*文档结束*