位置: 编程技术 - 正文

MySQL多层级结构-树搜索介绍(mysql三层架构)

编辑:rootadmin

推荐整理分享MySQL多层级结构-树搜索介绍(mysql三层架构),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:mysql三层架构,mysql多层级表设计,mysql 层级关系,mysql多级树,mysql分层架构,mysql 层级关系,mysql有几层,mysql多层级表设计,内容如对您有帮助,希望把文章链接给更多的朋友!

基本上在每个系统中都有那么几张表是自关联父子关系的结构。往往有很多人都是使用pid来做关联。在刚进入IT行业时使用CAKEPHP框架编写WEB的时候,使用它里面的一个ACL plugin实现权限管理的时候。发现一个表结构硬是不明白是怎么回事。具体表结构如下:

我们可以看到上面 acos 表用有lft、rght这两个字段。起初我根本就不明白这两个是做什么用的,几次直接修改数据导致数据错乱。

1.2. 原理解释

其实这就是树的后续遍历的每个节点的左值、右值。如下图表示:

1.3. 树的使用(引用上图树结构)

构造数据

查找 '节点4' 的所有子节点

思路:我们只要查找出 节点左值在 '节点4' 左值和右值之间的节点通俗说法:能被 '节点4' 包住的节点,通过左节点和右节点来判断是否被 '节点4' 包住。

查找 '节点6' 的所有父节点思路: 找出 左值小于 '节点6' 并且 右值大于 '节点6' 的节点。通俗说法: 找出那个节点能将 '节点6' 给包住。

MySQL多层级结构-树搜索介绍(mysql三层架构)

计算 '节点4' 的深度如果是MySQL5.7 需要修改sql_mode

获取 '节点4' 的所有子节点, 和相关深度

插入数据数据的插入是一件相当麻烦的事,需要更新节点的所有父节点的右值和和所有孩子节点的 '左值、右值'如上图,如果我们想为 '节点4' 添加一个孩子 '节点'(为了不给自己挖坑,我们将添加的孩子放在父节点的最左边),就是将 '节点' 放在 '节点5' 的左边。如下图:

最终我们获得的结果,如下图:

上图 '紫色' 的是节点需要变更的左值和右值,'绿色' 的是新增节点的值。更新思路:1、将左值大于 '节点4' 的左值的节点的左值 加2。2、将右值大于 '节点4' 的左值的节点的右值 加2。

插入思路1、将 '节点' 的左值设置为 '节点4' 的左值 加、将 '节点' 的右值设置为 '节点4' 的左值 加2

验证

1.4. 总结

这种树结构一般会用在查询多增加修改少的场景中(比如地区表,类别表之类的)。在现实中其实还有些表的数据字段很多,并且具有层级关系。但是他们层级关系并不需要实时的那么准确(最终能达到数据数据一直就行),这是我们会将这种层级关系的字段和主表分开放在另外一个表。这样为了加快更新。如果实时更新影响到了性能,这是我们会考虑使用kafka(我们还没有发现性能很差)。

MySQL多层级结构-区域表使用树详解 1.1.前言前面我们大概介绍了一下树结构表的基本使用。在我们项目中有好几块有用到多层级的概念。下面我们哪大家都比较熟悉的区域表来做演示。1.2.

解决Mysql数据库插入数据出现问号(?)的解决办法 首先,我用的mysql数据库是5.7.版本。出现的问题:1.插入数据显示错误,插入不成功,出现:Incorrectstringvalue:'xCDxF5xD5xBCxBExA9'forcolumn'Sname'atrow.插

Mysql最新版本的数据库安装教程(5.7) 默认情况,在CentOS6.8下通过yum安装的是5.1.版本,现在需求是安装5.7版本。Mysql官方网站:

标签: mysql三层架构

本文链接地址:https://www.jiuchutong.com/biancheng/347908.html 转载请保留说明!

上一篇:MySQL中易被我们忽略的细节(mysql为什么很受大家青睐)

下一篇:MySQL多层级结构-区域表使用树详解(mysql三层架构)

  • 公司对个人的欠款怎么发律师函给他
  • 初中毕业可以考警察学校吗
  • 无进项开票税点
  • 新公司第一年要做亏
  • 在分公司签的合同能转到总公司吗
  • 支付宝收据在哪儿看
  • 纳税总额是否包含增值税进项
  • 客户往来对账单
  • 出口货款收不回来怎么办
  • 子公司给母公司开票
  • 重新建账要以前的期初余额吗
  • 税控系统技术维护费抵扣如何填报
  • 工程款发票备注栏项目名称
  • 试运营和正式运营间隔
  • 企业的哪些活动属于投资活动?
  • 行政事业单位国有资产处置收入包括
  • 非公司车辆的使用费如何入账?
  • 承兑贴息的会计分录
  • 工伤赔付是那个出钱呢
  • symtray.exe - symtray是什么进程 有何作用
  • 以前年度长期待摊费用没摊销怎么办
  • msdn原版win7
  • php程序员不应该做的事
  • 水星mw300re说明书
  • 前端 vue
  • pow是什么意思中文翻译
  • php
  • 浅谈财务风险的防范与控制
  • win10磁盘碎片整理打不开
  • win7安装包下载
  • conda不是内部或外部命令
  • PHP 中TP5 Request 请求对象的实例详解
  • 怎么确认个税填报成功
  • thinkphp生成html
  • thinkphp withjoin
  • 外出经营活动税收管理
  • vue3的理解
  • php5.5
  • php和mysql关系
  • 残保金工资总额是计提还是实发
  • 借款利息记入短期借款吗
  • 油票抵税的顺序步骤是什么
  • 母子公司转让不动产 契税
  • 施工单位代建收费合法吗
  • 织梦系统如何更换网站内容
  • mysql内连接查询使用汉语作为官方语言的所有国家
  • mysql基本语法
  • java处理字符串公式运算
  • discuz设置门户
  • 咨询公司需要交税吗
  • 收到退货怎么做会计分录
  • sh sqlplus
  • 营改增利息收入增值税
  • 股东权益合计等于净资产吗
  • 小规模纳税人开专票可以抵扣进项吗
  • 公司转帐支票可以转账吗
  • 以产品偿还债务怎么算
  • 工程款项目的发包人是谁
  • 退回的附加税能退回来吗
  • 财务费用利息收入怎么记账
  • 进项做成了销项怎么调账
  • 保险由承租方还是出租方承担
  • mysql密码怎么找回
  • 如何创作图文并茂的图片
  • windows7桌面回收站打不开
  • win10系统自带虚拟机无法启
  • Win7系统如何打开摄像头
  • 微信小程序wx.request实现后台数据交互功能分析
  • mvp设计方案
  • quick-lua touch 触摸事件
  • javascript中函数
  • 聊天界面的新消息通知设置 找不到
  • Android优化蓝牙
  • jquery checkbox无法用attr()二次勾选问题的解决方法
  • android 加密算法
  • 杭州残保金2021年新政策申报时间
  • 异地预缴增值税销售额是含税
  • 湖南社保费申报测算管理系统登录不了
  • 专票清单用什么纸打印
  • 江苏税务局网上预缴税流程
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设