我们有一个带有非常大的Fact表的Star模式,以及大约20个Dimension表,当然来自Dimension Tables的PK必须是Fact表中的FK。
但事实表中的所有FK都需要成为PK的一部分吗?
我在几个DWH工作,那不是那样,但最近在大学考试中,我因为没有把它评分不好。
真的吗?这是一个好习惯吗?
如果我的事实表有20个维度,那么事实表PK必须是这30个属性的复合吗?
这是一个很好的做法,因为它有助于确保所有事实都引用现有维度成员,并可能提高某些DBMS的性能,但与任何其他设计/方法一样,它不是强制性的。
事实表的复合键实际上是recommended practice by Kimball的维度建模方法,即因为:
在大多数环境中,此组合键足以作为事实表的主键。在逻辑级别为事实行分配代理键通常没有优势,因为我们已经定义了使事实表行唯一的原因。