1:当我们要在数据库中存储一种级层关系,我们怎样存储呢?
1.1 比如说我要存储一种水果,水果又有香蕉,苹果等他们都有一些自我的属性。我们一般的想法就是先建一个fruit主表,然后一个表主键与fruit建立外键。
1.2还有如果我们存储一些地理位置(即有地区级,市级,县级的关系),并且只允许建一张表,我们的想法是在建表的时候多加一个字段parent,让parent关联到下一个子级。 如下图所示:
1.3以上两种的级层关系都是说的是一种横向的关系,也就是说他们的关系横向数据关系比较多。所以当一种关系横向关系比较多的时候用一个parent关联子节点是一个飞涨有效的做法。但是当层级关系是纵向的话,若在使用这种方法是一个非常差劲的做法。因为如果纵向结构非常长的话,我要查一个节点的下级所有子节点必须在代码中进行for循环遍历,这个查找过程是一个非常耗时的过程,因此便有了预排序遍历树算法。预排序遍历树是将层级关系在数据库中存储为一种树的结构,从而使查询的时间复杂度降低。
2.分析预排序遍历树
预排序遍历树就是建一个表它有left节点,right节点和parent节点,如下图所示:
如果在数据库中把数据这样存储,我们想要查询一个节点的它的所有的下