写点什么

零代码实现一对一表关系和无限主子表级联保存

用户头像
crudapi
关注
发布于: 2021 年 04 月 01 日
零代码实现一对一表关系和无限主子表级联保存

表关系高阶

在上一篇 表关系管理 中,介绍了订单中一对多、多对一、以及多对多关系,本文主要介绍一对一关系和无限主子表在 crudapi 系统中的应用。

概要

一对一

一对一关系是指关系数据库中两个表之间的一种关系。关系数据库中第一个表中的单个行只可以与第二个表中的一个行相关,且第二个表中的一个行也只可以与第一个表中的一个行相关。


在一对多关系中,外键建立在子表中;在一对一关系中,外键可以建在主表或者子表中,为了保持一致,crudapi 系统中统一将一对一关系中外键也建立在子表中,这样的好处是如果将来需要解除表关系的时候,无需修改主表结构。

客户资料

客户 customer 主表中,通常存放基本信息,如果有更多资料可以考虑单独存放在客户资料 customerProfile 表中,它们之间可以用一对一关系实现。

客户和客户资料:一对一(主子方向)


之前创建客户 customer 表保持不变



创建客户资料 customerProfile 表,主要包括客户编号字段、生日、性别、爱好等,其中客户编号 customerId 字段用于建立表关系



建立主子方向一对一关系,客户 customer 表的编号 id 字段,指向客户资料 customerProfile 的客户编号 customerId 字段,关系的英文名称 profile 用于查询关联对象的时候,设置导航属性名称为 profile。

客户资料和客户:一对一(子主方向)


建立子主方向一对一关系,客户资料 customerProfile 的客户编号 customerId 字段,指向客户 customer 表的编号 id 字段,关系的英文名称 customer 用于查询关联对象的时候,设置导航属性名称为 customer,和之前订单和客户多对一关系有点类似,关联对象都是 customer 对象,不过那个时候多个订单可以关联同一个客户,现在一个客户资料只能关联一个客户。

客户主子表级联保存


ui 创建客户,同时输入子表客户资料信息,chrome 打开网络请求记录,可以看到 POST body 如下:


{    "name": "刘备",    "mobile": "13699998888",    "email": "liubei@crudapi.cn",    "profile": {        "name": "刘备资料",        "birthday": "2021-02-14",        "sex": "男",        "hobby": "骑马"    }}
复制代码


其中 profile 为客户资料信息,



查询客户详情,发现客户和客户资料信息一次性保存成功!上一篇文章中,销售订单和订单行是一对多主子关系,子表是数组形式,在一对一主子关系中子表是对象形式,在数据库中表现形式是相同的,外键都是建在子表中。

直接操作客户资料


也可以直接创建客户资料表,选择挂在指定客户下,可以达到同样的效果。

无限子表

通过设置表关系,一对多和一对一(主子方向)理论上可以无限关联下去,所有的表一次性级联保存,比如省市区通常可以达到 3 级子表,目录文件属于无限子表。

省市区三级子表


省和市是一对多关系,市和区是一对多关系。



ui 效果,江苏省包括南京和淮安两个城市,南京市又包括江宁区和雨花台区。

目录无限子表

一级目录下可以包括子目录和文件,如果是子目录,子目录可以继续包括子目录和文件



图目录无限子表-1



图目录无限子表-2


ui 效果,子表包括目录和文件,还可以继续展开下去,由于屏幕大小的原因,这里就不一一展示了。


查询目录列表


小结

本文介绍了一对一关系,包括主子方向和子主方向,加上一篇文章中一对多,多对一,多对多关系,到目前为止所有的表关系都实现了。crudapi 系统通过配置的方式实现了对象之间的关联,无需编程实现了主子表 CRUD 操作。

附 demo 演示

本系统属于产品级的零代码平台,不同于自动代码生成器,不需要生成 Controller、Service、Repository、Entity 等业务代码,程序运行起来就可以使用,真正 0 代码,可以覆盖基本的和业务无关的 CRUD RESTful API。


官网地址:https://crudapi.cn

测试地址:https://demo.crudapi.cn/crudapi/login

发布于: 2021 年 04 月 01 日阅读数: 24
用户头像

crudapi

关注

crudapi是crud+api组合,表示增删改查接口 2019.06.19 加入

使用crudapi可以告别枯燥无味的增删改查代码,让您更加专注业务,节约大量成本,从而提高工作效率。crudapi的目标是让处理数据变得更简单!官网:https://crudapi.cn 演示:https://demo.crudapi.cn/crudapi/login

评论

发布
暂无评论
零代码实现一对一表关系和无限主子表级联保存