常用的几种Tree的设计

    对常见几种tree的表的设计

 

  第一种 

create table article
(
  id number primary key, 
  cont varchar2(4000),
  pid number
);

   加一个pid关联id,也是最常用(递归)方式之一

 

insert into article values (1, '地区', 0);
insert into article values (2, '北京', 1);
insert into article values (3, '海淀区', 2);
insert into article values (4, '东城区', 2);
insert into article values (5, '王府井', 4);
insert into article values (6, '上海', 1);
insert into article values (7, '徐汇区', 6);
insert into article values (8, '美罗城', 7);
insert into article values (9, '普陀区', 6);
insert into article values (10, '中山北路', 9);

 

create or replace procedure p (v_id article.id%type, v_grade binary_integer)
is
  cursor c is select * from article where pid = v_id;
  v_preStr varchar2(1024);
begin
  
  for v_i in 1..v_grade loop
    v_preStr := v_preStr || '----';
  end loop;
  
  for v_a in c loop 
    dbms_output.put_line(v_preStr || v_a.cont);
    p (v_a.id, v_grade + 1);
  end loop;
end;

begin
  p(0, 0);
end;

    输出

 

地区
----北京
--------海淀区
--------东城区
------------王府井
----上海
--------徐汇区
------------美罗城
--------普陀区
------------中山北路

   第二种:

 

create table article
(
    id number primary key,
    cont varchar2(4000),
    pid number,
    isleaf number(1), --0 代表非叶子节点,1代表叶子节点
    alevel number(2) --代表几级目录
);

 

insert into article values (1, '地区', 0, 0, 0);
insert into article values (2, '北京', 1, 0, 1);
insert into article values (3, '海淀区', 2, 1, 2);
insert into article values (4, '东城区', 2, 0, 2);
insert into article values (5, '王府井', 4, 1, 3);
insert into article values (6, '上海', 1, 0, 1);
insert into article values (7, '徐汇区', 6, 0, 2);
insert into article values (8, '美罗城', 7, 1, 2);
insert into article values (9, '普陀区', 6, 0, 2);
insert into article values (10, '中山北路', 9, 1, 3);
commit;

 
create or replace procedure p (v_pid article.pid%type, v_level binary_integer) is
  cursor c is select * from article where pid = v_pid;
  v_preStr varchar2(1024) := '';
begin
  for i in 1..v_level loop 
    v_preStr := v_preStr || '****';
  end loop;

  for v_article in c loop
    dbms_output.put_line(v_preStr || v_article.cont);
    if(v_article.isleaf = 0) then 
      p (v_article.id, v_level + 1);
    end if;
  end loop;
end;

begin
  p(0, 0);
end;

 

地区
****北京
********海淀区
********东城区
************王府井
****上海
********徐汇区
************美罗城
********普陀区
************中山北路

 

   第三种:

drop table article;
create table article 
(
   id number primary key,
   cont varchar2(4000),
   str char(8), --number(8) --str代表层次
   grade number(1)
);
 
insert into article values (1, '地区', '01000000', 1);
insert into article values (2, '北京', '01010000', 2);
insert into article values (3, '海淀区', '01010100', 3);
insert into article values (4, '东城区', '01010200', 3);
insert into article values (5, '王府井', '01010201', 4);
insert into article values (6, '上海', '01020000', 2);
insert into article values (7, '徐汇区', '01020100', 3);
insert into article values (8, '美罗城', '01020101', 4);
insert into article values (9, '普陀区', '01020200', 3);
insert into article values (10, '中山北路', '01020201', 4);
commit;
 
select * from article order by str;
declare
  cursor c is select * from article order by str;
  v_preStr varchar2(1024) := '';
begin
  for v_temp in c loop 
    v_preStr := '';
    for i in 1..v_temp.grade loop
      v_preStr := v_preStr || '****';
    end loop;
    dbms_output.put_line(v_preStr || v_temp.cont);
  end loop;
end;
 
****地区
********北京
************海淀区
************东城区
****************王府井
********上海
************徐汇区
****************美罗城
************普陀区
****************中山北路
 
R-Tree与其他空间索引结构的对比 阅读详情

相关推荐

zTree-zTree_v3-各种tree的使用大全(带搜索)

zTree-zTree_v3-各种tree的使用大全,要用到树的,下载这个,各种方式 和方法的树都有。

uniapp 权限树模块- ly-tree组件

1.效果图 2.代码 <template> <view class="container"> <view class="itemTop"> <u-navbar back-text="返回" title-color="#fff" back-icon-color="#ffffff" :is-fixed="true" :is-back="true" :back-text-style="{'color':'#fff'}"

Listest的博客 8566

