mysql 自连接 树形_自连接表的相关问题(树形结构)
問題一:
自連接表肯定是相似??Id(PK),parentId(FK),name?….了
Id假如是主鍵的話,parentId就是外鍵了,
可是樹形結構肯定是有根節點了,那么根節點的parentId按理說應該是null,原因是根節點沒有父節點,
可是主鍵Id是不能為空的啊,導致外鍵parentId也不能為null,那本人輸入數據的時候怎么辦呢?
問題二:
本人為了避免問題一中的麻煩,本人單獨弄了個uuid主鍵ID,而然后是唯一索引Bh(編號),然后是上級編號parentBh
也就是自連接表項為???ID(PK),Bh(unique),parentBh(FK),name…
這樣以來,外鍵parentId就可以為null了,也就實現了樹形結構根節點的父節點為null了。
本來還挺高興,但是網上有人說本人這么設計數據庫根本不合理,說外鍵就應該關聯主鍵,真的是這樣么,那本人說的問題一怎么樣解決呢?本人看很多人定義自連接表,parentId都default?null,卻不設置為外鍵,這樣根節點的parentId的確默認為null了,可是他們這樣豈不是就不能用數據庫自帶的級聯操作了么?只能程序控制parentId和Id的一致性了吧?
問題三:
一開始本人是按照問題二描述的那樣設計的數據庫表,可是后來本人發現,假如是兩張表有主外鍵關聯關系的話,本人修改或刪除主表的唯一索引,從表的外鍵會自動修改或刪除/set?null。
可是假如是自連接表的話,就只能級聯刪除/set?null,?卻不能級聯更新,這是為什么呢?一修改唯一索引就報錯。
問題四:
由于本人不會在hibernate配置文件里(hbm.xml文件)配置主外鍵關聯,所以只能像以前那樣寫個基本的pojo和.hbm.xml,然后生成數據庫表,最后本人在數據庫中設置的外鍵關聯,現在使用沒出現什么錯誤,問一下是不是可以這樣,而不必非得把hibernate配置中也加上?和之類的配置呢?
問題五:問一下假如客戶想要看到數據庫表中數據的樹形結構,不知道這樣的形式能否容易實現呢?
請有耐心、有經驗的高手們幫幫小弟吧!
解決方案
40
呵呵,關鍵是你的父ID可以為空呀。你的思路有問題了。
CodeBye 版權所有丨如未注明 , 均為原創丨本網站采用BY-NC-SA協議進行授權 , 轉載請注明自連接表的相關問題(樹形結構)!
總結
以上是生活随笔為你收集整理的mysql 自连接 树形_自连接表的相关问题(树形结构)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: excelvba怎么设置不打开文件自动保
- 下一篇: mac鼠标和触控板滚动方向_Apple