在上一篇 序列號管理 中,產品和銷售訂單都是孤立的單表,本文經過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