MySQL 多对多关联关系
多对多关联关系是指两个数据模型之间存在「双向多重关联」的场景,例如:
- 学生和课程:一个学生可以选修多门课程,一门课程也可以被多个学生选修
- 用户和角色:一个用户可以拥有多个角色,一个角色也可以分配给多个用户
- 商品和订单:一个订单可以包含多个商品,一个商品也可以出现在多个订单中
在 关系型数据库 中,多对多关系无法通过单一外键实现,需要借助「中间表」来存储两个实体之间的关联关系。
多对多中间表机制
云开发数据模型会自动为多对多关联关系创建「中间表」(Junction Table),您无需手动创建和维护这些表。中间表专门用于存储两个模型之间的关联关系,确保数据完整性和查询效率。
中间表的作用
- 存储关联关系:记录哪个主表记录关联了哪个从表记录
- 支持双向查询:可以从任意一端查询关联的另一端数据
- 保证数据一致性:通过外键约束确保关联数据的有效性
- 提升查询性能:通过索引优化多对多关联查询
查找中间表
当您需要直接操作或查看中间表数据时,可以按以下步骤定位中间表:
步骤 1:获取中间模型标识
进入 云开发平台 / MySQL数据库 / 数据模型,在模型字段配置中查找「中间模型标识」:

💡 提示:「中间模型标识」是系统自动生成的唯一标识符,用于在数据库中定位对应的中间表。
步骤 2:在数据库中搜索中间表
通过「中间模型标识」在数据库表列表中搜索,即可找到对应的中间表:

⚠️ 环境区分:
- 表名以
-preview结尾:体验环境的中间表- 表名不以
-preview结尾:正式环境的中间表
中间表字段说明
中间表通常包含以下核心字段:
| 字段名 | 说明 | 示例 |
|---|---|---|
leftRecordId | 主表(左表)记录的主键 ID | 学生表的 _id,如 STUDENT_001 |
rightRecordId | 从表(右表)记录的主键 ID | 课程表的 _id,如 COURSE_101 |
字段说明图示

实际示例
以「学生选课」场景为例,中间表的数据结构如下:
| leftRecordId | rightRecordId | 含义 |
|---|---|---|
STUDENT_001 | COURSE_101 | 学生 001 选修了课程 101 |
STUDENT_001 | COURSE_102 | 学生 001 选修了课程 102 |
STUDENT_002 | COURSE_101 | 学生 002 选修了课程 101 |
这样的设计使得:
- 通过
STUDENT_001可以查询到该学生选修的所有课程(COURSE_101、COURSE_102) - 通过
COURSE_101可以查询到选修该课程的所有学生(STUDENT_001、STUDENT_002)