關於樹型結構,在關係型數據庫中的設計

第一種方案,當id類型爲整型時:select

咱們除了有一個記錄父id字段外,還應有一個路徑的字段如部門:detp(id , pid , path , name)。則有記錄以下:數據

1 , 0 , '/0/1' , '部門A'
2 , 0 , '/0/2' , '部門B'
3,  1 , '/0/1/3', '部門A.01'
4,  2 , '/0/2/4', '部門B.01'
5,  3 , '/0/1/3/5', '部門A.01.a'
...
當多了path字段後,能夠更加便捷的查詢瞭如:查詢

已知當前部門 xxx_dept(5,  3 , '/0/1/3/5', '部門A.01.a')path

  1.查詢其同部門
      select * from xxx_dept where pid = 3;
  2.查詢其子部門
      select * from   xxx_dept  where path like  '/0/1/3/5%' 
  3.查詢其父部門
      select * from xxx_dept  where  '/0/1/3/5' like path+'%'
  4.一樣刪除也就變得簡單了

當id 爲char時
這時咱們就在id這裏作改造了,表結果 xxx_dept(id,pId,name),有以下數據:

'001'  ,  '0' , '部門' '00101' , '001' , '部門A' '00102', '001' , '部門B' '0010201','00102' , '部門B1' ... 這時的結構就與上面差很少了,查詢方式也差很少了  

相關文章
相關標籤/搜索