模型关联关系
关联关系类型
模型关联关系包含三种逻辑列类型:
一对一反向关联
一对多关系的特例,通过唯一索引约束实现一对一。物理表中不存在该字段,通过 LEFT JOIN 查询获得。
示例:「学生证」与「学生」的一对一关系,在学生证表中一对一反向关联字段并不真实存在。
一对多关联
当前模型的一条记录关联到另一个模型的多条记录。物理表中不存在该字段,通过 LEFT JOIN 查询获得。
示例:一个「班级」关联多个「学生」,在班级表中一对多字段并不真实存在。
多对多关联
当前模型的多条记录关联到另一个模型的多条记录。物理表中不存在该字段,通过中间表和 LEFT JOIN 查询获得。
示例:「学生」与「课程」之间的选课关系,在学生表和课程表中多对多字段并不真实存在。
多对多中间表
查找中间表
进入 云开发平台/MySQL数据库/数据模型,在模型字段配置中查找中间表对应的「中间模型标识」:

通过「中间模型标识」在数据库表中搜索:

💡 注意:表名以
-preview结尾的是 体验环境 模型多对多关联关系对应的中间表,不以-preview结尾的表是 正式环境 模型多对多关联关系对应的中间表。
中间表字段说明
leftRecordId:记录主表(左表)记录 ID,如学生表的主键_id对应的值rightRecordId:记录从表(右表)记录 ID,如课程表的主键_id对应的值

外键约束配置
模型关联关系当前不支持外键操作,如需添加外键约束,请在 云开发平台 数据库表管理页面操作。
一对一关系外键约束
应用场景
- 用户 ↔ 用户资料(一个用户对应一个用户资料)
- 学生 ↔ 学生证(一个学生对应一个学生证)
控制台操作步骤
通过模型找到表名和关联字段标识:

在数据库表管理页搜索相关表,添加外键:


SQL 创建示例
-- 用户资料表(从表)
CREATE TABLE user_profile (
_id INT AUTO_INCREMENT PRIMARY KEY,
user_id INT NOT NULL UNIQUE, -- 唯一约束确保一对一关系
avatar VARCHAR(255),
bio TEXT,
CONSTRAINT fk_profile_user_id FOREIGN KEY (user_id)
REFERENCES user(_id) ON DELETE CASCADE
);
配置要点
- 在从表的外键字段上添加
UNIQUE约束 - 使用
ON DELETE CASCADE确保级联删除 - 外键字段必须
NOT NULL
一对多关系外键约束
应用场景
- 部门 ↔ 员工(一个部门有多个员工)
- 文章 ↔ 评论(一篇文章有多个评论)
控制台操作步骤
通过模型找到表名和关联字段标识:

在数据库表管理页搜索相关表,添加外键:


SQL 创建示例
-- 员工表(多的一方)
CREATE TABLE employee (
_id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
department_id INT NOT NULL,
position VARCHAR(100),
_openid VARCHAR(64),
CONSTRAINT fk_employee_department_id FOREIGN KEY (department_id)
REFERENCES department(_id) ON DELETE CASCADE
);
配置要点
- 外键约束建立在「多」的一方
- 外键字段通常为
NOT NULL - 使用
ON DELETE CASCADE处理级联删除
多对多关系外键约束
应用场景
- 学生 ↔ 课程(一个学生选修多门课程,一门课程有多个学生)
- 用户 ↔ 角色(一个用户有多个角色,一个角色分配给多个用户)
控制台操作步骤
通过模型字段配置查找中间表对应的中间模型标识:

通过中间模型标识在数据库表管理页搜索相关表:


SQL 创建示例
-- 中间表(关联表)
CREATE TABLE mid_55ZTLScHD (
_id INT AUTO_INCREMENT,
rightRecordId INT NOT NULL,
leftRecordId INT NOT NULL,
_openid VARCHAR(64),
PRIMARY KEY (id, rightRecordId, leftRecordId), -- 联合主键
CONSTRAINT fk_sc_student_id FOREIGN KEY (leftRecordId)
REFERENCES student(_id) ON DELETE CASCADE,
CONSTRAINT fk_sc_course_id FOREIGN KEY (rightRecordId)
REFERENCES course(_id) ON DELETE CASCADE
);
配置要点
- 中间表包含两个外键字段
- 使用联合主键确保关联关系的唯一性
- 两个外键都设置级联删除
配置规范
表名规则
- 体验环境表名:模型标识 +
-preview - 正式环境表名:模型标识
约束命名规范
- 使用有意义的约束名称:
fk_表名_字段名 - 保持命名一致性便于维护
级联操作类型
- CASCADE:主表记录删除时,从表关联记录也删除
- SET NULL:主表记录删除时,从表外键字段设为 NULL
- RESTRICT:阻止删除有外键引用的主表记录
- NO ACTION:与 RESTRICT 类似,但检查时机不同