在上一篇 訂單和產品的多對多表關係在crudapi系統零代碼實現 中,介紹了訂單中一對多、多對1、以及多對多關係,本文主要介紹一對一關係和無限主子表在crudapi系統中的應用。chrome
一對一關係是指關係數據庫中兩個表之間的一種關係。關係數據庫中第一個表中的單個行只能夠與第二個表中的一個行相關,且第二個表中的一個行也只能夠與第一個表中的一個行相關。
在一對多關係中,外鍵創建在子表中;在一對一關係中,外鍵能夠建在主表或者子表中,爲了保持一致,crudapi系統中統一將一對一關係中外鍵也創建在子表中,這樣的好處是若是未來須要解除表關係的時候,無需修改主表結構。數據庫
客戶customer主表中,一般存放基本信息,若是有更多資料能夠考慮單獨存放在客戶資料customerProfile表中,它們之間能夠用一對一關係實現。編程
以前建立客戶customer表保持不變segmentfault
建立客戶資料customerProfile表,主要包括客戶編號字段、生日、性別、愛好等,其中客戶編號customerId字段用於創建表關係api
創建主子方向一對一關係,客戶customer表的編號id字段,指向客戶資料customerProfile的客戶編號customerId字段,關係的英文名稱profile用於查詢關聯對象的時候,設置導航屬性名稱爲profile。數組
創建子主方向一對一關係,客戶資料customerProfile的客戶編號customerId字段,指向客戶customer表的編號id字段,關係的英文名稱customer用於查詢關聯對象的時候,設置導航屬性名稱爲customer,和以前訂單和客戶多對一關係有點相似,關聯對象都是customer對象,不過那個時候多個訂單能夠關聯同一個客戶,如今一個客戶資料只能關聯一個客戶。bash
ui建立客戶,同時輸入子表客戶資料信息,chrome打開網絡請求記錄,能夠看到POST body以下:網絡
{ "name": "劉備", "mobile": "13699998888", "email": "liubei@crudapi.cn", "profile": { "name": "劉備資料", "birthday": "2021-02-14", "sex": "男", "hobby": "騎馬" } }
其中profile爲客戶資料信息,測試
查詢客戶詳情,發現客戶和客戶資料信息一次性保存成功!上一篇文章中,銷售訂單和訂單行是一對多主子關係,
子表是數組形式,在一對一主子關係中子表是對象形式,在數據庫中表現形式是相同的,外鍵都是建在子表中。ui
也能夠直接建立客戶資料表,選擇掛在指定客戶下,能夠達到一樣的效果。
經過設置表關係,一對多和一對一(主子方向)理論上能夠無限關聯下去,全部的表一次性級聯保存,好比省市區一般能夠達到3級子表,目錄文件屬於無限子表。
省和市是一對多關係,市和區是一對多關係。
ui效果,江蘇省包括南京和淮安兩個城市,南京市又包括江寧區和雨花臺區。
一級目錄下能夠包括子目錄和文件,若是是子目錄,子目錄能夠繼續包括子目錄和文件
圖目錄無限子表-1
圖目錄無限子表-2
ui效果,子表包括目錄和文件,還能夠繼續展開下去,因爲屏幕大小的緣由,這裏就不一一展現了。
查詢目錄列表
本文介紹了一對一關係,包括主子方向和子主方向,加上一篇文章中一對多,多對一,多對多關係,到目前爲止全部的表關係都實現了。crudapi系統經過配置的方式實現了對象之間的關聯,無需編程實現了主子表CRUD操做。
本系統屬於產品級的零代碼平臺,不一樣於自動代碼生成器,不須要生成Controller、Service、Repository、Entity等業務代碼,程序運行起來就可使用,真正0代碼,能夠覆蓋基本的和業務無關的CRUD RESTful API。
官網地址:https://crudapi.cn
測試地址:https://demo.crudapi.cn/crudapi/login