2013-03-01 92 views
0

我是DW的新人,我需要爲電子商務網站創建一個非常簡單的倉庫。數據倉庫設計 - 如何設計事實表?

維度表

  • 日期維度表(ID,年,季,月,日)
  • 時間維度表(ID,小時,分鐘)
  • 產品維度表(ID,產品名稱,價格,類別ID)
  • 產品類別維度表(ID,類別名稱)

事實表

    每個產品
  • 銷售(日期ID,產品ID,銷售數量,價格和)

這一事實表是適合喜歡「在6月有多少產品賣」問題等等。

但是我需要回答問題,比如「6月份哪些類別的產品銷量最多?」或者「星期三最成功的商業時間是什麼?」。

我看到兩種可能性:

  1. 我可以添加新列(類別ID或時間ID)爲產品的事實表。但是這個ID會改變表格的粒度
  2. 我可以爲類別創建另一個事實表,其中將包含關於類別的事實。但是這(在我看來)是浪費磁盤空間,不是嗎?

哪種可能性是正確的?

+0

可能downvoter解釋這個問題有什麼問題嗎?如果需要,我可以添加一些缺失的信息。 – Artegon 2013-03-02 06:22:01

回答

1

您的銷售事實表應該是訂單項

你可以添加一個退化的維度只爲這一天的時間,或者在小時的糧食增加時間維度表。

爲什麼不給dim_product添加分類名稱?

+0

由於產品可能列在更多類別中。 – Artegon 2013-03-02 05:58:55

+1

很好,它只是一個產品層次結構。您可以在產品昏暗的許多記錄中擁有相同的類別。數據重複在星型模式下是可以的。 – 2013-03-04 01:47:11

0

如果你在每件商品的銷售水平上創造你的Fact_table,即幾乎在交易穀物上,我認爲你可以添加類別id到引用一個Dim_category的Fact_table。 這肯定會增加Fact_table的磁盤存儲空間,但在稍後的階段,這個Datamart將能夠回答您的任何問題。

0

是。始終以業務流程中最細化的方式創建事實(如果您的源系統允許) - 在這種情況下,每種產品在特定的數據和時間向客戶進行每次銷售。如果(並且只在需要)性能需要時(並且只在需要時)才能始終創建彙總數據。

與返工工作相比,磁盤空間相當便宜。