写点什么

订单和产品的多对多表关系在 crudapi 系统零代码实现

用户头像
crudapi
关注
发布于: 2021 年 03 月 31 日
订单和产品的多对多表关系在crudapi系统零代码实现

表关系管理


在上一篇 序列号管理 中,产品和销售订单都是孤立的单表,本文通过 crudapi 中表关系(relation)管理将多个表连接起来,形成一个整体。

概要

关系类型

表与表之间的关系(relation),分成三种。

一对一(one-to-one):一种对象与另一种对象是一一对应关系,比如一个学生只能在一个班级。

一对多(one-to-many):一种对象可以属于另一种对象的多个实例,比如一张唱片包含多首歌。

多对多(many-to-many):两种对象彼此都是"一对多"关系,比如一张唱片包含多首歌,同时一首歌可以属于多张唱片。


订单


完整订单主要有 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 操作,后续详细介绍所有的关系类型。


附 demo 演示

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


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

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


发布于: 2021 年 03 月 31 日阅读数: 8
用户头像

crudapi

关注

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

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

评论

发布
暂无评论
订单和产品的多对多表关系在crudapi系统零代码实现