根据邻接表数据生成闭包表,树结构表设计,支持MySQL,Oracle,DB2

搞定安卓11+抓包难题:用Kitsune Mask、magic_overlayfs和LSPosed三件套绕过SSL Pinning(保姆级教程) 本文详细解析了安卓11+系统中抓包面临的核心挑战,包括SSL Pinning和Root检测机制,并提供了使用Kitsune Mask、magic_overlayfs和LSPosed三件套的完整解决方案。通过动态分区技术解析和工具链配置,帮助开发者绕过安全限制,实现高效抓包分析。 阅读详情

用一句SQL查询邻接表生成闭包表数据

最常见的树结构表是邻接表,包含id、pid字段,比如区域表(国、省、市、区),通常用CTE递归查询节点的所有子节点和父节点。
另一种常见的设计方式是闭包表,能直接查询节点的所有子节点和父节点。

一般通过邻接表生成闭包表的数据,下面举例说明。

邻接表数据
在这里插入图片描述

对应的闭包表数据
在这里插入图片描述

MySQL实现

# MYSQL版本,需要MySQL 8以上
WITH RECURSIVE
    area (ID, PID, AREA_LEVEL) AS (
        SELECT '北京市', '中国', 1
        UNION ALL
        SELECT '上海市', '中国', 1
        UNION ALL
        SELECT '徐汇区', '上海市', 2
        UNION ALL
        SELECT '漕河泾', '徐汇区', 3
    ),
    all_child (ID, PID, AREA_LEVEL) AS (
        SELECT ID, PID, AREA_LEVEL
        FROM area
        WHERE PID = '中国'
#          如果只生成徐汇区的数据,请改用下面的条件
#          WHERE ID = '徐汇区'
        UNION ALL
        SELECT area.ID, area.PID, area.AREA_LEVEL
        FROM area,
             all_child
        WHERE area.PID = all_child.ID
    ),
    all_parent (ID, B_PID, B_AREA_LEVEL, PID, AREA_LEVEL) AS (
        SELECT ID, ID, 0, PID, AREA_LEVEL
        FROM all_child
        UNION ALL
        SELECT all_parent.ID, area.PID, all_parent.B_AREA_LEVEL + 1, all_parent.PID, all_parent.AREA_LEVEL
        FROM area,
             all_parent
        WHERE area.ID = all_parent.B_PID
    )
SELECT ID,
       B_PID
#        B_AREA_LEVEL,
#        PID,
#        AREA_LEVEL
FROM all_parent
ORDER BY AREA_LEVEL, ID DESC, B_AREA_LEVEL DESC;

Oracle实现

-- Oracle版本,需要Oracle 11以上
WITH area (ID, PID, AREA_LEVEL) AS (
    SELECT '北京市', '中国', 1
    FROM DUAL
    UNION ALL
    SELECT '上海市', '中国', 1
    FROM DUAL
    UNION ALL
    SELECT '徐汇区', '上海市', 2
    FROM DUAL
    UNION ALL
    SELECT '漕河泾', '徐汇区', 3
    FROM DUAL
),
     all_child (ID, PID, AREA_LEVEL) AS (
         SELECT ID, PID, AREA_LEVEL
         FROM area
         WHERE PID = '中国'
--          如果只生成徐汇区的数据,请改用下面的条件
--          WHERE ID = '徐汇区'
         UNION ALL
         SELECT area.ID, area.PID, area.AREA_LEVEL
         FROM area,
              all_child
         WHERE area.PID = all_child.ID
     ),
     all_parent (ID, B_PID, B_AREA_LEVEL, PID, AREA_LEVEL) AS (
         SELECT ID, ID, 0, PID, AREA_LEVEL
         FROM all_child
         UNION ALL
         SELECT all_parent.ID, area.PID, all_parent.B_AREA_LEVEL + 1, all_parent.PID, all_parent.AREA_LEVEL
         FROM area,
              all_parent
         WHERE area.ID = all_parent.B_PID
     )
