OLAP:为什么事实和维度表之间的所有外键都是代理键?

时间:2011-12-21 04:54:15

标签: olap

我正在阅读有关OLAPOLAP Fact Tables的维基百科文章,文章说明

  

事实和维度表之间的所有外键都应该是代理   密钥,不是来自运营数据的重用密钥。

但它没有说明原因。 那么,为什么要

  

事实和维度表之间的所有外键都应该是代理   密钥,不是来自运营数据的重用密钥。

3 个答案:

答案 0 :(得分:3)

来自维基百科的Dimension Table的详细解释:

建议关键字段是一个简单的整数,因为键值没有意义,仅用于事实和维度表之间的连接字段。 代理维度键的使用带来了以下几个优点:

  • 性能 - 如果使用单个字段代理键,则联接处理效率更高,
  • 来自操作密钥管理实践的缓冲区 - 当被删除的数据行可能在长时间休眠后重用或重新分配时可能会重新出现时,可以防止出现形式情况,
  • 映射以集成不同的来源,
  • 处理未知或不适用的连接,
  • 跟踪维度属性值的更改。

答案 1 :(得分:1)

辛苦赚来的知识。

来自运营数据的密钥可能随时更改格式。这种方式更容易。

这就像问“我应该使用SSN作为users表的主键吗?”。虽然你(理论上)可以,但这不是一个好主意。

但是,我承认,我真的不知道我在说什么。我记得我们的甲骨文家伙对此事有很强烈的意见。 : - )

答案 2 :(得分:0)

我永远不会将SSN用作任何表的主键。此信息需要大量保护。将它用作PK将意味着它将作为外键连接出现在其他表中。即使是公司特有的员工ID,也不应该以其他方式妥协。代理键工作得更快。它们允许将尺寸设置为SCD类型2.即使您认为只需要类型1,也可能会有所改变。