DATA WARE HOUSE模型,具有1到M和M * M的关系

时间:2016-05-11 13:38:55

标签: database-design data-warehouse business-intelligence

我正在建模数据仓库。让我解释一下情况:

  • 活动有很多会议
  • 活动有多个帐户
  • 活动有首演日期和结束日期

  • 会议必须是活动的一部分

  • 会议有一个或多个主管(主管可以监督许多会议) - 多对多

  • 会议有一个或多个发行人(发行人可参加多次会议) - 多对多

  • 会议有一个或多个投资者(投资者可参加多次会议) - 多对多

这是我的模特:

enter image description here

我用Google搜索了一下,我发现我们称之为桥接解决方案,但我还不太清楚它是什么,如果我必须在我的模型中使用它。

Thankx

2 个答案:

答案 0 :(得分:0)

换句话说,桥模型可以称为Snowflake模式。在处理场景中的多对多关系时,此方法非常有用。使用此模型,您可以将维度表分解为子维度表。通常我们知道,Dimension表有唯一的行。如果我们从您的场景中得到一个示例,Dim_meeting和dim_supervisor具有彼此唯一的行。也就是说,主管中的每一行都是唯一的,没有可用的重复数据。因此,要处理多对多关系,如果没有两个维度之间的桥接表,则很难做到这一点。对于同一个例子我(会议和主管),主管可以监督许多会议。根据你的说法,一次会议可能会有很多主管。

在这种情况下,如果我们在两者之间引入桥接表,则桥接表将具有其自己的唯一ID(代理键 - 主键),管理员ID和会议ID。会议维度将包含所有唯一的会议记录,而主管维度将具有唯一的主管记录。桥接表将为主管和会议的许多记录提供许多记录,以便在桥接表中创建多对多的关系。

它是如何运作的。

我还使用桥接表处理了许多类似的情况,这些情况在解决类似问题时似乎非常有用。 希望你明白这个想法

答案 1 :(得分:0)

另一个选择是拥有一个EVENT_ACTIVITY事实,其中所有内容都表示为"活动":

ACTIVITY_ID
PARENT_ACTIVITY_ID
ACTIVITY_LEVEL
ACTIVITY_TYPE
START_DATE
END_DATE
PERSON_ID
other DIM Keys

活动的类型包括活动,会议,出勤,监督,以及您可能想要包含的任何其他内容。 对于多对多会议/主管,您将拥有多个具有相同父事件的监督活动记录。