代理键的目的

时间:2014-08-07 11:34:30

标签: sql data-warehouse

我想知道为什么开发人员在他们的数据仓库中创建自己的代理键作为主键,尽管表已经是主键。

在电信系统中,有gsm_no或account_id作为主键。为什么数据仓库中的开发人员从另一个系统中获取这些表,通过创建代理键(例如customer_sk)为其系统添加新的主键?

2 个答案:

答案 0 :(得分:1)

这是一种普遍接受的良好做法&#34 ;;数据仓库应该在依赖性方面与生产系统隔离,并且包括与现有主键的隔离。可能最好的原因是在不同的源系统中重复使用;如果数据仓库从多个源中提取,或者初始源与不同的源交换,则在DW级别明确定义源之间的映射关系,而不是仅仅依赖于密钥。

http://christianvdheever.wordpress.com/2012/11/01/surrogate-keys-and-foreign-keys-in-a-dimensional-data-model/

答案 1 :(得分:1)

其次,但并非不太重要的原因是因为主键通常不是整数。很难发现ERP或CRM在varchar类型中没有有意义的PK。表现确实很好!

第三,如果您正在实施SCD类型1,您可以存储维度的历史值(即员工更改的部门)。 并且,正如我们的SO朋友所说,有多个来源。

相关问题