如何处理数据仓库中的图关系?
Posted
技术标签:
【中文标题】如何处理数据仓库中的图关系?【英文标题】:How to handle graph relationship in data warehouse? 【发布时间】:2020-09-03 06:41:12 【问题描述】:假设我们有许多公司,它们通过“A 是 B 的买方”、“B 是 A 的卖方”、“C 是 B 的子公司”等关系相互关联。
我们可以使用图形数据库来处理这些关系。但是在典型的数据仓库环境(表格格式)中,我们如何才能有效地表示这些关系呢?
目前,我正在考虑使用关系表来存储公司之间的关系,并使用单独的表来存储公司属性。
【问题讨论】:
为什么不使用图形数据库?钉子用锤子,螺丝用螺丝刀。您可能太努力了,无法在圆孔中安装方形钉。 【参考方案1】:(我假设我们讨论的是通用关系而不是层次结构——这是一种非常具体的关系类型)
在数据仓库中,公司数据将保存在维度表中,并且(除了一些特殊情况)您不会直接将维度相互关联:它们通过事实表相互关联。
如果一个事实与同一个维度有多个关系,那么事实中只有多个 FK 指向该维度(角色扮演维度)。因此,对于交易事实,您可能有一个买方 FK、一个卖方 FK 等,所有这些都引用了 Company 维度中的记录。
如果您的关系具有任何真正的复杂程度,那么正如前面的评论所述,如果您需要报告这些关系,最好使用图形数据库。
如果您的关系类型数量有限,并且每种关系类型都有固定的基数,那么您可以在无事实事实表中对其进行建模,即仅包含公司维度的 FK 的事实表。为了让它以任何有用的方式工作,作为起点,您可能需要能够定义一个核心角色,然后显示与该角色的关系。例如,您可以从每个事实记录的子公司开始,然后向该子公司显示相关的父、买方等
【讨论】:
以上是关于如何处理数据仓库中的图关系?的主要内容,如果未能解决你的问题,请参考以下文章