专注于中国的商业智能

导航

KDT#81 事实表中的代理键

在数据仓库的建模中,代理键通常是建立在维度表中的。那么在事实表中如何呢?在建立逻辑模型时,事实表中显然是没必要建立代理键的,但是到了物理模型,在某些特定的情况下是可以考虑建立代理键。

代理键一般是无意义的整型值,做为维度表的主键,它的分配过程一般是顺序的。代理键可以很好的隔离源系统的数据变化,对数据仓库中的查询性能也能起到很好的作用。在事实表中,主键一般定义为维度外键的子集,通常几个维度外键即可实现主键的功能。这样的情况下,在事实表中定义代理键是起不了什么作用的。

在下面举例的一些情况,事实表也可以考虑使用代理键。

1.有时,企业的业务规则允许重复的记录存在。当然,这时我们需要尽力去源系统中找各种可能使记录能唯一标识的字段,如时间戳等,来使数据记录能唯一性。如果最终的结果是不得不接受这种重复记录时,可以采用代理键来实现数据记录的唯一性。

2.某些时候,增加代理键可以使ETL的处理方便很多。尤其是,处理Update的方式采用先InsertDelete的时候。这时增加代理键可以保证策略能使用,并且能提高加载性能。如果要操作的事实表中是复合主键时,采用该策略时都可以建立代理键。

3.另一个ETL的需求是,当加载工作暂停时,使用顺序分配的代理键可以很容易的判断出继续工作的位置。

总结来说,代理键对于维度表来说是一个非常好的选择。对事实表来说,在数据迁移时使用代理键会起到非常大的作用。

posted on 2010-08-05 14:37  李梦蛟  阅读(946)  评论(0编辑  收藏  举报