17.2 树型选择
填报表单的时候,我们可以通过弹出一个树形来选择输入内容,和其他类型的数据规范一样,定义树型可以在管理控制台也可以在客户端中进行。
组成树形的信息通常来自数据表,如果要把一些数据组织成一棵树,需要这些数据自身能够体现出像树一样的分级信息。通常有如下三种情况,我们称之为树型的构造方式:多字段分级、编码长度分级、自我繁殖。
多字段分级
先看一个例子,假设我们有如下的一个客户表
大区 |
业务 员 |
客户名称 |
华北 |
张三 |
甲 公司 |
华 南 |
李 四 |
乙公司 |
华 东 |
张三 |
济南纺织厂 |
西北 |
李四 |
西安电脑公司 |
东北 |
张三 |
哈尔滨某公司 |
在这样的一张客户表中,不同的字段形成了一种层次关系:“大区”是第一层,这是最粗的分类,“业务员”为第二层,相同的区域之下,由不同的业务员负责 “客户名称”为第三层。根据这种层次关系,可以把客户表中的数据组织如下:

图 17‑5
这种组织数据成为树型的方式,称为“多字段分级”,即,树型的层数固定,每一层都是数据表中的一个不同的字段。
定义“多字段分级”的方法如下:

图 17‑6
编码长度分级
看一个另一个例子,假设我们有如下的会计科目表

图 17‑7
这里的“科目代码”隐含表达了一种分层信息,例如“1002”是“银行存款”,而“100201”是“1002”的下级科目,即“人民币账户”是“银行存款”的下级科目,同理,“10020101”又是“100201”的下级科目。
即,根据某个代码字段的不同位数表达数据之间的层次关系。在上边的例子中,“科目代码”的前4位,为第一级,5~6位为第二级,7~8位为三级,最终形成的层次关系为:

图 17‑8
定义“按编码长度分级”的树型的方法是:

图 17‑9
自我繁殖
还有一种情形,例如,假设我们有如下的物料分类表:(为说明方便,我们在旁边加上了记录号)
|
分类名称 |
上级分类 |
1 |
产成品 |
|
2 |
钢材 |
产成品 |
3 |
建材 |
产成品 |
4 |
线材 |
钢材 |
5 |
板材 |
钢材 |
6 |
薄板 |
板材 |
7 |
中板 |
板材 |
8 |
螺纹钢 |
线材 |
9 |
半成品 |
|
10 |
原材料 |
|
11 |
低值易耗品 |
|
12 |
能源动力 |
|
在这个物料分类表中通过一个字段“上级分类”,指明了不同分类之间的关系。
例如,我们看“中板”,它的上级分类是“板材”,而“板材”的上级分类是“钢材”,“钢材”的上级分类是“产成品”,“产成品”的上级分类没有,就到顶了。注意其中的关键点是,每条记录的“上级分类”,或者是空,或者是另一条记录的“分类”字段的内容。例如,第5条记录“板材”,它的上级分类是“钢材”,而“钢材”恰巧是另一条记录(第2条)的“分类”字段的内容。
这种表达数据层次关系的方式,我们称之为“自我繁殖”,即层次关系通过两个字段表达,一个字段称为关键字段,此例中为“物料分类”,它将确定树型中的一个节点,另一个字段称为“上级关键字”,该字段的内容应该恰巧等于树型中另外一个节点的关键字段内容。
定义“自我繁殖”方式的树型的方法如下:

图 17‑10