【问题标题】:How to handle graph relationship in data warehouse?如何处理数据仓库中的图关系?
【发布时间】:2020-09-03 06:41:12
【问题描述】:

假设我们有许多公司,它们通过“A 是 B 的买方”、“B 是 A 的卖方”、“C 是 B 的子公司”等关系相互关联。

我们可以使用图形数据库来处理这些关系。但是在典型的数据仓库环境(表格格式)中,我们如何才能有效地表示这些关系呢?

目前,我正在考虑使用关系表来存储公司之间的关系,并使用单独的表来存储公司属性。

【问题讨论】:

  • 为什么不使用图形数据库?钉子用锤子,螺丝用螺丝刀。您可能太努力了,无法在圆孔中安装方形钉。

标签: database data-warehouse


【解决方案1】:

(我假设我们讨论的是通用关系而不是层次结构——这是一种非常具体的关系类型)

在数据仓库中,公司数据将保存在维度表中,并且(除了一些特殊情况)您不会直接将维度相互关联:它们通过事实表相互关联。

如果一个事实与同一个维度有多个关系,那么事实中只有多个 FK 指向该维度(角色扮演维度)。因此,对于交易事实,您可能有一个买方 FK、一个卖方 FK 等,所有这些都引用了 Company 维度中的记录。

如果您的关系具有任何真正的复杂程度,那么正如前面的评论所述,如果您需要报告这些关系,最好使用图形数据库。

如果您的关系类型数量有限,并且每种关系类型都有固定的基数,那么您可以在无事实事实表中对其进行建模,即仅包含公司维度的 FK 的事实表。为了让它以任何有用的方式工作,作为起点,您可能需要能够定义一个核心角色,然后显示与该角色的关系。例如,您可以从每个事实记录的子公司开始,然后向该子公司显示相关的父、买方等

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-24
    • 2013-01-23
    • 1970-01-01
    • 2012-12-04
    • 2018-10-19
    • 1970-01-01
    • 2016-01-12
    • 2019-12-03
    相关资源
    最近更新 更多