安卓树形控件相关-企业级的通讯录做成多级树结构用户打开通讯录模块只会把一级目录结构请求下来当用户需要查找人时点击对应的部门item就会请求对应部门下的列表这样在极大程度上减少了用户的流量消耗和等待时间.rar

企业级的通讯录做成多级树结构,用户打开通讯录模块,只会把一级目录结构请求下来,当用户需要查找人时,点击对应的部门item,就会请求对应部门下的列表,这样在极大程度上减少了用户的流量消耗和等待时间.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。

ly-tree单选和清除数据

【代码】ly-tree单选和清除数据。

m0_74608954的博客 887

uniguitree的3种用法

uniguitree的3种用法,使用unigui控件 unitreeview的例子

java树结构,树结构表设计

前些天面试,发现面试官很喜欢问树的构造问题,我当时回答树设计就是通过一pid来保存父结点的id值来实现,通过递归来生成一棵树,但是面试官说如果树比较大的话这样做的效率太低,网上找好像也都是这种方法,后来发现以前看用友的表结构设计里没有用这种方法,他们采用的是下面的表结构设计。

ly-tree和el-tree:搜索筛选,加载过滤出的父节点以及其所有子节点

uniapp和elementui中tree的模糊搜索

weixin_47571333的博客 1350

treeview递归无限级树形菜单(递归方式)

简单的代码,递归方式,简单的样式设计,方便初学菜单设计者应用。

【记录26】树形控件集合之el-tree、vs-tree、ly-tree

树形控件: el-tree va-tree ly-tree 让大家知道更多的插件,

~牧马~ 2335

很好用的uni-app节点树组件!

很好用的uni-app节点树组件!

5分钟搞懂MSDNet:用Transformer实现小样本语义分割的保姆级教程

本文详细介绍了MSDNet(Multi-Scale Decoder Network)如何利用Transformer架构实现小样本语义分割。通过多尺度解码器和空间Transformer解码器,MSDNet能够在仅有1-5张标注图像的情况下完成精确分割任务。文章提供了PyTorch代码实例和优化技巧,帮助开发者快速掌握这一前沿技术。

weixin_30832143的博客 506

lsm tree java_数据的存储结构浅析LSM-Tree和B-tree

所谓数据库,最基础的功能,就是保存数据,并且在需要的时候可以方便地检索到需要的数据。在这个基础上,演化出了不同的数据库系统,以及多种索引机制帮助检索数据。这篇我们就来讨论几种常见的数据存储和索引机制,主要是B-tree,LSM-Tree,以及它们对应的优缺点。顺序存储与哈希索引试想一下,如果按照保存数据,并且在需要的时候可以方便地检索到需要的数据这一标准,设计一个简单的数据库,那么最简单的做法应该...

weixin_42500739的博客 239

2021秋-北邮计算机导论期末考试(BUPT)

2021秋-北邮计算机导论期末考试(BUPT) 难度较低适合新手练习

weixin_73985779的博客 1499

LSM-Tree 和 B-tree 数据存储结构对比

LSM-Tree 和 B-tree 数据存储结构对比顺序存储 与 哈希索引SSTable 和 LSM treeB-Tree存储结构的比对 所谓数据库,最基础的功能,就是保存数据,并且在需要的时候可以方便地检索到需要的数据。在这个基础上,演化出了不同的数据库系统,以及多种索引机制帮助检索数据。 顺序存储 与 哈希索引 试想一下,如果按照保存数据,并且在需要的时候可以方便地检索到需要的数据这一标准,设计一个简单的数据库,那么最简单的做法应该怎么做呢? 最简单的做法,就是通过顺序保存数据到一个日志文件中。然后

一个写湿的程序猿 1134

保姆级教程:在RK3588开发板上配置USB-C PD充电(基于HUSB311芯片与DTS详解)

本文详细介绍了在RK3588开发板上配置USB-C PD充电的完整流程,重点解析了HUSB311芯片的硬件原理与DTS安全配置。通过实战案例和调试技巧,帮助开发者避免常见错误,实现稳定可靠的Type-C PD快充功能,适用于从基础开发板到工业设备的多场景需求。

weixin_42552315的博客 522

UOS系统手动添加1920x1080分辨率:xrandr命令详解与持久化配置

本文详细介绍了在UOS系统中使用xrandr命令手动添加1920x1080分辨率的方法。针对系统设置中缺失该选项的常见问题,文章提供了从识别显示设备、使用cvt生成模式、添加并切换分辨率,到通过修改.profile文件实现持久化配置的完整步骤。同时涵盖了虚拟机环境、设备名识别及排错等进阶内容,帮助用户彻底解决UOS分辨率配置难题。

weixin_29300931的博客 500

mysql的索引innodb和myisam, 以及B+Tree和B-Tree详解

