星图:事实与维度之间的三重关系

时间:2018-04-10 21:53:17

标签: database database-design schema data-warehouse erd

我正在从ERD建模星型模式。数据库是一家租赁公司。我的事实表现在包含一个租赁预订。客户可以预订汽车,收集汽车和返回汽车。应记录发生这种情况的日期。

因此,我的Star Schema现在有一个时间维度,包含日/月/年,以及与事实表的三个关系。我想知道这是否是正确的方法,或者是否有其他选择需要考虑,因为我从未见过星级方案,其中维度有多个关系。

就是这样:

 Booking(Fact)
 bookingId
 bookingDate(FK)
 collectionDate(FK)
 returnDate(FK)

 Time(Dim)
 timeId
 day
 month
 year

2 个答案:

答案 0 :(得分:1)

是的,您可以多次将Fact连接到同一维度。我已经看到这种情况特别适用于时间维度。 我不确定您使用什么密钥加入事实到时间昏暗,但在选择数据时,您最终可能会得到这样的查询:

select bFact.bookingID,t1.day "Booking Date",t2.day "Collection Date",t3.day "Return Date"
from Booking bFact
join Time t1 on t1.date = bFact.bookingDate
join Time t2 on t2.date = bFact.collectionDate
join Time t3 on t3.date = bFact.returnDate

答案 1 :(得分:-1)

这是一个试图帮助您更好地理解的图表。

enter image description here

如果您的bookingdate,collectiondate,returndate都是时间维度的一部分,那么您在事实表中不需要它们。它们需要位于维度表中。

我已经创建了一个能够正确展示我认为你的意思的图表。 例如,如果return可以有不同的度量,那么它需要是一个单独的维度。每个维度始终需要一个主键,这些主键始终对应于事实表中的外键。

有任何问题让我知道