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

简介: 本文主要介绍一对一关系和无限主子表在crudapi系统中的应用。一对一关系是指关系数据库中两个表之间的一种关系。关系数据库中第一个表中的单个行只可以与第二个表中的一个行相关,且第二个表中的一个行也只可以与第一个表中的一个行相关。

表关系高阶

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

概要

一对一

一对一关系是指关系数据库中两个表之间的一种关系。关系数据库中第一个表中的单个行只可以与第二个表中的一个行相关,且第二个表中的一个行也只可以与第一个表中的一个行相关。
在一对多关系中,外键建立在子表中;在一对一关系中,外键可以建在主表或者子表中,为了保持一致,crudapi系统中统一将一对一关系中外键也建立在子表中,这样的好处是如果将来需要解除表关系的时候,无需修改主表结构。

客户资料

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

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

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

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

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

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

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

客户主子表级联保存

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

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

其中profile为客户资料信息,

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

直接操作客户资料

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

无限子表

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

省市区三级子表

ssqGraph

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

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

目录无限子表

一级目录下可以包括子目录和文件,如果是子目录,子目录可以继续包括子目录和文件
folder1
图目录无限子表-1

folder2
图目录无限子表-2

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

查询目录列表
folders

小结

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

附crudapi简介

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

目录
相关文章
|
BI Windows
Qt 报表实现简述(一)
Qt 报表实现简述(一)
367 1
|
开发工具 git
Git从远程仓库拉取指定的分支
Git从远程仓库拉取指定的分支
3143 0
|
9月前
|
人工智能 NoSQL Redis
Collaborative Gym:斯坦福人机协作框架开源!异步交互+三方感知,让你的AI学会主动补位
介绍Collaborative Gym,一个专注于人机协作的框架,支持异步交互和多种任务环境。
325 14
Collaborative Gym:斯坦福人机协作框架开源!异步交互+三方感知,让你的AI学会主动补位
|
存储 数据采集 缓存
【运维知识进阶篇】Zabbix5.0稳定版详解9(Zabbix优化:高并发对MySQL进行拆分、Zabbix-agent主动上报模式、使用proxy代理模式、系统自带监控项优化、进程优化、缓存优化)
【运维知识进阶篇】Zabbix5.0稳定版详解9(Zabbix优化:高并发对MySQL进行拆分、Zabbix-agent主动上报模式、使用proxy代理模式、系统自带监控项优化、进程优化、缓存优化)
1515 0
|
存储 Linux 数据安全/隐私保护
linux解压zip文件命令
linux解压zip文件命令
|
Python
python一键导出/导入pip库
python一键导出/导入pip库
396 0
|
机器学习/深度学习 算法 计算机视觉
基于YOLOv8与ByteTrack的车辆检测追踪与流量计数系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战、目标追踪、车辆检测追踪、过线计数、流量统计(3)
基于YOLOv8与ByteTrack的车辆检测追踪与流量计数系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战、目标追踪、车辆检测追踪、过线计数、流量统计
|
机器学习/深度学习 存储 自然语言处理
大模型面经答案—强化学习:理论解释与讲解
微信上偷来的文章(哈哈(ಡωಡ)hiahiahiahiahiahia),我可是选的转载的,收藏起来自己偷偷复习大模型,希望能赶上下一波风口。
|
算法 数据挖掘
R语言面板数据回归:含时间固定效应混合模型分析交通死亡率、酒驾法和啤酒税
R语言面板数据回归:含时间固定效应混合模型分析交通死亡率、酒驾法和啤酒税
|
人工智能 监控 搜索推荐

热门文章

最新文章