是否可以在不使用 link table 的情况下将多个事实 table 连接到同一维度 table?
Is it ok to have multiple fact tables that are connected to the same dimension tables without using a link table?
假设在我的数据库模型中我有三个事实table。这些事实 tables 具有相同的维度 tables(所谓的一致性维度)。我知道我不应该直接连接事实 tables(因为直接连接会导致某些事实的重复计算),而只能通过维度 tables。我感兴趣的是我能否将每个事实与每个维度 table 毫无问题地联系起来?我找了很多答案,意见分歧很大。有的说没问题,有的说因为这个table可以相互关联,会出现循环引用;在这些情况下,应该使用所谓的 link table。这个 link table 真的有必要吗?或者没有它也能工作吗?
如果一个维度可以描述事实事件的一个方面,您应该将它连接起来,以便它可以用于分析。
但是,您不应该强迫关系将事实与它不需要的维度联系起来。这将使您的模型变得混乱和臃肿。
你说得对,你不应该直接联系事实。该模型不会以这种方式运行。您需要阅读事实和维度的目的以了解原因。
您应该能够通过公共维度在相关事件之间导航,但这不是循环引用。循环引用阻止返回值,因为关系没有底部。
如果实体具有多对多关系,您可以使用 link/bridge 表将关系扩展为多个一对 many/one 对一关系。这对于建模来说很复杂,而且作为这个问题的一部分无法解释。
如果您想要更多,请post您的一些模型,以便我们可以专注于您的问题的具体需求。
我实现了这个模型(在 MS SQL 中),我在这里分享我的经验,以防将来有人对此感兴趣。
最后我创建了五个事实tables(模型原来更复杂),它们都直接连接到所有现有的维度tables(其中六个)。我没有使用 link table.
这个模型现在已经使用了将近五个月,到目前为止没有出现任何问题。
假设在我的数据库模型中我有三个事实table。这些事实 tables 具有相同的维度 tables(所谓的一致性维度)。我知道我不应该直接连接事实 tables(因为直接连接会导致某些事实的重复计算),而只能通过维度 tables。我感兴趣的是我能否将每个事实与每个维度 table 毫无问题地联系起来?我找了很多答案,意见分歧很大。有的说没问题,有的说因为这个table可以相互关联,会出现循环引用;在这些情况下,应该使用所谓的 link table。这个 link table 真的有必要吗?或者没有它也能工作吗?
如果一个维度可以描述事实事件的一个方面,您应该将它连接起来,以便它可以用于分析。
但是,您不应该强迫关系将事实与它不需要的维度联系起来。这将使您的模型变得混乱和臃肿。
你说得对,你不应该直接联系事实。该模型不会以这种方式运行。您需要阅读事实和维度的目的以了解原因。
您应该能够通过公共维度在相关事件之间导航,但这不是循环引用。循环引用阻止返回值,因为关系没有底部。
如果实体具有多对多关系,您可以使用 link/bridge 表将关系扩展为多个一对 many/one 对一关系。这对于建模来说很复杂,而且作为这个问题的一部分无法解释。
如果您想要更多,请post您的一些模型,以便我们可以专注于您的问题的具体需求。
我实现了这个模型(在 MS SQL 中),我在这里分享我的经验,以防将来有人对此感兴趣。
最后我创建了五个事实tables(模型原来更复杂),它们都直接连接到所有现有的维度tables(其中六个)。我没有使用 link table.
这个模型现在已经使用了将近五个月,到目前为止没有出现任何问题。