首页 > 解决方案 > 维度表中的主键是否必须是事实表中主键的一部分?

问题描述

我们有一个带有非常大的 Fact 表的 Star 模式,以及大约 20 个 Dimension 表,当然 Dimension Tables 中的 PK 必须是 Fact 表中的 FK。

但是事实表中的所有 FK 是否也需要成为 PK 的一部分?

我在几个 DWH 工作,但那不是那样的,但最近在大学考试中,我因为没有把它弄得不好。

真的吗?这是一个好习惯吗?

如果我的事实表有 20 个维度,那么事实表 PK 是否必须针对这 30 个属性进行复合?

标签: data-modelingdata-warehousedimensional-modeling

解决方案


这是一个很好的做法,因为它有助于确保您的所有事实都引用现有的维度成员,并且可以提高某些DBMS的性能,但与任何其他设计/方法一样,这不是强制性的。

事实表的复合键实际上是Kimball 的维度建模方法推荐的做法,即因为:

在大多数环境中,此复合键足以作为事实表的主键。在逻辑级别为事实行分配代理键通常没有优势,因为我们已经定义了使事实表行唯一的原因。


推荐阅读