資料庫設計樹形結構的技巧

2022-09-03 13:15:15 字數 733 閱讀 4350

前言

當業務中遇到樹形結構時,比如選單,省市區,部門等時如何設計資料庫。一種設計可以通過每個字段帶有parent id 來遞迴獲取所有的節點 ,也可以通過另一種方法來獲取某個節點的子節點

使用level記錄當前節點的父節點code

新增乙個輔助的varchar欄位level,欄位的邏輯是多個部門的id使用.來連線,假設首層使用0表示,每乙個層級使用上一層的level拼接上.再拼接父級部門id來表示

idlevel

parent10-

020-1-13

0-1-2-

2當查詢id為2 的子節點時

select l.* from (select level from table

where id = 2 )as le,

table l

where l.`level` like concat(le.level,'%')

使用union包括該節點

下面這種不行,因為如果查某個根節點(0-)則會查出所有根節點,如果有company id 也可

select id, level from res_location where level like concat((select level from res_location where id = 233),'%')
小結 :

references

資料庫儲存樹形結構的資料

最近接觸樹形結構資料非常的多,幾乎超過了過去8年多,開發所有系統的總和.本來嘛,一般的遞迴就可以解決了,可是這個系統中總是需要頻繁的訪問樹結點,及父結點,子結點,動不動就要遞迴,且樹的使用非常之多,做的多了搞的人都要嘔吐了,下面在網上找到幾篇比較有用的資料,記錄彙總一下.首先,資料庫不一定要用傳統的...

資料庫設計技巧

1.設計資料庫之前 需求分析階段 1 理解客戶需求,詢問使用者如何看待未來需求變化。讓客戶解釋其需求,而且隨著開發的繼續,還要經常詢問客戶保證其需求仍然在開發的目的之中。2 了解企業業務可以在以後的開發階段節約大量的時間。3 重視輸入輸出。在定義資料庫表和字段需求 輸入 時,首先應檢查現有的或者已經...

資料庫設計技巧

1.設計資料庫之前 需求分析階段 1 理解客戶需求,詢問使用者如何看待未來需求變化。讓客戶解釋其需求,而且隨著開發的繼續,還要經常詢問客戶保證其需求仍然在開發的目的之中。2 了解企業業務可以在以後的開發階段節約大量的時間。3 重視輸入輸出。在定義資料庫表和字段需求 輸入 時,首先應檢查現有的或者已經...