SELECT ID,
       B_PID
--        B_AREA_LEVEL,
--        PID,
--        AREA_LEVEL
FROM all_parent
ORDER BY AREA_LEVEL, ID DESC, B_AREA_LEVEL DESC;

DB2实现

-- DB2版本
WITH area (ID, PID, AREA_LEVEL) AS (
    VALUES ('北京市', '中国', 1),
           ('上海市', '中国', 1),
           ('徐汇区', '上海市', 2),
           ('漕河泾', '徐汇区', 3)
),
     all_child (ID, PID, AREA_LEVEL) AS (
         SELECT ID, PID, AREA_LEVEL
         FROM area
         WHERE PID = '中国'
--          如果只生成徐汇区的数据,请改用下面的条件
--          WHERE ID = '徐汇区'
         UNION ALL
         SELECT area.ID, area.PID, area.AREA_LEVEL
         FROM area,
              all_child
         WHERE area.PID = all_child.ID
     ),
     all_parent (ID, B_PID, B_AREA_LEVEL, PID, AREA_LEVEL) AS (
         SELECT ID, ID, 0, PID, AREA_LEVEL
         FROM all_child
         UNION ALL
         SELECT all_parent.ID, area.PID, all_parent.B_AREA_LEVEL + 1, all_parent.PID, all_parent.AREA_LEVEL
         FROM area,
              all_parent
         WHERE area.ID = all_parent.B_PID
     )
SELECT ID,
       B_PID
--        B_AREA_LEVEL,
--        PID,
--        AREA_LEVEL
FROM all_parent
ORDER BY AREA_LEVEL, ID DESC, B_AREA_LEVEL DESC;
同花顺Supermind量化交易 风险控制建模--海龟交易法则 A.市场与标的海龟交易法则应用于流动性高的市场中,选择交易量较大的标的进行交易。本文以沪深300指数ETF为标的,构建海龟交易法则。B、仓位:仓位是海龟交易系统最核心的部分,通过ATR真实波幅指标来管理仓位。第一步:计算True Range,简称TR。TR = Max ( H−L , H−P , P−L ) ,其中H为当日日内最高价,L为当日日内最低价,P为前一日收盘价。第二步:计算ATRATR = mean ( TR , 20 ) , 即计算过去20天的TR的平均值,ATR是TR的移动平均值。 阅读详情

相关推荐

从爱好者到工程师:如何低成本体验RFSoC ZU47DR?性能实测与避坑指南

本文详细介绍了如何低成本体验赛灵思RFSoC ZU47DR芯片,包括二手开发板选购、租赁服务、精简开发环境搭建等实用方案。通过性能实测与避坑指南,帮助爱好者和工程师在有限预算下充分利用这款集成了ARM处理器和FPGA的高性能芯片,降低开发门槛。

weixin_42525005的博客 221

mysql 闭包表_tree闭包表

