为了便于说明问题,我们以商品传销网为例,传销网中每个人都对应到树中的一个节点无限层次树形笔记本。我们把有关数据存储在表Persons中。
根据树的双亲节点表示法的特点,同时考虑到便于查询,将Data域分成本人代号(code)和本人姓名(name)两个字段,而Link域对应到上线代号字段(pcode)。虽然在关系型数据库中,数据的操作是以集合为基础的,而集合中的元素是没有顺序的,但在构建树形视图时必须一个一个地将节点添加进去,且PowerBuilder不支持指针型变量,因而我们在表Persons中增加一字段Handno,记录每个结点的句柄,配合Pcode字段,以实现"指针"的功能无限层次树形笔记本,其原理是:通过查找本结点的上线代号来查找其双亲结点的句柄号。由于树形视图等级结构非常明显,我们采用按层次遍历树,所以我们在Persons表中再增加一个字段Grade,便于按层次顺序构建树形视图。表Persons的结构如下表,主键为code列无限层次树形笔记本。当然可在表中设置一个或多个字段,以存储各结点的其他信息,但本文旨在说明问题,故不予考虑。
层次查询
对于层次查询需要掌握:
无限层次树形笔记本1.解释层次查询的基本概念,识别需求中需要用到层次查询的能力。
2.建立和格式化一个树形报表(tree report)。
3.修剪树形结构的节点(node)和枝(branches)。
关键词:tree,root(根),node,leaf(叶子),branch(树枝,分支)
本节例子来源于表s_emp,表结构和数据如下:
看上面的表s_emp,使用层次查询,我们可以获得一张表基于层次关系的数据集合。Oracle是一种关系型数据库,在表中不可能以层次的关系存放数据。但是我们可以通过一定的规则,使用tree walking(树的遍历或树的查找)来获得层次关系的数据。Hierarical query 是一种获得树的层析关系报表的方法。
树形结构的数据集合,存在于我们日常生活中的很多地方,比如考虑一个家族关系,有长辈,长辈下面有子女,子女下面还可以有子女,这转化为层次或等级关系就是:根节点只有一个,下面有子节点,子节点下面还有子节点,这样组成了一棵树。(有时候,根节点root 不一定只有一个,严格意义上说,这种情况不是一个严格的树)。
当一种层次关系是存在一个表的行中,那么这种层次是可以获得的。例如,我们看s_emp表,对于title:VP,我们知道这些行中都包含manager_id=1,也就是说,这些行属于id=1的雇员的下属雇员,那么有title=vp又可以获得一系列的层次,而这些层次的跟则是id=1这个雇员。由此,得到一棵树形结构数据集合。
层次树或等级树,在譬如家族关系,育种关系,组织管理无限层次树形笔记本 ,产品装配,人类进化,科学研究等领广泛应用。
无限层次树形笔记本 下面我们就根据s_emp这张表,根据职位大小来描述一个树形结构图。如图:
只显示部分树形结构
文章地址:https://www.tianxianmao.com/article/other/sjkzbdsz.html