一. mysql的索引 mysql常用的索引有以下几种: hash索引 hash索引通过hash值来匹配对应的数据,类似键值对的形式,查找的时候可以精准一次定位,但是对于范围查询,排序效率不高,并且hash索引不能避免全表扫描,因为hash值并不能完全保证一个hash值匹配一个数据(hash冲突),还是需要比对实际数据 btree索引 MySQL里默认和最常用的索引类型,利用二分查找的思想...

zzzgd_666的博客 3234

Autosar Dcm配置-App到Boot的跳转及1002回复配置及实现-基于ETAS软件

在软件刷写流程中,上位机(诊断仪)发送1002后,APP检查允许跳转boot后,在特定的ram(软复位不清除)写入指定置后通过触发软件复位来跳转到boot的。在APP跳转到Bootloader时,1002的回复有两种方式,一种是APP直接回复,然后跳转,另一种是APP回复NRC78,然后跳转,在Boot中回复。本文介绍这两种方式的实现。如果是在APP中回复,可以少发一个0x78,整体跳转时间可能会少一些。但是如果诊断在收到5002之后立马请求其他的服务,可能出现boot正在初始化而未正常接收到报文。

赞的博客 1557

ant tree删除节点_B+Tree|数据库索引数据结构总结

摘要数据库索引是数据库中最重要的组成部分,而索引的数据结构设计对数据库的性能有重要的影响。本文尝试选取几种典型的索引数据结构,总结分析,以窥数据库索引之全貌。B+TreeB+Tree 是一种树数据结构,是一个n叉排序树,每个节点通常有多个孩子,一棵B+Tree包含根节点、内部节点和叶子节点。根节点可能是一个叶子节点,也可能是一个包含两个或两个以上孩子节点的节点。B+Tree 几乎是数据库...

weixin_36372014的博客 224

SAP公司间STO业务解析(包含主数据解析、后台配置解析、前台业务演示)

SAP公司间STO业务解析

ww114784的博客 1019

使用 MATLAB/Simulink + Simscape Electrical + Simulink Design Optimization,构建一个基于SiC/GaN的Z源逆变器在储能系统中的软启

《手把手教你学Simulink:Z源逆变器在储能系统中的应用》摘要 本文详细介绍了使用MATLAB/Simulink构建Z源逆变器储能系统仿真模型的全过程。Z源逆变器凭借其独特的阻抗网络结构,解决了传统逆变器在直通保护和升压能力方面的痛点。文章通过6个关键步骤:主电路搭建、调制策略设计、软启动实现、仿真分析、效率对比和工程问题解决方案,完整展示了Z源逆变器从理论到仿真的实现路径。重点讲解了直通零矢量SPWM调制策略和渐进式升压比控制方法,验证了系统93.3%的效率和优异的抗扰性能。该模型为光伏储能、电动汽车

MHD0815的博客 122

lsm mysql_数据的存储结构浅析LSM-Tree和B-tree

所谓数据库,最基础的功能,就是保存数据,并且在需要的时候可以方便地检索到需要的数据。在这个基础上,演化出了不同的数据库系统,以及多种索引机制帮助检索数据。这篇我们就来讨论几种常见的数据存储和索引机制,主要是B-tree,LSM-Tree,以及它们对应的优缺点。顺序存储与哈希索引试想一下,如果按照保存数据,并且在需要的时候可以方便地检索到需要的数据这一标准,设计一个简单的数据库,那么最简单的做法应该...

weixin_31143059的博客 276

华为OD面试手撕真题 【合并相邻且相等的元素】多语言题解

华为OD面试高频手撕真题【合并相邻且相等的元素】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解。

qq_45776114的博客 549

对常见几种tree的表的设计

第一种  Sql代码   create table article   (     id number primary key,      cont varchar2(4000),     pid number   );      加一个pid关联i

fyqcdbdx的专栏 769

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

数据的存储结构浅析LSM-Tree和B-tree

文章目录顺序存储与哈希索引SSTable和LSM treeB-Tree存储结构的比对小结 本篇主要讨论的是不同存储结构(主要是LSM-tree和B-tree),它们应对的不同场景,所采用的底层存储结构,以及对应用以提升效率的索引。 所谓数据库,最基础的功能,就是保存数据,并且在需要的时候可以方便地检索到需要的数据。在这个基础上,演化出了不同的数据库系统,以及多种索引机制帮助检索数据。这篇我们就来讨论几种常见的数据存储和索引机制,主要是B-tree,LSM-Tree,以及它们对应的优缺点。 顺序存储与哈希索引

zzzzMing -大数据/数据分析/数据挖掘 674

android 蓝牙通讯demo

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

上一篇: oracle常用的命令
下一篇: 全选/分组全选
fehly
博客等级 码龄18年 1粉丝 30原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值