逻辑数据库设计 - 单纯的树(递归关系数据)

原文链接》》逻辑数据库设计 - 单纯的树(递归关系数据)

一、邻接表:依赖父节点

二、路径枚举

三、嵌套集

四、闭包表

设计 表数量 查询子 查询树 插入 删除 引用完整性
邻接表 1 简单 简单 简单 简单
枚举路径 1 简单 简单 简单 简单
嵌套集 1 困难 简单 困难 困难
闭包表 1 简单 简单 简单 简单

1、邻接表是最方便的设计,并且很多软件开发者都了解它。并且在递归查询的帮助下,使得邻接表的查询更加高效。

2、枚举路径能够很直观地展示出祖先到后代之间的路径,但由于不能确保引用完整性,使得这个设计比较脆弱。枚举路径也使得数据的存储变得冗余。

3、嵌套集是一个聪明的解决方案,但不能确保引用完整性,并且只能使用于查询性能要求较高,而其他要求一般的场合使用它。

4、闭包表是最通用的设计,并且最灵活,易扩展,并且一个节点能属于多棵树,能减少冗余的计算时间。但它要求一张额外的表来存储关系,是一个空间换取时间的方案。

逻辑数据库设计 - 单纯的树(递归关系数据)