事实表中的物理Pkey

时间:2018-10-14 14:41:30

标签: sql sql-server primary-key data-warehouse fact

我在接受采访。我为他们做了一些代码,他们很想知道为什么事实表中没有PKEY,为什么有重复数据。在我看来,FACT可以保存昏暗的外键,并且不需要物理PKEY。并且在明显点上,外键列将具有重复项。那是什么目的。给我展示不同阶段的不同事实。现在,从逻辑上讲,一些组合键实际上可以构成主表,但是在数据库中将其作为物理表是一个好方案。

总结我的问题。 1. FACT物理上是否应具有主键? 2.我们可以在fkey列的集合上使用物理PKEY吗(我不认为ms sql会允许这样做)? 3. FACT是否应该仅出于pkey的要求就具有代理密钥?我们可以在日期等其他重要列上订购吗?

等待响应是要了解对此的不同看法。

1 个答案:

答案 0 :(得分:1)

我要假设,当访调员询问事实表的主键时,他们正在询问是否需要代理主键(即唯一的数字,通常由序列或自动递增生成)。 / p>

在Kimball方法中,替代主键用于维度表中。除了少数例外,事实表不需要代理主键。事实表具有主键,但它是由指向维度的外键列的子集组成的组合键,这使得唯一标识符适合作为主键。该键是物理的,因为您可以在创建表时定义它,而数据库通常会为已定义的主键建立索引。

这种概括的例外是:

  • 有时,业务规则允许使用相同的事实行。在这种情况下,您需要一个代理密钥来唯一地标识事实记录。
  • 如果您具有代理主键,则某些ETL工具的性能会更好,尤其是当您需要ETL更新/插入一行然后删除先前的事实记录时。

在这些情况下,代理主键是有益的。但是,这不是您要暴露给最终用户的东西,它仅仅是满足技术需求的一种便利。