mysql--预排序遍历树(数据库级层存储的思考)

1:当我们要在数据库中存储一种级层关系,我们怎样存储呢?          1.1 比如说我要存储一种水果,水果又有香蕉,苹果等他们都有一些自我的属性。我们一般的想法就是先建一个fruit主表,然后一个表主键与fruit建立外键。           1.2还有如果我们存储一些地理位置(即有地区级,市级,县级的关系),并且只允许建一张表,我们的想法是在建表的时候多加一个字段parent,让
摘要由CSDN通过智能技术生成

    1:当我们要在数据库中存储一种级层关系,我们怎样存储呢?

          1.1 比如说我要存储一种水果,水果又有香蕉,苹果等他们都有一些自我的属性。我们一般的想法就是先建一个fruit主表,然后一个表主键与fruit建立外键。 

          1.2还有如果我们存储一些地理位置(即有地区级,市级,县级的关系),并且只允许建一张表,我们的想法是在建表的时候多加一个字段parent,让parent关联到下一个子级。 如下图所示:     


          1.3以上两种的级层关系都是说的是一种横向的关系,也就是说他们的关系横向数据关系比较多。所以当一种关系横向关系比较多的时候用一个parent关联子节点是一个飞涨有效的做法。但是当层级关系是纵向的话,若在使用这种方法是一个非常差劲的做法。因为如果纵向结构非常长的话,我要查一个节点的下级所有子节点必须在代码中进行for循环遍历,这个查找过程是一个非常耗时的过程,因此便有了预排序遍历树算法。预排序遍历树是将层级关系在数据库中存储为一种树的结构,从而使查询的时间复杂度降低。


         2.分析预排序遍历树

           预排序遍历树就是建一个表它有left节点,right节点和parent节点,如下图所示:

         如果在数据库中把数据这样存储,我们想要查询一个节点的它的所有的下

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值