另见〖有向数据模型(数据建模-USS)〗
基于维度建模的数据仓库中,一张维表被多张事实表所引用(有外键)是十分普遍的情况,这是合理的因为维度共用说明维度一致,这是数据仓库具备整合性的核心。然而,这对数据处理带来一个麻烦,那就是导致跨表获取同一目标数据可能存在多条可选的路径,也就是在模型图中表现为一些连接构成 “循环”(loop)。
多条可选路径的存在的负面影响,一是维护难度增加(不同用户可能选择不同路径),二是有可能不同路径得到的数据结果不一样。比如在下面模型中,如果要从 Phonecalls 表出发获取 Employees 表中的数据,除了 Phonecalls -> Employees 的直接连接方式,也可以走 Phonecalls -> Customers -> Emails -> Employees 路径实现:
用户在BI工具对范围内的表绘制分析模型图(设计数据模型)的过程,正是选择连接路径的过程,如果有两可路径存在,就可能出现不同用户设计的数据模型不同
在 Kimball 维度建模方法论中,一般是提倡基于同一物理表为每一个外键创建一个相应的专用视图表(被叫做“角色扮演”)并做好命名(同一维度外键在不同事实表中取不同名称),这样既消除了两可路径也有利于最终报告上的维度名称呈现,做法比如:
“角色扮演”后该模型构成了“树”形结构,于是不再存在“循环”了,也就是消灭了两可路径
但创建视图表的做法面向BI工具时存在一些问题(比如对其中一个视图进行过滤会影响全部视图)使用体验也不好。而 USS 的中心辐射结构天然杜绝了两可路径的可能,其中的桥接表充当着连接所有表的媒介(类似于移动通迅中的“通信基站”),并且落实命名规范后同样具备上述“角色扮演”的功能:
图中虽然看上去只有 5 条连接线,但这个中心幅射结构实际一共暗藏着 10 条线(C₅²),可以满足所有可能的取数需求,并且还不存在两可路径。(值得注意的是,图中红圈中的6小块分别对应着前述图中的6条连接线)