将维度链接到事实表的表是事实的维度吗?

Posted

技术标签:

【中文标题】将维度链接到事实表的表是事实的维度吗?【英文标题】:Is A Table Linking a Dimension to a Fact table, a Dimension of a Fact? 【发布时间】:2019-02-22 10:51:37 【问题描述】:

在我对 BI 表的不完整视图中,事实表表示操作,维度表示实体。

我有一个FactOrder 表,其中包含订单信息(包括OrderIdCustomerId)。对于实际与订单相关但不是客户的人,有一个单独的维度。因此它们被保存在一个名为DimServiceUser 的单独表中。链接表将Order 连接到ServiceUser。这个中间 OrderServeruser 表应该定义为 Dimension、Fact 还是其他类型?

【问题讨论】:

在我看来,该表代表了服务用户“服务”了订单的事实,对吗? @gtosto 不,服务用户只是一种非客户的用户。例如您为自己购买保险,并让您家中的人作为共同保险人。 @gtosto 问题与中间表有关。 【参考方案1】:

它实际上更像是一张桥牌桌。这就是正在发生的事情。

您的 FactOrder 表是一个事实表,但它还包含一个 degenerate dimension。退化维度充当事实表中的维度键,但不会连接到相应的维度表,因为它的所有有趣属性都已放置在其他分析维度中。所以你有一个隐含的 DimOrder 不需要单独的表。

bridge table 可以将一组值连接到单个事实表行,也可以连接两个维度(例如客户和银行帐户)。这是处理合法的多对多关系的一种方式。桥接表是like a factless fact table。但是在维度建模中,我们不会将事实表连接在一起,而将桥接表和事实表连接在一起是可以接受的。如果您必须强制桥表成为事实或维度,则它更接近于事实表。但是这样做可能会使将来更容易实施不良的建模习惯。如果你可以称它为一座桥,我会同意的。 (请确保您阅读了第三个链接“就像一个无事实的事实表”。它是由 Star Schema: The Complete Reference 的作者编写的。这是一个很受欢迎的来源。)

【讨论】:

感谢您的回答。我应该在它前面加上“Bridge-”吗? 我会用 Bridge 做前缀。【参考方案2】:

由于 OrderService 不包含任何事实/度量,因此您不能将其称为事实表。

维度表: 维度表包含事实的维度。 它们通过外键连接到事实表。 维度表是非规范化表。 维度属性是维度表中的各个列 维度借助其属性提供事实的描述性特征 没有为给定的维数设置限制 维度还可以包含一个或多个层次关系

根据上面对维度表的定义,我相信你的表应该被称为维度表。

【讨论】:

所以,即使这个中间表没有定义实体并且作为事实(Order)和另一个维度(DimServiceUser)之间的桥梁,它仍然应该被视为一个维度并且它属于没有第三类? 这个表是对一个可测量事件的集合信息的引用,这个表实际上只是DimServiceUser的一个扩展。 但这是一个多对多表。你还认为它是一个扩展吗? 你想怎么称呼它? 这是一个“桥”表;桥表是一种特殊类型的事实表(“无事实”事实表),其中事实是隐含的(关系的存在)。我在这里写了一个可能对你有帮助的回答:***.com/questions/54392376/…【参考方案3】:

OrderServeruser 表应以“bridge”为前缀。

【讨论】:

想详细说明为什么?

以上是关于将维度链接到事实表的表是事实的维度吗?的主要内容,如果未能解决你的问题,请参考以下文章

没有指向事实表的任何链接的维度

数据仓库设计

维度表和事实表的含义是啥?

使用触发器链接到数据仓库中事实表中的时间维度是个好主意吗?

在 PDI 中检索事实表的技术密钥

当我们有一个加载的事实表时维度表的使用