在企业级业务系统中,用户与角色的关系常常不是一对一的。例如,一个用户可能拥有多个角色(如“管理员”、“财务人员”),而一个角色也可以被多个用户共享。这种多对多关系广泛存在于权限管理、课程管理、标签系统等场景中。
本案例基于低代码开发产品SnapDevelop,以“用户-角色”业务场景,系统展示SnapDevelop工具多角度可视化设计,快速实现复杂数据关系的管理与落地,帮助产品使用者全面掌握多对多模型的设计理念与实操技巧。
数据库设计
用户和角色的数据关系设计,需要借助中间的关系表实现多对多设计,具体设计如下:
表名 | 说明 |
User(用户表) | 存储系统中的用户基本信息,如用户名、邮箱等 |
Role(角色表) | 存储系统中的角色信息,如角色名称,角色描述等 |
UserRole(用户角色关系表) | 存储用户与角色的关联关系,每一条记录表示用户拥有某个角色 |
SnapDevelop提供可视化的图形界面进行数据建模,以连线的形式呈现数据关系,整体数据设计简洁方便。
逻辑设计
方案一:借助内置Roles导航(参数传递新增或修改的导航列表)
新增用户时,同步新增用户角色。新增逻辑的设计思路:首先是判断UserModel中有没有传递RoleModel集合,如果有,先新增用户,拿到新增用户的id,并遍历传递的RoleMole集合的id,处理用户角色关系表的新增。如果没有传递,直接新增用户。
修改用户信息的设计思路:借助快速生成的用户更新逻辑,勾选从表更新,通过系统提供的能力自动处理用户的角色信息。
方案二 :自定义业务字段(角色Id集合)
设计思路:新增或更新用户时,同步维护关系表数据,用户的角色信息从业务字段RoleIds中提取,根据传递的RoleIds列表,循环处理用户角色的关系表数据
方案三:自定义逻辑实现用户角色的关系绑定
设计思路:用户的角色列表单独维护,即先保证用户和角色数据已存在,自定义逻辑只传递用户Id和角色Id列表,通过批量新增用户角色关系,将多个角色绑定到一个用户上。
视图设计
根据逻辑设计方案,分别设计前端视图。
方案一,通过集合表单处理导航数据
设计思路:单独设计角色列表选择页面,借助属性赋值功能,将选择的角色列表设置到集合表单
实际运行效果:
方案二,通过下拉选择组件实现角色的多选
设计思路:通过select组件绑定RoleIds列表,以多选的形式选择角色列表。
运行效果:
方案三,通过接口调用设计实现用户角色的批量维护
设计思路:在选中角色列表页面,直接调用自定义逻辑,将角色列表新增到用户角色中,然后刷新用户的角色列表
案例价值与平台优势
价值点 | SnapDevelop提供能力 |
多对多建模理解 | 图形化模型设计器,所见即所得 |
表单交互配置 | 逻辑视图可视化串联 |
后端逻辑自动化 | Entity、Service、Controller一键生成 |
结语
通过SnapDevelop的低代码能力,本案例实现了从数据建模、逻辑设计、视图设计的完整流程,全面展示了多对多关系在业务系统中的标准设计范式。
我们鼓励开发者基于本案例模板,灵活的使用在各类类似的业务场景中,如权限分配、分类标签、课程学生等,从而大幅提升产品建模效率与维护能力。
使用SnapDevelop,让复杂关系的建模变得更简单、更可视、更智能!