对常见几种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;
****地区
********北京
************海淀区
************东城区
****************王府井
********上海
************徐汇区
****************美罗城
************普陀区
****************中山北路
分享到:
相关推荐
这篇文章主要介绍了用Python解析XML的几种常见方法,包括快速的使用ElementTree模块等方法的实例介绍,需要的朋友可以参考下 一、简介 XML(eXtensible Markup Language)指可扩展标记语言,被设计用来传输和存储数据...
- 【Java常用几种加密算法】在[com.gradle.java.encryption](/tree/master/src/main/java/com/gradle/java/encryption)包名下 ;[加密算法测试](/tree/master/src/main/java/com/gradle/java/test) - 【Rxjava的学习...
JSP无限级分类目录树是一种常用的网站导航方式,它可以让用户更方便地查看和访问网站上的不同页面和内容。该导航树的最大特点是可以无限级别地展开和收起,这样用户就可以根据自己的需要和兴趣,自由浏览和访问网站...
java版的 树(tree)常见的三种方法
一、什么是索引 ...三、Mysql常见的几种索引数据结构 Mysql表常用索引结构有两种BTree和Hash其中BTree又分为B-Tree和B+Tree本文只介绍BTree 在谈Mysql常用的几种索引结构之前我们先回忆一下我们学过的
本文对常见ZigBee网络中的几种路由协议进行分析和研究,并通过NS2进行了仿真。结果表明,由Cluster-Tree与AODVjr结合的协议在分组投递率、端对端平均延时、网络生存时间方面有较好的表现,为无线传感器网络的路由协议...
常用的匹配正则表达式和实例 经典正则表达式 delegate vs. event 我是谁?[C#] 表达式计算引擎 正式发布表达式计算引擎WfcExp V0.9(附源码) 运算表达式类的原理及其实现 #实现的18位身份证格式验证算法 身份证15To18...
leetcode岛屿面积 FQ算法练习仓库 lc 主要是 leetcode 相关算法题 backtracking(回溯) 全排列 电话号码的组合 ...主要是常见的几种排序算法的实现 选择排序 堆排序 插入排序 归并排序 快速排序 tree
当然,程序设计水平的提高仅仅靠看几本程序设计书是不行的。只有多思索、 多练习,才能提高自己的程序设计水平;否则,书看得再多,提高也不大。记得 刚学程序设计时,常听人说程序设计水平要想提高,最重要的是多看...
系统设计 1 jive设计思路 2 jive的工作内幕 3 Jive源代码研究 4 Jive中的设计模式 5 jive学习笔记 <br> 设计模式 1 大道至简-Java之23种模式一点就通 2 设计模式...
几种简单排序之间的比较 小结 问题 实验 编程作业 第4章 栈和队列 不同的结构类型 栈 队列 优先级队列 解析算术表达式 小结 问题 实验 编程作业 第5章 链表 链结点(Link) LinkList专题Applet...
几种简单排序之间的比较 小结 问题 实验 编程作业 第4章 栈和队列 不同的结构类型 栈 队列 优先级队列 解析算术表达式 小结 问题 实验 编程作业 第5章 链表 链结点(Link) LinkList专题Applet...
在XML文档中,上述几种语句的语法都是错误的。因为: 1.所有的标记都必须要有一个相应的结束标记; 2.所有的XML标记都必须合理嵌套; 3.所有XML标记都区分大小写; 4.所有标记的属性必须用""括起来; 所以上列...
6.1. 有了它,我们就可以摆脱那些自称ui设计师的人了。 6.2. ViewPort对整个窗口布局 6.3. 脑袋上有几个标签的tabPanel 6.4. 让布局复杂一点儿 6.5. 向诸位介绍一下各具特色的布局 6.5.1. accordion就是QQ那样的伸缩...
事实上JPA的几种数据查询方式存在青黄不接的问题。选择查询语言xxQL,项目面临后续维护困难,跨数据库移植性差;选择Criteria API,代码臃肿,操作繁琐,很多人望而却步。EF的设计思想是使人早日摆脱拼装SQL/HQL/...
龙 翀 -《解决空间规模问题的几种常用的存储结构》 骆 骥 -《数学模型的建立和选择》 施 遥 -《人工智能在围棋程序中的应用》 肖 洲 -《数据结构的在程序设计中的应用》 谢 婧 -《规模化问题的解题策略》 徐 串...
CCAMS系统是一种用于局域网下的CS模式的软件管理和监测系统源码 它包括客户端和服务端,客户端软件主要作用是监测本主机的活动,并将监测到的信息定时发送给服务器。服务器可以将收集到的信息以柱状图和文件列表以及...
用分形图形能画图许多漂亮的图案而被广泛地应用,下面将几个简单的分形图形的代码与图形大家分享。 //Couch曲线的画法 void Couch(CDC *pDC,int x1,int y1,int x2,int y2,int n) { //pDC是画图的设备上下文的...
CCAMS系统是一种用于局域网下的CS模式的软件管理和监测系统源码 它包括客户端和服务端,客户端软件主要作用是监测本主机的活动,并将监测到的信息定时发送给服务器。服务器可以将收集到的信息以柱状图和文件列表以及...
CCAMS系统是一种用于局域网下的CS模式的软件管理和监测系统源码 它包括客户端和服务端,客户端软件主要作用是监测本主机的活动,并将监测到的信息定时发送给服务器。服务器可以将收集到的信息以柱状图和文件列表以及...