多对多维模型

时间:2010-01-06 20:32:20

标签: database-design data-warehouse dimensions

民间,

我有一个名为DIM_FILE的维度表,其中包含我们从客户处收到的文件的信息。每个文件都有详细记录,构成我的FACT表CUST_DETAIL。在主要过程中,文件经历了几个阶段,每个阶段都标记了一个状态。简而言之,我有多对多的关系。关于星型模式维度建模的任何想法。客户记录仅属于单个文件,文件可以具有多个状态。

FACT
----
CustID
FileID
AmountDue


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

FILE_STATUS
-----------
FileID
StatusDateTime
StatusCode

1 个答案:

答案 0 :(得分:2)

您可以采取一些措施将其与维度模型/星型模式结合使用:

  1. 建立两颗星(可能,它们最终会出现在不同的数据集中)。一个有FACT作为事实表,另一个有FILE_STATUS作为事实(你可以将它视为事务粒度事实表)。为了使这项工作,我可能会非常规化并将CustId添加到FILE_STATUS
  2. 由于您正在处理FILE_STATUS,因此您可以将FACT转换为累积快照事实表。在此模型中,您在FACT中有一组单独的额外列,用于记录属于每个状态转换的所有信息。至少,您有一个列到日期/时间维度的列,以记录何时达到特定状态。在ETL中,您必须更新事实表以记录文件在状态中的进展情况。只有当状态数量有限且相对较小时,此设计才有效。此外,应该有一个或多或少明确的状态进展路径(例如客户订单:收到 - >选择 - >打包 - >发货 - >支付)
  3. 为状态创建一个所谓的多值维度:FACT将获得此新维度的关键字,而这个新维度实际上代表了一系列适用于FACT表中某一行的状态。
  4. 你可以有一个桥牌表(虽然我不认为这适用于这个主题,但不确定)
  5. 参考文献:

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