订单和产品的多对多表关系在crudapi系统零代码实现
表关系管理
在上一篇 序列号管理 中,产品和销售订单都是孤立的单表,本文通过crudapi中表关系(relation)管理将多个表连接起来,形成一个整体。
概要
关系类型
表与表之间的关系(relation),分成三种。
一对一(one-to-one):一种对象与另一种对象是一一对应关系,比如一个学生只能在一个班级。
一对多(one-to-many):一种对象可以属于另一种对象的多个实例,比如一张唱片包含多首歌。
多对多(many-to-many):两种对象彼此都是”一对多”关系,比如一张唱片包含多首歌,同时一首歌可以属于多张唱片。
(福利推荐:阿里云、腾讯云、华为云服务器最新限时优惠活动,云服务器1核2G仅88元/年、2核4G仅698元/3年,点击这里立即抢购>>>)
订单
完整订单主要有4个表组成:销售订单主表(salesOrder),订单行(salesOrderLine),产品(product),客户(customer),他们之间的关系如下:
订单和客户:多对一
首先创建客户表,主要有编号ID、手机、邮箱、会员卡号等字段
销售订单表添加客户编号字段,用于建立表关系
建立多对一关系,销售订单salesOrder表的customerId客户编号字段,指向客户customer的编号id字段,关系的英文名称customer用于查询关联对象的时候,设置导航属性名称为customer, 在查询订单的时候,通过customerId查询出customer对象,salesOrder对象格式如下:
{ "id": 4, "name": "足球 跑鞋订单", "createdDate": 1613182392000, "orderNo": "SO20210213101311719", "productPrice": 380, "expressFee": 10, "totalPrice": 390, "customerId": 2, "customer": { "id": 2, "name": "关羽" } }
订单和订单行:一对多
首先创建订单行表,主要有编号ID、订单编号、产品编号、单价、数量、小计等字段。
建立一对多关系,销售订单salesOrder表的编号id字段,指向订单行salesOrderLine的订单编号salesOrderId字段,关系的英文名称salesOrderLines用于查询关联对象的时候,设置导航属性名称为salesOrderLines, 内容为数组。
订单行和产品:多对一
产品表保持之前不变,主要有编号ID、订单编号、产品编号、单价、数量、小计等字段。
建立多对一关系,订单行salesOrderLine表的productId产品编号字段,指向产品product的编号id字段,关系的英文名称product用于查询关联对象的时候,设置导航属性名称为product, 在查询订单行的时候,通过productId查询出product对象。
完整关系图
订单salesOrder和产品product是多对多关系,通过订单行salesOrderLine这个中间表建立连接,实际是由“一对多”和“多对一”两个关系合并而成,设置完全部关系后,salesOrder对象格式如下:
{ "id": 4, "name": "足球 跑鞋订单", "createdDate": 1613182392000, "orderNo": "SO20210213101311719", "productPrice": 380, "expressFee": 10, "totalPrice": 390, "customerId": 2, "customer": { "id": 2, "name": "关羽" }, "salesOrderLines": [{ "id": 1, "name": "2个足球", "createdDate": 1613182392000, "salesOrderId": 4, "productId": 5, "unitPrice": 58, "quantity": 2, "subTotal": 116, "product": { "id": 5, "name": "足球" } }, { "id": 2, "name": "3双跑鞋", "createdDate": 1613182392000, "lastModifiedDate": 1613190617000, "salesOrderId": 4, "productId": 4, "unitPrice": 88, "quantity": 3, "subTotal": 264, "product": { "id": 4, "name": "跑鞋" } }] }
验证
创建订单
ui创建订单,支持主子表级联合保存,客户和产品可以通过select控件选择。
查询订单详情
小结
本文介绍了订单中一对多,多对一关系,通过配置的方式实现了对象之间的关联,无需编程实现了主子表CRUD操作,后续详细介绍所有的关系类型。
附crudapi简介
本系统属于产品级的零代码平台,不同于自动代码生成器,不需要生成Controller、Service、Repository、Entity等业务代码,程序运行起来就可以使用,真正0代码,可以覆盖基本的和业务无关的CRUD RESTful API。
你还在原价购买阿里云、腾讯云、华为云、天翼云产品?那就亏大啦!现在申请成为四大品牌云厂商VIP用户,可以3折优惠价购买云服务器等云产品,并且可享四大云服务商产品终身VIP优惠价,还等什么?赶紧点击下面对应链接免费申请VIP客户吧:
相关文章
- 生信爱好者周刊(第 35 期):生物信息行业的经济生态
- DDR5能给PC带来怎样提升?我们用12款软件进行了对比测试
- 【MAC】PS2019软件安装包+安装教程 PS全版本软件下载地址(包括最新的2023)
- 微星MEG Z690 ACE主板评测:变“胖”了 也变强了
- MSI MEG Z690 Godlike 评测
- 生信爱好者周刊(第 36 期):“费钱、费力、不费脑”是中国该提倡的科研吗?
- DDR4、DDR5究竟该选谁?Intel 11/12代酷睿深度测试
- 【MAC】PS2021软件安装包+安装教程 PS全版本软件下载地址(包括最新的2023)
- 显卡价格还不跌!买专业显卡玩游戏能行吗?
- 生信爱好者周刊(第 37 期):抛弃“影响”因子,计算颠覆因子!
- C++ XML 序列化器
- 生信爱好者周刊(第 38 期):选人不选项目的「基石项目」能否走向成功?
- 首批9只公募REITs的分红收益如何?
- 生信爱好者周刊(第 39 期):人生不短
- 基础设施REITS基金在哪里能买到?有哪些途径?
- 生信爱好者周刊(第 40 期):bTMB指导肿瘤免疫治疗临床研究
- Reits基金分红怎么分?分红方式是什么?
- 生信爱好者周刊(第 41 期):人体是一个共生生态系统
- 生信爱好者周刊(第 42 期):极简主义的胜利
- 中国reits基金怎么购买