Muh*_*our 4 sql-server database-design hierarchical-data
我想创建具有未知深度的分层数据,如下所示:
创建类别和子类别,对于这些子类别,它们还将具有子类别等等。
子类别的深度未知,只能由用户在运行时完成。
我想的是将它们全部放在一个表中,并有一个父列保存父类别的 ID,如下所示:
我不知道这是否是正确的方法,但我看不到任何其他方法。
我进行了快速搜索,发现与 DB 表设计没有直接关系。
我正在使用 MS SQL Server 2012
小智 5
对此有 3 种常见方法和 1 种不太常见的方法。
1. 邻接表(你的方法) Pro -易于理解,在任何地方快速插入 Con -缓慢地递归查询未知深度的树
2. 嵌套集 Pro -查询速度快 缺点 -在列表中间插入很慢
3. 路径 - 类似hierarchyid(基本上是一个二进制路径) Pro - fast Con -像hierarchyid 通常长度有限 - 我认为hierarchyid 最大约为892 字节
4. Closure table Pro -最好的嵌套集和邻接表。快速插入和选择。 缺点 -一开始有点难以理解,但如果性能是一个问题,那么值得付出努力
资料来源:SQL 反模式 - Bill Karwin
| 归档时间: |
|
| 查看次数: |
1771 次 |
| 最近记录: |