6.1 层次数据可视化
层次数据模型是用树状<层次>结构来组织数据的数据模型。该模型的图形表示是一棵倒立生长的树,由基本数据结构中树(或者二叉树)的定义可知,每棵树都有且仅有一个根节点,其余的节点都是非根节点。每个节点表示一个记录类型对应与实体的概念,记录类型的各个字段对应实体的各个属性,各个记录类型及其字段都必须记录。
在层次数据模型中,整个模型中有且仅有一个节点没有父节点,其余的节点必须有且仅有一个父节点,但是所有的节点都可以不存在子节点;所有的子节点不能脱离父节点而单独存在,也就是说如果要删除父节点,那么父节点下面的所有子节点都要同时删除,但是可以单独删除一些叶子节点;每个记录类型有且仅有一条从父节点通向自身的路径。
如图6.1所示,以学校某个系的组织结构为例,说明层次数据模型的结构:
记录类型系是根节点,其属性为系编号和系名。
记录类型教研室和学生分别构成了记录类型系的子节点,教研室的属性有教研室编号和教研室名,学生的属性分别是学号、姓名和成绩。
记录类型教师是教研室这一实体的子节点,其属性由教师的编号,教师的姓名,教师的研究方向。(https://www.daowen.com)

图6.1 院系人员组成结构图
层次数据模型的结构简单、清晰、明朗,很容易看到各个实体之间的联系;操作层次数据类型的数据库语句比较简单,只需要几条语句就可以完成数据库的操作;层次数据的查询效率较高,在层次数据模型中,有向边表示了节点之间的联系,在数据库管理系统(DBMS)中如果有向边借助指针实现,那么依据路径很容易找到待查的记录;同时层次数据模型还提供了较好的数据完整性支持,正如上所说,如果要删除父节点,那么其下的所有子节点都要同时删除;图6.1中,如果想要删除教研室,则其下的所有教师都要删除。
与此同时,层次数据模型还具有结构呆板,缺乏灵活性的缺点;层次数据模型只能表示实体之间的1:n的关系,不能表示m:n的复杂关系,因此现实世界中的很多模型不能通过该模型方便地表示;查询节点的时候必须知道其双亲节点,因此限制了对数据库存取路径的控制。
在层次数据可视化的研究中,大多数工作主要集中在如何更好地利用可视化的语言表达数据中的个体以及个体之间的关联,而对层次数据的比较关注较少。层次数据具有很强的结构性,所以层次数据的比较可视化研究非常有必要。同时越来越多的人开始关注可视化中的比较任务,而从广泛意义上讲,可视化是一种比较的科学。可视化作品的设计者往往需要考虑采用何种方式方法编码数据实体的属性能够增强对比性,通过增强对比来增强对人眼的刺激从而帮助用户更好地理解数据。比如柱状图通过高度的差异反映数据值的差异,热力图通过颜色的对比反映数据值的大小。
层次数据可视化发展至今,根据节点间关系的表现形式,可以归为两类方法:节点链接法和空间填充法。节点链接法用点之间的连线表示父子节点关系,而在空间法中,节点的父子关系用图形的包含关系表示。节点链接法是最直观的层次数据可视化方法,对数据的层次结构有很好地展示,但是空间利用率低且不平均,靠近根节点的位置空间松散而叶子节点位置的节点多而紧密。空间填充法提高了空间的利用率,但却是以牺牲数据结构性展示为代价,所以当与结构相关的信息处于次要的位置时多采用空间填充法。