是否可以在不使用链接表的情况下将多个事实表连接到相同的维度表?

时间:2017-09-20 20:43:54

标签: sql-server database database-design data-warehouse fact

假设我的数据库模型中有三个事实表。这些事实表具有相同的维度表(所谓的一致维度)。我知道我不应该直接连接事实表(因为直接连接可能导致一些事实的重复计算),但只能通过维度表。我感兴趣的是我可以毫无问题地将每个事实与每个维度表连接起来吗?我寻找了很多答案,意见分歧。有人说没有问题,其他人说因为这个事实表可以相互关联,并且可以发生循环引用;并且在这些情况下应该使用所谓的链接表。这个链接表真的是必要的还是没有它可以工作?

2 个答案:

答案 0 :(得分:2)

如果维度可以描述事实事件的某个方面,则应将其连接,以便可以在分析中使用。

但是,您不应该强制关系将事实与不需要的维度联系起来。这将使你的模型混乱和臃肿。

你是对的,你不应该直接连接事实。该模型不起作用。您想要了解事实和维度的目的,以了解原因。

您应该能够通过公共维度在相关事件之间导航,但这不是循环引用。循环引用可防止返回值,因为关系没有底部。

如果实体具有多对多关系,则可以使用链接/桥接表将关系扩展为多个一对多/一对一关系。这对于模型来说很复杂,而且太多不能解释为这个问题的一部分。

如果您需要更多,请发布您的部分型号,以便我们专注于您问题的具体需求。

答案 1 :(得分:0)

我实现了模型(在MS SQL中),我在这里分享我的经验,以防将来有人对此感兴趣。
最后,我创建了五个事实表(模型变得更复杂),它们都直接连接到所有现有维度表(其中六个)。我没有使用链接表 这个模型现在使用了近五个月,到目前为止没有出现任何问题。