您的位置:首页 > 数据库

数据库层级结构实现

2016-04-02 11:37 981 查看
主要参考了,这两篇文章:

层次关系数据库表的设计,无线层次

在数据库中存储层级结构

总的来说主要就是两大类方法

(1)自关联外键引用

①原理

就是加一个属性是parent_id,用来存储父节点的id。

②实现

MYSQL

在进行所有子节点遍历的时候,可以通过查询一次parent_id = id的,找到所有直接子节点,然后再对子节点使用,如此往复。

Oracle

有对应的层级遍历的语句,STRAT WITH ... CONNECTED BY

③优缺点

优点:在进行标签扩展的时候很方便,同时也能实现无线层级。

缺点:在进行标签查询的时候,对于mysql来说,不仅复杂,而且效率低下。

(2)编码

用编码来区分不同的层级,有两种方式,

直接上图

方式1:



编码后,可以通过like进行查询

优点:①查询方便,②并且能够根据CODE字段长度,算出所处层级③同级之间还可以有顺序

缺点:①标签总数量有限制②标签层数受限制③采用like查询效率也并非很高。

方式2:





优点:①通过某节点查询子节点,方便且效率高。②层次深度节点数量几乎不受限制。③同一父节点的直接子节点有顺序。

缺点:①标号需要先将数据存入一棵树,采用改进的先序遍历实现标号。②后续插入新节点,需要修改很多节点的值。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: