zoukankan      html  css  js  c++  java
  • 设计树形结构

    设计树形结构,后面再研究下是否可行

    如果你的树深度是可预期的话,有个超简单的数据结构。你需要3个字段来表达这个树:

    1. id,本节点的primary key
    2. parent_id,其值为父节点的primary key
    3. key,忘了学名叫啥了,你可以称为线索
    4. level,表示当前节点到根节点的距离

    其中,key字段的值为:从跟节点到父节点的primary key,中间用任意非数字符号分割。

    例如以下树状结构

    ├── a
    │   ├── d
    │   │   ├── p
    │   │   ├── q
    │   │   └── r
    │   ├── e
    │   └── f
    ├── b
    │   ├── x
    │   ├── y
    │   └── z
    ├── c

    | id | value | parent_id | key   | level |                                
    | 1  | a     | 0         | "-"    | 1     |
    | 2  | b     | 0         | "-"    | 1     |
    | 3  | c     | 0         | "-"    | 2     |
    | 4  | d     | 1         | "1-"   | 2     |
    | 5  | e     | 1         | "1-"   | 2     |
    | 6  | f     | 1         | "1-"   | 2     |
    | 7  | x     | 2         | "2-"   | 2     |
    | 8  | y     | 2         | "2-"   | 2     |
    | 9  | z     | 2         | "2-"   | 2     |
    | 10 | p     | 4         | "1-4-" | 3     |
    | 11 | q     | 4         | "1-4-" | 3     |
    | 12 | r     | 4         | "1-4-" | 3     |

    于是,在给定一个节点d的时候,

    1. 查找d的所有子孙节点:select * from table_name where key like "${d.id}-${d.key}-%"
    2. 查找某个节点的所有子节点:select * from table_name where key like "${d.id}-${d.key}-%" and level=${d.level}+1

    有追求,才有动力!

    向每一个软件工程师致敬!

    by wujf

    mail:921252375@qq.com

  • 相关阅读:
    Primary key and Unique index
    Hash unique和Sort unique
    Oracle索引扫描算法
    Oracle预估的基数算法
    PGA突破pga_aggregate_target限制
    aix ipcs使用说明
    开窗函数和聚合函数区别
    【39.66%】【codeforces 740C】Alyona and mex
    【81.82%】【codeforces 740B】Alyona and flowers
    Android SDK离线安装
  • 原文地址:https://www.cnblogs.com/wujf/p/6439588.html
Copyright © 2011-2022 走看看