我需要創建表示像這樣的樹結構MySQL表:數據庫表設計爲有序樹列表
Root
|- Chapter 1
| |- Chapter 1.1
| | |- Article 1.1.1
| | |- Article 1.1.2
| |- Article 1.2
| |- Chapter 1.3
| |- Chapter 1.3.1
| | |- Article 1.3.1.1
| | |- Article 1.3.1.2
| |- Article 1.3.2
| |- Article 1.3.3
|- Chapter 2
|-Chapter 2.1
| |- ...
|- Chapter 2.2
|- ...
簡單地說,有兩種類型的實體:章及第二十。文章是其中沒有孩子的最小實體,而章可以包含子章節或文章作爲兒童實體。每個實體都有一個ID和一個名稱。
孩子的順序沒有設置規則,它可以是章節,然後是文章,然後是章節。
另一個挑戰是,當一章從一章重新定位到另一章時,所有的孩子也應該相應地重新定位。例如,當我將第1.3.1章移到第1.1章(因此第1.3.1章變爲第1.1.3章)時,第1.3.1.1條和第1.3.1.2條也應該移動併成爲第1.1.3.1條和第1.1.3.2。同時第1.3.2條和第1.3.3條分別成爲第1.3.1條和第1.3.2條。
所以我問的是,如何設計數據庫表以呈現這些關係?以及SQL如何添加新元素/刪除元素並重新定位元素? (我可以使用Ajax來處理重新定位交互,並使用PHP來生成這些層次結構編號)
另外,由於樹通常很長,我希望避免只更新所有元素,因爲只有一個元素重新定位。 (不確定這個願望在技術上是否可行。)
thx爲您的圖書推薦。可悲的是,我不能等這本書來解決我的問題。我會嘗試谷歌你所建議的技術。是的,章節編號將由PHP生成而不是存儲在數據庫中 – LazNiko