使用維基百科的雪花圖解圖像:Snowflake模式:事實表與外鍵的子維?
http://en.wikipedia.org/wiki/File:Snowflake-schema-example.png
難道永遠做你在做Dim_Product意義上有一個Fact_Sales「Brand_Id」外鍵?像銷售/產品或產品/品牌一樣,銷售/品牌之間存在多對一的關係,那麼是否有合乎邏輯的原因?您可能希望直接加入Dim_Brand表。
我可能沒有看到明顯的東西。
使用維基百科的雪花圖解圖像:Snowflake模式:事實表與外鍵的子維?
http://en.wikipedia.org/wiki/File:Snowflake-schema-example.png
難道永遠做你在做Dim_Product意義上有一個Fact_Sales「Brand_Id」外鍵?像銷售/產品或產品/品牌一樣,銷售/品牌之間存在多對一的關係,那麼是否有合乎邏輯的原因?您可能希望直接加入Dim_Brand表。
我可能沒有看到明顯的東西。
我認爲這將是一種很好的方式來緩存數據...但在所有誠實,你可能更好的只是依靠鏈接,因爲它們。
推理是你已經有了這個表的定義,存儲銷售。爲了增加這些產品的品牌,該商店銷售的產品將會混淆該表的「主題」或「主題」,記錄商店的銷售。
現在,如果通過某種方式,你有一種產品可以在不同品牌下銷售(如果我知道一個包裝可以具有分裂性格,那麼......)然後是的,這對一定程度是有意義的,但更多合理的解決方案就是給每個產品分配自己的SKU代碼。
您正在查看的關係類型是has-a關係。
產品有品牌。銷售有產品;這是已售出的東西。但是銷售沒有品牌。或者,更好的說法是,你不能出售品牌。 (不要讀得太多......)
所以,不,你不會想把品牌添加到銷售。
如果您在維度模型中工作(您的問題中的Star/Snowflake架構註釋使您認爲自己是),那麼從業績角度將BRAND_ID添加到銷售事實中是有意義的,如果業務問題正試圖回答「在這個時間框架內所有產品中X品牌的銷量是多少」。
如果產品尺寸是1型SCD,而產品更改品牌,它也可能有用。您可能希望將之前的銷售額保留爲「舊」品牌。
請記住,您是而不是當您構建星型/雪花報告架構時,將進行實體 - 關係建模。 is-a或has-a的問題與維度模型無關。
感謝威士忌酒和諾拉。 – Starjammer 2012-07-30 20:32:18
謝謝。所以銷售直接涉及產品,但間接涉及品牌。那麼,關於雪花模式,是否會有這樣一種情況,你會希望FK進入第二級維度?怎麼樣的維度(和事實)捲起水平的情況?例如,將product-> store-> brand替換爲task-> phase-> project(即「Project」由「任務」組成的「階段」組成)。是否應用相同的邏輯或你可能想要在FactTask中有一個ProjectID的情況? – Starjammer 2012-07-30 20:43:22
你提出的是一個星型模式(http://en.wikipedia.org/wiki/Star_schema)。你可以這樣做,因爲這些對象是相關的。你會獲得一些性能提升,但是最終會出現一個平頭問題。您正在操縱數據以適應您的需求,而不是改變您的模式以適合您的數據。簡而言之:它可以以任何一種方式進行,但是您必須進行研究以確定最適合您的需求。 – 2012-07-30 20:58:11