2016-02-29 70 views
0

我試圖爲我的項目之一(銷售訂單)設計數據倉庫的維度建模。我對這個概念很陌生。如何在數據倉庫中按順序在多個產品中存儲事實數據表

到目前爲止,我可以理解產品,客戶和日期可以存儲在維度表中,並且訂單信息將位於事實表中。

Date_dimension表結構將是

date_dim_id, date, week_number, month_number 

Product_dimension表結構將是

product_dim_id, product_name, desc, sku 

Order_fact表結構將是

order_id, product_dim_id(fk), date_dim_id(fk), order_quantity, order_total_price, etc 

如果次序是地方有2或更多數的產品,那麼在order_fact表中會有相同的重複條目order_id, date_dim_id

請幫忙。我很困惑。我知道在關係數據庫中,order table每個訂單將有一個條目,並且產品和訂單之間的關係將保留在具有order_id和product_id作爲外鍵的另一個表中。

在此先感謝。

+0

你想從訂單表頭中保存什麼信息?您在訂單級別詳細信息中創建一個事實,然後解決如何保存訂單標題信息。例如,客戶只出現在源系統的標題中,但在訂單事實表中,它將針對所有單個產品訂單重複。這沒有問題。唯一的挑戰是如果頭上有總購物金額,則無法在多個產品記錄中重複此操作。 –

+0

對此有兩種主要的解決方法:1.按記錄數除運輸並將其分佈到所有記錄中; 2.添加另一條記錄並假裝航運是一種產品。無論您做什麼,您都需要保留原始訂單號碼,以便衡量「每筆訂單的平均銷售額」和「每份訂單的平均產品數量」等。無論如何,這種頭/細節尺寸建模在互聯網上被討論爲令人厭惡的。你爲什麼不做一些研究並提出具體問題。 –

+0

您應該使用訂單行項目作爲事實表的顆粒 –

回答

1

這是一個經典案例,您應該(probbaly)有兩個事實表 FactOrderHeader和FactOrderDetail。

FactOrderHeader將爲每個訂單創建一個記錄,存儲有關訂單價值和任何訂單級別折扣的信息;儘管在某些情況下它們可以表示爲OrderDetail記錄。

FactOrderDetail將爲每個訂單行記錄一條記錄,存儲有關產品,產品成本,產品銷售價格,商品數量,商品折扣的信息。等等。

如果您想要存儲非正常的信息,例如訂單被拍下,交付,付款的日期,您可能還需要一個DimOrderHeader。

相關問題