3、关系模型:一对一关系、一对多关系、多对多关系、关系配置实战

在低代码平台中,数据模型的核心能力不仅在于定义单个实体(表),更在于定义实体之间的关联关系。关系模型决定了数据如何被连接、查询和展示。本章将深入剖析三种基本关系类型,并给出低代码平台中的配置实战指南。

3.1 一对一关系 (One-to-One)

定义:实体A的一条记录,最多对应实体B的一条记录;反之亦然。

典型场景

  • 用户与身份证信息(一个用户只有一个身份证号)
  • 订单与发票(一笔订单只能开具一张发票)
  • 员工与工位(一个员工固定一个工位)

低代码实现方式

  1. 外键+唯一约束:在任意一张表中添加指向另一张表的外键字段,并设置该字段为“唯一”。这是最常用的方式。
  2. 共享主键:两张表使用完全相同的主键值(例如,用户表主键=1,身份证表主键也=1)。这种方式性能较好,但配置稍复杂。

配置实战(以“用户-身份证”为例)

步骤操作说明
1创建“用户”实体,主键为 userId基础字段:姓名、手机号
2创建“身份证”实体,主键为 idCardId基础字段:身份证号、签发机关
3在“身份证”实体中添加字段:userId(类型:关联关系)关联到“用户”实体
4设置 userId 字段的唯一约束为“是”确保一个用户只能对应一张身份证
5在关系配置中,选择“一对一”类型平台自动生成反向引用(用户→身份证)

3.2 一对多关系 (One-to-Many)

定义:实体A的一条记录,可以对应实体B的多条记录;但实体B的一条记录只能对应实体A的一条记录。

典型场景

  • 客户与订单(一个客户可以有多个订单)
  • 部门与员工(一个部门可以有多个员工)
  • 文章与评论(一篇文章可以有多个评论)

低代码实现方式

  1. 外键:在“多”的一方(实体B)添加外键字段,指向“一”的一方(实体A)。不需要唯一约束。
  2. 反向引用:在“一”的一方自动生成一个子表/列表字段,用于展示所有关联的“多”方记录。

配置实战(以“客户-订单”为例)

步骤操作说明
1创建“客户”实体,主键为 customerId字段:客户名称、等级
2创建“订单”实体,主键为 orderId字段:订单金额、下单时间
3在“订单”实体中添加字段:customerId(类型:关联关系)关联到“客户”实体
4设置该字段的唯一约束为“否”允许一个客户对应多个订单
5在关系配置中,选择“一对多”类型平台自动在“客户”表单中生成“订单列表”子表

3.3 多对多关系 (Many-to-Many)

定义:实体A的一条记录,可以对应实体B的多条记录;实体B的一条记录,也可以对应实体A的多条记录。

典型场景

  • 学生与课程(一个学生选多门课,一门课被多个学生选)
  • 订单与商品(一个订单包含多个商品,一个商品出现在多个订单中)
  • 角色与权限(一个角色拥有多个权限,一个权限被多个角色拥有)

低代码实现方式

  1. 中间表(关联表):系统自动或手动创建一个中间实体,该实体包含两个外键,分别指向实体A和实体B。
  2. 复合主键:中间表的主键通常由两个外键共同组成(联合唯一)。
  3. 附加属性:中间表可以额外存储关系本身的属性(例如:选课时间、订单数量)。

配置实战(以“学生-课程”为例)

步骤操作说明
1创建“学生”实体,主键为 studentId字段:姓名、学号
2创建“课程”实体,主键为 courseId字段:课程名、学分
3创建“选课记录”中间实体系统自动生成或手动创建
4在中间实体中添加字段:studentId(关联学生)、courseId(关联课程)两个字段均为关联关系类型
5设置中间实体的联合唯一约束(studentId + courseId)防止重复选课
6在关系配置中,选择“多对多”类型,并指定中间实体平台自动生成双向的多选组件(如:学生表单中显示“已选课程”多选列表)
7(可选)在中间实体添加“选课时间”、“成绩”等字段丰富关系属性

3.4 关系配置实战要点

在低代码平台中,关系配置不仅仅是选择类型,还需要注意以下关键设置:

  • 级联操作:当主表记录被删除时,关联记录如何处理?
    • 级联删除:自动删除所有关联记录(适用于订单明细等强依赖场景)。
    • 置空:将外键字段设为NULL(适用于评论等弱依赖场景)。
    • 禁止删除:如果有关联记录存在,则不允许删除主记录(防止数据丢失)。
  • 显示字段:在关联下拉框或列表中,默认显示哪个字段?通常选择“名称”或“标题”字段,而非ID。
  • 数据权限:关联查询时,是否受行级权限控制?例如:销售人员只能看到自己客户的订单。
  • 性能优化:对于一对多和多对多关系,建议在关联字段上建立数据库索引,避免大数据量下的查询延迟。

关系类型速查表

关系类型外键位置唯一约束中间表典型UI组件
一对一任意一方不需要下拉框(单选)
一对多多的一方不需要下拉框(单选)+ 子表列表
多对多无(在中间表)联合唯一必须多选下拉框 / 穿梭框

掌握这三种关系模型,你就能在低代码平台中构建出复杂且符合业务逻辑的数据结构。下一章我们将探讨如何利用这些关系进行高级查询与数据聚合。