簡體   English   中英

需要幫助建模事實表

[英]Need help modeling a fact table

我正在邁入數據倉庫的第一步。

我已經購買了Kimball&Ross的優秀著作“ The Data Warehouse Toolkit-Third Edition”,為我解釋了如何掌握基本概念。
今天,我已經開始設計我的第二個數據集市,但是我已經遇到了(可能是愚蠢的)問題。 假設我正在建模一個簡單的銷售事件:一個簡單的事實表將是:

DATE_ID | CUSTOMER_ID | PRODUCT_ID | QUANTITY

正如書中和網絡上所解釋的,每個維度與其他維度都有多對多的關系。
接下來,我想添加更多尺寸,例如載體:

DATE_ID | CUSTOMER_ID | PRODUCT_ID | CARRIER_ID | QUANTITY

尺寸仍然是多對多的關系。
現在,我被要求添加很多(也許是十幾個或更多)有關交貨的詳細信息,例如一堆日期,路線,箱子和托盤的數量,各種標志等,所以我在考慮一個交貨尺寸表。 我的第一次嘗試是:

DATE_ID | CUSTOMER_ID | PRODUCT_ID | CARRIER_ID | DELIVERY_ID | QUANTITY

但是...令人驚訝的是,事實表現在不再是多對多關系。 所以我想:“好吧,我可以重構它,因為現在其他維度實際上是交付的屬性”,但是它將變成

DELIVERY_ID | PRODUCT_ID | QUANTITY

我的事實表只有2個維度。
現在,在其他情況下,我會將交付視為退化的維度,但是由於我不得不將其與很多服裝相關聯,因此我不遵循以下哪條路線:

  • 創建一個DELIVERY維並重構事實表?
  • 把它們丟進事實表?
  • 創建一個DELIVERY維並將DELIVERY_ID放在事實表中,假裝它只是一個退化維?

在維度和事實之間進行選擇可能並非那么簡單

正如您所描述的,就銷售而言, 交貨是一個單獨的事件。 因此,交貨應該是單獨的事實表。

當然,如果您不需要額外的復雜性,則可以總是在維度中“投影”(可以這么說)。 例如,假設您只需要知道一些有關交貨的簡單事實:例如承運人和交貨日期。 然后,您可以在SALES中使用DELIVERY_ID,然后在DELIVERY維度中注冊這些信息。

但是,如果您必須記錄交付的全部復雜性(相對於一次銷售可能有兩個或更多交付,而相對於一次交付可能有兩個或更多銷售),則需要兩個事實表。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM