代理键作为Dimension的属性

时间:2014-05-30 16:49:11

标签: sql data-warehouse dimensional-modeling domain-data-modelling

在数据建模中,维度可以将另一个维度的代理键作为属性,还是应该始终是业务键?

我有一个Item维度,它有一个Department Number作为属性。我也有一个部门维度。项目维度是否可以将SK保存到部门维度或仅保留业务密钥?

1 个答案:

答案 0 :(得分:1)

通常你会避免将自然键和代理键作为表中的外键,因为这是多余的,可能导致数据不一致。示例:有人更新自然键并忘记更新代理键。

在您使用标记您的请求的数据仓库中,冗余并不是一个问题。通常有一个事务处理系统,其中包含插入,更新和删除的负载,然后是数据仓库。数据仓库从处理系统中精美地排列所有数据,并且根本没有上述的更新。如果数据多余,谁在乎呢?它简化了数据访问。您甚至可以将员工部门联接存储为一个表,其中所有部门数据都是冗余的。数据仓库可以轻松快速地访问数据,从而使报告更容易。冗余外键在数据仓库中没有问题。