天天看點

訂單和産品的多對多表關系在crudapi系統零代碼實作表關系管理

表關系管理

在上一篇

序列号管理

中,産品和銷售訂單都是孤立的單表,本文通過crudapi中表關系(relation)管理将多個表連接配接起來,形成一個整體。

概要

關系類型

表與表之間的關系(relation),分成三種。

一對一(one-to-one):一種對象與另一種對象是一一對應關系,比如一個學生隻能在一個班級。

一對多(one-to-many):一種對象可以屬于另一種對象的多個執行個體,比如一張唱片包含多首歌。

多對多(many-to-many):兩種對象彼此都是"一對多"關系,比如一張唱片包含多首歌,同時一首歌可以屬于多張唱片。

訂單

完整訂單主要有4個表組成:銷售訂單主表(salesOrder),訂單行(salesOrderLine),産品(product),客戶(customer),他們之間的關系如下:

訂單和客戶:多對一

訂單和産品的多對多表關系在crudapi系統零代碼實作表關系管理

首先建立客戶表,主要有編号ID、手機、郵箱、會員卡号等字段

訂單和産品的多對多表關系在crudapi系統零代碼實作表關系管理

銷售訂單表添加客戶編号字段,用于建立表關系

訂單和産品的多對多表關系在crudapi系統零代碼實作表關系管理

建立多對一關系,銷售訂單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": "關羽"
    }
}           

訂單和訂單行:一對多

訂單和産品的多對多表關系在crudapi系統零代碼實作表關系管理

首先建立訂單行表,主要有編号ID、訂單編号、産品編号、單價、數量、小計等字段。

訂單和産品的多對多表關系在crudapi系統零代碼實作表關系管理

建立一對多關系,銷售訂單salesOrder表的編号id字段,指向訂單行salesOrderLine的訂單編号salesOrderId字段,關系的英文名稱salesOrderLines用于查詢關聯對象的時候,設定導航屬性名稱為salesOrderLines, 内容為數組。

訂單行和産品:多對一

訂單和産品的多對多表關系在crudapi系統零代碼實作表關系管理

産品表保持之前不變,主要有編号ID、訂單編号、産品編号、單價、數量、小計等字段。

訂單和産品的多對多表關系在crudapi系統零代碼實作表關系管理

建立多對一關系,訂單行salesOrderLine表的productId産品編号字段,指向産品product的編号id字段,關系的英文名稱product用于查詢關聯對象的時候,設定導航屬性名稱為product, 在查詢訂單行的時候,通過productId查詢出product對象。

完整關系圖

訂單和産品的多對多表關系在crudapi系統零代碼實作表關系管理

訂單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": "跑鞋"
        }
    }]
}           

驗證

建立訂單

訂單和産品的多對多表關系在crudapi系統零代碼實作表關系管理

ui建立訂單,支援主子表級聯合儲存,客戶和産品可以通過select控件選擇。

查詢訂單詳情

訂單和産品的多對多表關系在crudapi系統零代碼實作表關系管理

小結

本文介紹了訂單中一對多,多對一關系,通過配置的方式實作了對象之間的關聯,無需程式設計實作了主子表CRUD操作,後續詳細介紹所有的關系類型。

附crudapi簡介

本系統屬于産品級的零代碼平台,不同于自動代碼生成器,不需要生成Controller、Service、Repository、Entity等業務代碼,程式運作起來就可以使用,真正0代碼,可以覆寫基本的和業務無關的CRUD RESTful API。

繼續閱讀