确保基数在模型中正确捕获非常重要,因为基数决定资料查询主题的检测对SQL生成是有影响的,并可用来避免对资料数据重复计数。
四种类型的基数:
0..n – 零记录到多记录
1..n – 一个记录到多记录
0..1 – 零记录到一个记录
1..1 – 必须有一个记录
建模事实(资料)表和维度表对应关系如下:
*1..1 ---------- 第一个1是表示内外链接的。第二个1表示的是1对1的关系。
*最小基数0 ----- 表明关系是可选的。要求查询在没有匹配项时保留关系的另一方的信息,指定最小基数为0。
如图所示,Customer作为Order Fact 的维度,Order Fact作为Customer的资料。
此时,Customer和Order Fact 关系为1:1,0:N表示Customer可以有0个 Order Fact ,那么相应的就是 Customer 左联 (left join )Order Fact 。
如果对应的关系是 0:1,1:N ,表示Customer至少有一个最多n个Order Fact,而Order Fact可以有0个Customer,相应的就是Order Fact 左联(left join)Customer。
如果对应的关系是 1:1,1:N ,表示至少都有一个,那么在生成SQL的时候就是两表内联 (inner join)。
如果对应的关系是 0:1,0:N ,表示Customer可以没有Order Fact,order Fact 也可以没有Customer,那么就是两表外联(outer join)了。