由于基于维度建模的星型模型中,为提高易用性和分析性能普遍会实行去规范化(de-normalization)的惯例,但这有时会带来一些分析上的负面影响,尤其是当需要联合分析两张粒度不一样的事实表的时候,比如下面的 Sales 和 Targets 事实表:
联合分析销售事实和销售目标是比较常见的业务需求,然后上面的 Sales 表无法从 Targets 表中获取数据,Targets 表也无法从 Clients 和 Products 两张维表中获取维度属性。对于 Sales 和 Targets 连接的问题,Kimball 建模方法论中一般会提倡在 Sales 表中创建用于连接 Targets 的外键,做法如下(前两个转换):
上图中的后两个转换手段则是 USS 对 Targets 表与 Clients、Products 两维表连接的解决办法,即使用所谓的重规范化(re-normalization)拆出需要的粒度的维表,这样各种联合分析的需求就都能满足了。而模型中存在的剩下的多路径、发散问题,我们已经知道由 USS 的桥接表都能解决:
图中填充红色的部分标识是新加的列,尤其是桥接表中 Sales 的红色部分相当于是给原有模型添加了额外的两条连接(Sales直连Countries和ProductLines),这样做有利于多粒度的分析(另见〖Northwind样例数据实战(USS)〗);蓝色的部分则标识是合并已有列生成的技术列(单一外键)。
这样最终得到的模型方案能够同时用于解决多种需求,不管是跨表的联合分析,还是不同粒度的分析需求,都能由这一个模型解决。比如使用 QlikView 可构建如下联动的、可下钻的多功能看板: