在上一篇 序列号管理 中,产品和销售订单都是孤立的单表,本文经过crudapi中表关系(relation)管理将多个表链接起来,造成一个总体。express
表与表之间的关系(relation),分红三种。
一对一(one-to-one):一种对象与另外一种对象是一一对应关系,好比一个学生只能在一个班级。
一对多(one-to-many):一种对象能够属于另外一种对象的多个实例,好比一张唱片包含多首歌。
多对多(many-to-many):两种对象彼此都是"一对多"关系,好比一张唱片包含多首歌,同时一首歌能够属于多张唱片。编程
完整订单主要有4个表组成:销售订单主表(salesOrder),订单行(salesOrderLine),产品(product),客户(customer),他们之间的关系以下:segmentfault
首先建立客户表,主要有编号ID、手机、邮箱、会员卡号等字段api
销售订单表添加客户编号字段,用于创建表关系数组
创建多对一关系,销售订单salesOrder表的customerId客户编号字段,指向客户customer的编号id字段,关系的英文名称customer用于查询关联对象的时候,设置导航属性名称为customer, 在查询订单的时候,经过customerId查询出customer对象,salesOrder对象格式以下:bash
{ "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, 内容为数组。ui
产品表保持以前不变,主要有编号ID、订单编号、产品编号、单价、数量、小计等字段。spa
创建多对一关系,订单行salesOrderLine表的productId产品编号字段,指向产品product的编号id字段,关系的英文名称product用于查询关联对象的时候,设置导航属性名称为product, 在查询订单行的时候,经过productId查询出product对象。code
订单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操做,后续详细介绍全部的关系类型。
本系统属于产品级的零代码平台,不一样于自动代码生成器,不须要生成Controller、Service、Repository、Entity等业务代码,程序运行起来就可使用,真正0代码,能够覆盖基本的和业务无关的CRUD RESTful API。
官网地址:https://crudapi.cn
测试地址:https://demo.crudapi.cn/crudapi/login