`
fehly
  • 浏览: 248360 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

常用的几种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;
 
****地区
********北京
************海淀区
************东城区
****************王府井
********上海
************徐汇区
****************美罗城
************普陀区
****************中山北路
 
分享到:
评论

相关推荐

    Ajax tree,动态生成Tree

    在网页开发中,树形结构(Tree)是一种常见的数据展示方式,尤其在管理和组织层级数据时非常实用。Ajax Tree是利用Ajax技术动态加载和更新树节点,提供用户友好的交互体验。它允许用户在不刷新整个页面的情况下获取...

    tree.jsp集结

    在压缩包子文件的文件名称列表中提到的“几种形成树的js文件”,可能包括了JavaScript库或者自定义脚本,用于在客户端(浏览器端)实现树形结构的交互和展示。常见的JavaScript库如jQuery、d3.js、jstree等都提供了...

    几个做VC list和tree的例子和一些图标

    在Windows应用程序开发中,Visual C++(简称VC)是常用的一种编程工具,它支持创建丰富的用户界面。List控件和Tree控件是GUI(图形用户界面)设计中的重要元素,用于展示数据和提供用户交互。 List控件通常用于显示...

    Flex Tree增加虚线连接

    在IT行业中,Flex Tree是一种常见的数据可视化组件,用于展示层级结构的数据,比如组织架构、文件系统或树形菜单。在Flex Tree中,连接线通常用来表示节点间的父子关系,而"Flex Tree增加虚线连接"则涉及到如何为...

    Tab+Tree控件联合使用

    本文将深入探讨如何在对话框中联合使用“Tab控件”和“Tree控件”,这两种控件在很多桌面应用中都非常常见,尤其适用于组织和展示大量信息。"Tab+Tree控件联合使用"的主题意味着我们要在不同的选项卡页面上利用树形...

    tree 控件,多语言支持

    在IT领域,"Tree控件"是一种常见的用户界面元素,尤其在Windows应用程序和网页开发中广泛应用。它以树形结构展示数据,允许用户通过展开和折叠节点来探索和管理层次结构的信息。Tree控件通常用于文件系统浏览、组织...

    view-tree.rar_Tree view_tree控件

    在Windows编程领域,Tree View控件(简称TreeView)是一种常用的数据可视化组件,它允许用户以树形结构展示信息。在“view-tree.rar_Tree view_tree控件”这个资源中,我们聚焦于一种特殊的Tree View实现,它引入了...

    JSTree(js写的树形菜单,支持加载10000节点以上)

    在Web开发中,树形菜单是一种常见的数据展示形式,用于组织和展示层次结构的数据。JSTree是一款基于JavaScript的开源库,专为构建功能丰富的交互式树形菜单而设计。它支持动态加载大量节点,即使面对超过10000个节点...

    asm-tree(3.0 /3.3)

    ASM访问者模式是一种设计模式,它定义了一种一对多的依赖关系,让多个访问者对象可以访问同一层次结构的对象,而不需要暴露这个层次结构的内部细节。通过这种方式,`asm-tree`使得我们可以方便地遍历和修改字节码,...

    jqueryTree 例子

    在Web开发中,为了提供用户友好的界面和良好的导航体验,菜单树是一种常见的设计元素。尤其是对于内容丰富的网站或应用程序,左侧菜单树能够清晰地组织和展示层次结构的信息,使得用户能够快速定位到所需内容。在...

    javascript-tree-menu

    JavaScript Tree Menu是一种常见的网页交互元素,它用于在网站上创建可折叠、层次分明的菜单结构。这个技术基于JavaScript,一种广泛使用的客户端脚本语言,它允许动态地更新和操作HTML内容,提供更丰富的用户交互...

    常用控件类集合:ListControl控件(实现排序等),TreeControl控件,进度条,分割界面类,界面拉伸

    本篇将详细讲解标题和描述中提到的几种常用控件类,包括ListControl控件、TreeControl控件、进度条以及分割界面类,同时还会探讨界面的拉伸技术。 首先,ListControl控件,通常在Windows编程中以ListView的形式出现...

    带Columns的Tree控件

    在Windows编程领域,"带Columns的Tree控件"是一种常见的用户界面元素,它结合了传统的树形视图(Tree View)控件与列显示的功能。这样的控件在数据管理、文件浏览器或者设置面板等场景中非常实用,因为它能以结构化...

    yahoo Tree组件

    YUI Tree组件提供了丰富的功能,包括但不限于以下几点: 1. **动态加载**:支持按需加载子节点,以提高页面加载速度,特别是处理大量数据时。 2. **多种节点类型**:支持文本节点、HTML节点、自定义节点等,满足...

    tree_menu(javascript)

    这种功能在网页交互设计中非常常见,用于组织和展示层次化的数据,例如网站导航、文件系统或者数据库结构。JavaScript允许开发者通过动态效果(如展开、折叠节点)来增强用户体验,使得用户能够更直观地理解和操作...

    用Python解析XML的几种常见方法的介绍

    这篇文章主要介绍了用Python解析XML的几种常见方法,包括快速的使用ElementTree模块等方法的实例介绍,需要的朋友可以参考下 一、简介 XML(eXtensible Markup Language)指可扩展标记语言,被设计用来传输和存储数据...

    著名的TreeGridCtrl控件源码基于CLISTCTRL

    TreeGridCtrl是一个在Windows开发中常用的控件,它结合了树形视图(TreeView)和列表视图(ListCtrl)的功能,为用户提供了一种既能够展示层次结构数据,又能显示表格样式的界面元素。这个控件源码是基于Microsoft ...

    jquery.tree.js树形导航菜单插件

    在网页设计与开发中,树形导航菜单是一种常见的用户界面元素,它能够清晰地展示层级关系,帮助用户更有效地浏览和理解网站结构。jQuery.tree.js是一款专门用于创建此类菜单的JavaScript插件,它以其轻量级、灵活性和...

    jsp Tree Menu

    【jsp Tree Menu】是一种在网页应用中常用的交互式菜单组件,尤其在构建多级导航时十分有效。在Java Server Pages(JSP)中,我们可以通过使用树形菜单来展示层次结构的数据,使得用户能够更直观地浏览和操作复杂的...

    dual tree wavelet transform

    标题 "dual tree wavelet transform" 指的是双树小波变换,这是一种在信号处理和图像分析领域广泛应用的技术。双树小波变换结合了正交小波和多分辨率分析的优势,通过构建两棵相关的小波树来实现对数据的多尺度分析...

Global site tag (gtag.js) - Google Analytics