数据存储方案-邻接列表模式

简介: 在程序开发中,我们常遇到用树型结构来表示某些数据间的关系,如企业的组织架构、商品的分类、操作栏目等,目前的关系型数据库都是以二维表的形式记录存储数据,而树型结构的数据如需存入二维表就必须进行Schema设计。

在程序开发中,我们常遇到用树型结构来表示某些数据间的关系,如企业的组织架构、商品的分类、操作栏目等,目前的关系型数据库都是以二维表的形式记录存储数据,而树型结构的数据如需存入二维表就必须进行Schema设计。

Adjacency List(邻接列表模式)

简单的说是根据节点之间的继承关系,显现的描述某一节点的父节点,从而建立二位的关系表。

表结构通常设计为{Node_id,Parent_id},如下图:

优点:

结构简单易懂,由于互相之间的关系只由一个parent_id维护,所以增删改都是非常容易,只需要改动和他直接相关的记录就可以。

缺点:

由于直接地记录了节点之间的继承关系,因此对Tree的任何CRUD操作都将是低效的,这主要归根于频繁的“递归”操作,递归过程不断地访问数据库,每次数据库IO都会有时间开销。

PS:在邻接列表模式的基础上还可以拓展的是平面表,区别是将节点的level当前节点的顺序也放入表中,比较适合类似评论等场景。

 

目录
相关文章
|
前端开发
UniApp 中的 image 属性讲解
UniApp 中的 image 属性讲解
1361 2
|
11月前
|
人工智能 移动开发 前端开发
WeaveFox:蚂蚁集团推出 AI 前端智能研发平台,能够根据设计图直接生成源代码,支持多种客户端和技术栈
蚂蚁团队推出的AI前端研发平台WeaveFox,能够根据设计图直接生成前端源代码,支持多种应用类型和技术栈,提升开发效率和质量。本文将详细介绍WeaveFox的功能、技术原理及应用场景。
6100 68
WeaveFox:蚂蚁集团推出 AI 前端智能研发平台,能够根据设计图直接生成源代码,支持多种客户端和技术栈
|
网络协议 安全 Java
难懂,误点!将多线程技术应用于Python的异步事件循环
难懂,误点!将多线程技术应用于Python的异步事件循环
一键自动化博客发布工具,用过的人都说好(csdn篇)
使用一键自动化博客发布工具blog-auto-publishing-tools把博客发布到csdn上。
一键自动化博客发布工具,用过的人都说好(csdn篇)
|
Rust 监控 JavaScript
抖音技术分享:飞鸽IM桌面端基于Rust语言进行重构的技术选型和实践总结
本文将介绍飞鸽IM前端团队如何结合Rust对飞鸽客户端接待能力进行的技术提升,一步步从概念验证、路径分解到分工开发,再到最后上线收益论证,并分享了其中遇到的技术挑战与经验总结等。
423 1
|
安全
PCB中泪滴的作用
泪滴在PCB设计中起到加固线路、保护焊盘和优化信号传输的作用,防止外力导致接触点断裂,确保焊盘稳定,减少阻抗突变。通过工具栏的"Tool"->"Teardrops"或快捷键"T+E"添加泪滴,选择操作模式(添加或移除)、对象(全部或选中)及配置选项,如泪滴形状、强制执行和大小调整。在添加过程中,可选曲线或直线样式,并能自动调节尺寸以适应空间限制。
432 4
|
JavaScript Linux 开发工具
CentOS7下安装nvm
CentOS7下安装nvm
3807 0
|
定位技术
ArcGIS手动分割矢量面要素从而划分为多个面部分的方式:Cut Polygons Tool
ArcGIS手动分割矢量面要素从而划分为多个面部分的方式:Cut Polygons Tool
585 1
|
传感器 消息中间件 芯片
RT-Thread 应用篇 — 在STM32L051上使用 RT-Thread (三、无线温湿度传感器 之 I2C通讯)
应用篇-在STM32L051上使用RT-Thread 第三篇,学习RT-Thread Studio如何添加自定义的.c .h文件, 同时开始我们的程序移植和设计。
779 1
RT-Thread 应用篇 — 在STM32L051上使用 RT-Thread (三、无线温湿度传感器 之 I2C通讯)
|
机器学习/深度学习 编解码 算法
【OpenVI】AIGC技术在图像超分上的创新应用
近10年来,深度学习技术得到了长足进步,在图像增强领域取得了显著的成果,尤其是以GAN为代表的生成式模型在图像复原、老片修复,图像超分辨率等方面大放异彩。图像超分辨率是视频增强方面,用于提升画质的典型应用。生成对抗网络GAN使得在图像分辨率增加的同时,保持细节特征,补充生成真实的纹理,其中应用广泛的工作是Real-ESRGAN。
1817 1