樹形結構的數據庫的存儲

      程序設計過程當中,咱們經常用樹形結構來表徵某些數據的關聯關係,如企業上下級部門、欄目結構、商品分類等等,一般而言,這些樹狀結構須要藉助於數據庫完成持久化。理想中樹形結構應該具有以下特徵:數據存儲冗餘度小、直觀性強;檢索遍歷過程簡單高效;節點增刪改查CRUD操做高效。數據庫

      列舉了一個食品族譜的例子進行講解,經過類別、顏色和品種組織食品,樹形結構圖以下:ui

       1,對樹形結構最直觀的分析莫過於節點之間的繼承關係上,經過顯示地描述某一節點的父節點,從而可以創建二維的關係表,則這種方案的Tree表結構一般設計爲:{Node_id,Parent_id}
 
      2,在基於數據庫的通常應用中,查詢的需求總要大於刪除和修改。爲了不對於樹形結構查詢時的「遞歸」過程,基於Tree的前序遍歷設計一種全新的無遞歸查詢、無限分組的左右值編碼方案,來保存該樹的數據。
      至於上述兩種方法的具體介紹和實現以及優缺參考: 樹形結構的數據庫表Schema設計
      其實咱們最重要的數據是這個樣子的:
      {Catagory:"Food",FoodCategory:"Fruit",color:"Red",Name:"Cherry"}
      {Catagory:"Food",FoodCategory:"Fruit",color:"Yellow",Name:"Banana"}
      {Catagory:"Food",FoodCategory:"Meat",Name:"Beef"}
      {Catagory:"Food",FoodCategory:"Meat",Name:"Pork"}
      ……
      其實我以爲這種關係型數據庫能夠用MongoDb來存儲(Json的數據格式),這樣用非關係數據庫的思想解決這個問題豈不是更好?這種能夠不經過遞歸過程不斷地訪問數據庫,每次數據庫IO都會有時間開銷;也避免了第二種節點的添加、刪除及修改代價較大,將會涉及到表中多方面數據的改動。是否是萌萌噠?一家之言,歡迎拍磚!
相關文章
相關標籤/搜索