了解Modified Preorder Tree
id,本节点的primary key
parent_id,其值为父节点的primary key
key,忘了学名叫啥了,你可以称为线索
level,表示当前节点到根节点的距离
其中,key字段的值为:从跟节点到父节点的primary key,中间用任意非数字符号分割。
例如以下树状结构
1 | ├── a |
对应的数据库表值为:
1 | | id | value | parent_id | key | level | |
于是,在给定一个节点d的时候,
查找d的所有子孙节点:select * from table_name where key like "${d.key}-${d.id}-%"
查找某个节点的所有子节点:select * from table_name where key like "${d.key}-${d.id}-%" and level=${d.level}+1
这个设计,结构非常简单。key和level是辅助字段,维护这两个字段成本很低,即使全部重建要比MPT简单多了。