【问题标题】:Does Primary key in Dimension table have to be part of the Primary key in the Fact table?维度表中的主键是否必须是事实表中主键的一部分?
【发布时间】:2019-07-08 05:41:01
【问题描述】:

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

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

我在几个 DWH 工作,但情况并非如此,但最近在大学考试中,我因为没有把它拿下。

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

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

【问题讨论】:

    标签: data-modeling data-warehouse dimensional-modeling


    【解决方案1】:

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

    事实表的复合键实际上是recommended practice by Kimball的维度建模方法,即因为:

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

    【讨论】:

    • 嗨 @jmng 拥有 20 或 30 个属性的 pk 不会很脏吗?
    • 我明白你的意思,但如果你有 20 或 30 个维度来描述一个事实,是否可以将其中一些维度组合在一起(即非规范化或分类)?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-26
    • 2010-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多