Memo/Database/ツリー(階層)構造の設計

https://dexlab.net:443/pukiwiki/index.php?Memo/Database/%A5%C4%A5%EA%A1%BC%28%B3%AC%C1%D8%29%B9%BD%C2%A4%A4%CE%C0%DF%B7%D7
 

基本

  • リファレンスデータベースではツリー構造の再現が難しい(相性最悪)
  • XMLデータベース等のオブジェクト型データベースならば、容易

基本

ノード毎に親、左、右にIDを振る方法

  • ツリー状のそれぞれのノードの左と右に根っこの左から順に数字を割り当てていく
  • Storing Hierarchical Data in a Database
  • pgsql-jp: 32649 ツリー状のデータの取り扱い
  • メリット
    • 特定階層の一覧
    • 特定階層以下のノード数等簡単に求められる
    • 木構造に変更の無い場合有効
  • デメリット
    • 途中にノードを追加すると、ルートノード含めたノード番号全てを書き換えないといけない
  • テーブル構造
    CREATE TABLE cat (
    cat_id INTEGER NOT NULL PRIMARY KEY
    ,name TEXT NOT NULL DEFAULT ''
    ,p_idINTEGER NOT NULL DEFAULT 1
    ,l_idINTEGER NOT NULL DEFAULT 0
    ,r_idINTEGER NOT NULL DEFAULT 0
    );

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-09-15 (土) 07:31:37 (92d)