运用无限级分类管理数据库原理详解

50 篇文章 0 订阅
34 篇文章 0 订阅

在做网站开发的过程中需要运用无限极分类管理数据库中的数据。但是无限级分类的原理是什么呢?总结一下吧。
无限极分类就是子节点是父节点分叉产生的。
具体实现后续跟进,这里先总结原理!

以2叉树为例:
1. 无限极分类的最简单易懂的模型就是2叉树。2叉树顾名思义就是只有2个叉的树。既是度为2的树(在离散数学中,有向图的节点的度分为出度和入读,既是a—->b,称为b的入度尾1,a的出度为1.但是在树中只有出度没有入度。既是说正在树中的度都说的是出度。2叉树就是度为2的树)。树中的节点的度都是小于或者等于2!(当然2叉树还分为完全2叉树和不完全2叉树,可以百度2叉树。)
2. 节点的构造原则

  2.1 每个节点只有2个子节点。
  2.2父节点存在,子节点才能存在。反之不成立!
  2.3最顶层的节点不存在就说明树不存在,表为空。
模型图如下:
这里写图片描述
          如上图所示,节点1和2位顶层节点,节点3为节点1的子节点,节点1为节点3的父节点。节点3为节点4的兄弟节点。每个节点最多只有2个子节点。只有1个父节点或者顶层节点没有父节点。

  1. 相应数据库的设计。

              每一个节点至少有一个自己的唯一标示(主键)id和一个父节点的唯一标示(pid)。
              注意,节点的父节点不能是自己的子节点。(拗口,用图说话)
    这里写图片描述
              如上图,节点4是节点3的兄弟节点,节点3是节点6的父节点,所以节点4是节点6的叔叔节点(父辈节点),所以节点6的子节点不能是节点4.节点5和节点1也一样!

  2. 数组表示。如下图
    模型图:
    这里写图片描述
    数组表示代码(php)          这里写图片描述
    id为2的父节点的为id为1的节点(pid=1),id为3的节点的父节点的id为2(pid=2)。,,,,,

  3. 数据库示例:
    这里写图片描述

原理都讲完了。画个多度的树形象的说明一下。
这里写图片描述
          从左到右,左边的是右边的父节点,右边的是左边的子节点。左边的节点的id是右边节点的pid。

          1,其实相信问题也看出来了,这样分类的树只能从左向右搜索不能从右向左搜索!也就是父子节点之间是靠子节点的pid联系在一起的。这样导致各种搜索遍历都变得很缓慢。比如当我只有节点17的信息时,我通过它去寻找节点14的信息只能是向上遍历到根节点,然后向下遍历到节点14.查找十分缓慢。所以个人觉得可以在每个节点都添加一个key直接指向根节点(因为只要去别的分支就必须通过根节点,直接来个key指向根节点查找更为便捷)。
          2删除节点操作异常麻烦。如果要删除的节点的子节点补位空,则不能删除节点。否则子节点也被一起删除。个人觉得这时候可以考虑添加后端代码,直接控制其变为新节点通过key(前面提到过)指向根节点。生成新的节点。或者向上“衔接“,自动补位!

以上是个人思考,有不对请指正,有新路径请留个脚印!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
打开dns.37it.cn免费申请二级域名解析方可使用 否则会出现00002993错误 用替换工具ultrareplace,文本编辑工具:Notepad++ 下面是需要替换的地方 ceshi.vvei.cn 超级人脉管家 http://mp.weixin.qq.com/s?__biz=MzA4MTI1OTI1OA==&mid=212268202&idx=1&sn=581c81665c013e1ee5c01db440df2593#rd 这个到时候自己撰写一份新手指南替换 掉 http://123.com/index.php?g=Admin&m=Login&a=index 后台地址 admin admin888 微信管理>>自定义回复 修改 http://ceshi.vvei.cn/ 替换为 你的网站 1、数据库连接地址:Public\Conf\config.php 2、微信菜单修改:Public\Conf\button_config.php,然后“微信管理”-“菜单管理”-“重新生成菜单”。 另下面三行代码请修改: $link_config (还没有关注的,引导关注,点击“立即关注”进入微信文章) $config_good_pic (购买时,页面上面的产品图) $headimgurl (没有购买前的头部左上角LOGO) 3、公众号里面的支付授权目录:直接域名就可以 支付回调URL:直接域名就可以 告警通知URL:先空着 4、更“换推广二维码”图片,图片在根目录保持格式、名字不变。记得在服务器根目录/imgpublic里删除其它多余的图片,只留benbendou.jpg即可。 5、页面的CSS在这里改:Application\Tpl\App\default\Public\Static\css 6、如果头像出不来,可以把根目录的imgpublic文件夹权限设为777 7、微信支付前显示的图片: Application\Tpl\App\default\Public\Static\images\productsinfo.jpg 对应更改的文件:Application\Tpl\App\default\Index\pay.html 8、更改下单时的“备注”内容:Application\Tpl\App\default\Index\index.html 9、关于修改微信关注后回复的内容目录地址: Application\Lib\Action\Admin\WechatAction.class.php 可修改第249,263,267行,可修改中文汉字,不要修改参数代码。 =============================================================== 后台登录:http://您的域名/index.php?g=Admin 初始帐号:admin 密 码:admin888
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值