设计树形结构
设计树形结构,后面再研究下是否可行
如果你的树深度是可预期的话,有个超简单的数据结构。你需要3个字段来表达这个树:
- id,本节点的primary key
- parent_id,其值为父节点的primary key
- key,忘了学名叫啥了,你可以称为线索
- 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的时候,
- 查找d的所有子孙节点:
select * from table_name where key like "${d.id}-${d.key}-%"
- 查找某个节点的所有子节点:
select * from table_name where key like "${d.id}-${d.key}-%" and level=${d.level}+1
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
2016-02-24 dapper关联关系查询小测试
2016-02-24 mysql空间数据相关操作