目标在一颗树中快速查找到子孙节点、祖先节点查找节点A的所有子孙节点图1树的表结构CREATE TABLE `node` (`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,`name` varchar(255) DEFAULT '' COMMENT '节点名称',`parent_id` bigint(20) DEFAULT NULL,PRIMARY ...

weixin_35742845的博客 1151

别再折腾Windows了!Ubuntu 22.04下USRP X310 + RFNoC + Vivado 2021.1开发环境保姆级搭建指南

本文提供Ubuntu 22.04下USRP X310 + RFNoC + Vivado 2021.1开发环境的详细搭建指南,涵盖系统优化、UHD驱动编译、Vivado配置及硬件验证等关键步骤,帮助射频工程师高效构建稳定的开发环境,显著提升FPGA开发效率。

weixin_29168675的博客 256

mysql 创建闭包表_Mysql 树形结构数据存储方案 Closure Table 闭包表

1 新增菜单表CREATE TABLE `menu` (`id` int(11) DEFAULT NULL,`name` varchar(100) DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8INSERT INTO `menu` VALUES ('1', '1');INSERT INTO `menu` VALUES ('2', '2');INSE...

weixin_32323465的博客 453

GPT注册与使用全流程详解:从零到一的实战指南

本文详细介绍了GPT的注册与使用全流程,从认识GPT作为智能对话助手开始,到注册前的设备与环境准备、手把手完成账号注册、首次使用指南以及进阶使用技巧。文章还涵盖了安全使用与注意事项,帮助用户从零开始高效利用GPT提升工作效率和内容创作能力。

weixin_33843409的博客 397

深入解析AndroidManifest.xml与device_admin.xml:打造完美DeviceOwner应用配置

本文深入解析了Android企业级开发中DeviceOwner应用的核心配置文件AndroidManifest.xml与device_admin.xml。详细阐述了如何精准声明DeviceAdminReceiver、定义管理策略,并提供了通过ADB命令进行设置与验证的实战指南,帮助开发者构建权限完整、配置正确的设备所有者应用。

ice55的博客 682

逻辑数据库设计 - 单纯的树(递归关系数据)

逻辑数据库设计 - 单纯的树(递归关系数据)   相信有过开发经验的朋友都曾碰到过这样一个需求。假设你正在为一个新闻网站开发一个评论功能,读者可以评论原文甚至相互回复。   这个需求并不简单,相互回复会导致无限多的分支,无限多的祖先-后代关系。这是一种典型的递归关...

ajwqb06628的专栏 2246

使用字体解密技术爬取懂车帝二手车数据

本文介绍了一种针对懂车帝二手车平台的字体加密数据采集方案。通过抓包分析,识别出关键API接口并解析了字体加密机制,成功实现了价格等敏感数据的解密。方案采用requests库发送POST请求获取JSON数据,利用fontTools解析字体映射关系,建立加密字符到真实数字的转换算法。程序支持多页采集,提取车辆名称、价格、年份等12个维度的信息,并自动保存为Excel格式。技术亮点包括动态字体解析、健壮的数据处理和分页优化,为二手车市场分析提供了可靠的数据支持。文中特别强调数据采集的合法合规性,建议仅用于学术研究

那些看似不起波澜的日复一日,会在某天让你看到坚持的意义 1310

LeetCode 1028. 从先序遍历还原二叉树

我们从二叉树的根节点 root开始进行深度优先搜索。 在遍历中的每个节点处,我们输出D条短划线(其中D是该节点的深度),然后输出该节点的值。(如果节点的深度为 D,则其直接子节点的深度为 D + 1。根节点的深度为 0)。 如果节点只有一个子节点,那么保证该子节点为左子节点。 给出遍历输出S,还原树并返回其根节点root。 示例 1: 输入:"1-2--3--4-5--6--7" 输出:[1,2,5,3,4,6,7] class Solution { public: v...

weixin_41514525的博客 309

库存优化技术提升电商效率

第一部分:库存优化技术基础 第1章:库存优化的基本概念 库存优化是现代电商运营中至关重要的一个环节。简单来说,库存优化指的是通过一系列的策略和技术手段,使得库存管理更加高效、准确,从而降低运营成本,提高销售额。 1.1 库存优化的定义与重要性

AI天才研究院 1248

K8s(二十二):k8s集群如何部署一个Spring Boot项目(依赖于MySQL和Redis外部服务)

🔴 K8s(二十二):k8s集群如何部署一个Spring Boot项目(依赖于MySQL和Redis外部服务)

✨ 欢迎来到【Seal ^_^ 的优快云博客】!✨ 2万+

树状结构数据的数据库表设计及使用 - 3. 闭包表(Closure Table)模型

本文以 MySQL 为例。文档比较长,故分为5部分发出: 闭包表模型 闭包表(Closure Table)是一种通过空间换时间的模型,它是用一个专门的关系表(其实这也是我们推荐的归一化方式)来记录树上节点之间的层级关系以及距离。 为了防止插入数据出错,我们需要一个存储过程: 然后我们插入一些数据,这里以在论坛里发帖回帖为例: 前面的存储过程会在关系表里插入每条贴子与自身和它上级贴子的关系以及距离: 获取闭包表全树或子树 通过关联表的父子关系,去掉自指的记录,使用内连接获取所有子节点。 叶节点的特征是没有

不吃_花椒的博客 9032

三维点云转深度图

点云投影过程是将三维点云数据转化为二维图像坐标的关键步骤,它的实现涉及到相机内外参数的计算,包括相机的内部参数(如焦距和主点)和外部参数(如相机位置和方向)。具体来说,可以通过将每个点的三维坐标转换为相机坐标系下的坐标,然后使用相机内部参数和外部参数来计算在二维图像中的坐标。接着计算每个点的深度值,将深度值映射到像素值上,最后创建深度图像并将深度值赋给对应的像素值。这里需要注意的是,在将深度值映射到像素值上时,需要将像素值转换为 uchar 类型,否则在将深度值赋给像素值时会出现类型不匹配的错误。

点云兔子的博客 3172

MySQL闭包表

测试数据来自于博客:https://www.cnblogs.com/linjiqin/p/9523033.html 闭包表是为了解决在数据库中存储树形数据而引出的解决方案。通常闭包表会有两个表,一个记录节点信息,一个记录关系。 举例如下: # 示例树 # root(0) # | # |____a(1) # | |____a1(2) # | |____a2(3) ...

u012803274的博客 3578

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

MySQL数据库闭包 Closure Table 表实现

像MySQL这样的关系型数据库,比较适合存储一些类似表格的扁平化数据,但是遇到像树形结构这样有深度的数据,就很难驾驭了。针对这种场景,闭包表(Closure Table )是最通用的设计,它要求一张额外的表来存储关系,使用空间换时间的方案减少操作过程中由冗余的计算所造成的消耗。闭包表,它记录了树中所有节点的关系,不仅仅只是直接父子关系,它需要使用两张表,除了节点表本身之外,还需要使用一张关系表,用来存储祖先节点和后代节点之间的关系(同时增加一行节点指向自身),并且根据需要,可以增加一个字段,表示深度。

漫游游的博客 2307

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

SQL反模式-简单树问题(二)

上一篇文章介绍,简单树的结构不能使用上级Id来存储,会带来查询等问题,并提供了2个解决方案。分别是使用存储全路径的列和嵌套集合(nested sets) 解决方案:闭包表(Closure Table) 这种方案是简单且优雅的,那么具体方案是什么呢?它需要额外建一个表,比如TreePaths表,这个表的结构是这样的 Employee -----------------...

翛隳 344

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

MySQL中组织机构表转换为闭包表

【代码】MySQL中组织机构表转换为闭包表。

m0_57298417的博客 362

mysql 创建闭包表_第四节:树形结构设计、数据存储方案:MySQL数据库闭包表实现...

1、数据库闭包表简介像MySQL这样的关系型数据库,比较适合存储一些类似表格的扁平化数据,但是遇到像树形结构这样有深度的数据,就很难驾驭了。针对这种场景,闭包表(Closure Table )是最通用的设计,它要求一张额外的表来存储关系,使用空间换时间的方案减少操作过程中由冗余的计算所造成的消耗。闭包表,它记录了树中所有节点的关系,不仅仅只是直接父子关系,它需要使用两张表,除了节点表本身之外,还需...

weixin_39610468的博客 964

mysql 存树 闭包表_关系型数据库树形关系存储-闭包表

前言在关系型数据库中,有一种逻辑关系比较难处理,这种就是树形结构。目前有很多主流的处理方案,比如说直接在业务表中存储上一级id,这样就可以用递归查询SQL的形式找到某一节点的父节点,子节点,或者兄弟节点。注意,是递归查询!由于这种father_id的关系键是存储在业务表中,那么递归查询肯定对性能有影响。如果业务表比较小,是可以用这种方法,表结构简单,维护起来比较简单,也很直观。但是业务表如果是百万...

weixin_42509616的博客 532

mysql 创建闭包表_树形结构与关系数据库之闭包表

在《SQL反模式》中介绍了多种把树存到关系数据库中的方法,下面介绍一下其中闭包表的用法。建表与插入数据(SQLite3)CREATE TABLE NODE(id INTEGER PRIMARY KEY AUTOINCREMENT,name TEXT NOT NULL);CREATE TABLE TREE_PATH(anc INTEGER NOT NULL, --祖先节点des INTEGER ...

weixin_35931648的博客 643

表与闭包表的理解与运用

闭包表是一种空间换时间的树形结构存储方案,通过预先存储所有"祖先-后代"路径(包含距离),将复杂的递归查询简化为单表WHERE操作。典型应用包括组织架构、多级评论、商品分类等场景,能显著提升查询性能(10万级数据查询<200ms)。实现方式:1)基础表存储节点信息;2)闭包表记录所有路径关系;3)通过特定SQL模板实现增删改查,如移动子树仅需120ms(1万节点)。优势在于免递归、支持历史快照、易于分区分层,适合处理深度层级数据。

u012581726的博客 686

存储和查询树形结构数据的有效方法-闭包表

闭包表(Closure Table)是一种在关系型数据库中存储和查询树形结构数据的有效方法。它通过一个单独的表来记录树中所有节点之间的路径关系,特别适合处理层次结构数据,比如用户邀请关系、组织架构、分类目录等。

liaowenxiong的博客 871

闭包表(Closure Table)存储和查询树形数据结构

树形结构数据 闭包表Closure Table

usa_washington的博客 3079

mysql无限层表设计方案分析

目录 需求接口 思路1:一个表,记录父ID 思路2:闭包表(空间换时间) 思路3:存储路径 三种方式对比 本文所用的层级关系图 需求接口 1、获取子级/所有子级列表/所有子级树 2、获取父级 3、增删改 思路1:记录父ID CREATE TABLE `XXX` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增ID', `parent_id` bigint(20) unsigned NOT NU.

zhangm2020的博客 2215

数据库设计:邻接表、路径枚举、嵌套集、闭包表

邻接表 通用设计父级id字段 路径枚举 设计祖级列表字段,所谓祖级列表就是当前节点的所有父级节点的id集 路径枚举实现递归查询当前节点下所有字节点方案: 1:MySQL find_in_set函数 与 in 结合使用 2:若做数据库兼容则可使用like替代find_in_set 嵌套集 嵌套集解决方案是存储子孙节点的相关信息,而不是节点的直接祖先。我们使用两个数字来编码每个节点,从而表示这一信息,可以将这两个数字称为nsleft 和 nsright。 每个节点通过如下的方式确定nsleft 和nsrigh

Just1like_this的博客 1063

树状结构数据的数据库表设计及使用 - 5. 四种模型的性能比较与分析

本文以 MySQL 为例。文档比较长,故分为5部分发出: 附: 树状结构数据的数据库表设计及使用 - 1. 邻接表 树状结构数据的数据库表设计及使用 - 2. 路径枚举(Path Enumeration)模型 树状结构数据的数据库表设计及使用 - 3. 闭包表(Closure Table)模型 树状结构数据的数据库表设计及使用 - 4. 嵌套集(Nested Set)模型这里比较一下不同模型类似数据量(大概600多条)下的性能。这里除了闭包表的关联表都未加索引。 可以看到嵌套集的查询速度对比邻接表是数量级上

不吃_花椒的博客 1978
上一篇: 拓展Swagger功能,支持JsonView视图
下一篇: 查询数据字典生成表字段信息,支持MySQL,Oracle,DB2
honey_pie
博客等级 码龄9年 8粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值