2010-01-06 73 views
0

民间,多对多维度模型

我有一个称为DIM_FILE的维度表,它保存我们从客户那里收到的文件的信息。每个文件都有详细记录,构成我的FACT表CUST_DETAIL。在主流程中,文件经历了几个阶段,每个阶段都为其添加了一个状态。总而言之,我有多对多的关系。围绕星型模式尺寸建模的任何想法。客户记录只属于一个文件,并且文件可以具有多个状态。

FACT 
---- 
CustID 
FileID 
AmountDue 


DIM_FILE 
-------- 
FileID 
FileName 
DateReceived 

FILE_STATUS 
----------- 
FileID 
StatusDateTime 
StatusCode 
+1

你的问题到底是什么? – 2010-01-06 20:56:35

回答

2

有一些事情你可以做一个三维模型/星型模式嫁给这样的:

  1. 建设两个星(可能的话,他们最终会在不同的数据集市)。一个有FACT作为事实表,另一个明星有FILE_STATUS作为事实(你可以把它看作一个事务粒度事实表)。为了使这项工作,我可能denormalize并添加CustId FILE_STATUS太
  2. 由于你正在处理FILE_STATUS,你可以把事实变成一个积累快照事实表。在这个模型中,您将在FACT中有一组单独的额外列来记录属于每个状态转换的所有信息。至少,您会在日期/时间维度中添加一列,以记录何时达到特定状态。在您的ETL中,您必须更新事实表以记录文件如何在状态中前进。这种设计只适用于状态数量有限且相对较小的情况。此外,应该有或多或少清晰的状态进展路径(如客户订单:已接收 - >已拣配 - >已包装 - >已发货 - >已付款)
  3. 为状态创建一个所谓的多值维度:FACT会得到这个新维度的关键,而这个新维度实际上将代表适用于FACT表中的一行的状态集合。
  4. 你可以有一个桥接表(虽然我不认为适用于这个问题,不知道)

参考文献:

累积快照:http://www.kimballgroup.com/2002/06/design-tip-37-modeling-a-pipeline-with-an-accumulating-snapshot/ 多值维度VS桥表:http://www.kimballgroup.com/data-warehouse-business-intelligence-resources/kimball-techniques/dimensional-modeling-techniques/multivalued-dimension-bridge-table/

+0

考虑更新链接或从提供的链接提供关键信息,因为它们现在已经死亡。 – Fourth 2014-09-18 17:31:04

+0

@第四感谢,更新。 – 2014-09-18 19:31:23