亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網(wǎng)為廣大站長提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.430618.com 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

本文介紹了雪花圖與多對多關(guān)系的處理方法,對大家解決問題具有一定的參考價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧!

問題描述

我有一張雪花圖:

Fact: 
id_movie
id_user
rating

Dim Users:
id_user
...


Dim Movies:
id_movie
...

在我的ERD中,我還有一個(gè)表Category,它與電影有多對多的關(guān)系:

Dim_Category:
id_category
...

Map_Category_Movie:
id_movie
id_category
relevance

我正在嘗試找到一種有效的方法來在雪花/星形模式中對此進(jìn)行建模。我的問題:

我可以將這兩個(gè)表添加到雪花圖中,但這會讓人感覺不對勁,因?yàn)槲彝ǔV皇褂米鳛樵搱D外部邊緣的子表的聚合的表。
我可以為相關(guān)性創(chuàng)建另一個(gè)事實(shí)表,但由于我希望最終報(bào)告用戶的相關(guān)性與他們在電影中的評級行為的相關(guān)性,我需要同時(shí)使用這兩個(gè)事實(shí)表,對我來說,這是一種不正確的方法。

這里有什么指導(dǎo)嗎?

推薦答案

很有可能你已經(jīng)對自己做出了回應(yīng),歡迎來到地獄。
首先,您會對http://www.information-management.com/中的報(bào)價(jià)感興趣:

雪花結(jié)構(gòu)將減少對維度的批量更新。雖然一直被認(rèn)為比恒星慢,但一些測試表明,扁平維度和雪花維度在性能上沒有區(qū)別。事實(shí)上,在某些情況下,雪花提供了卓越的性能,例如當(dāng)較寬的維度(即,客戶)被分割成雪花時(shí)。

因此,使用橋接表不會導(dǎo)致顯著的性能損失。在大多數(shù)情況下,我更喜歡雪花,因?yàn)橛袝r(shí)管理數(shù)據(jù)集市真的更容易,而硬件/數(shù)據(jù)大小為您提供了這樣做的機(jī)會。

我的友好建議是創(chuàng)建橋接表(MOVICE_ID、CATEGORY_ID、REALICATION),然后繼續(xù)。

如果您有固定的和較小的類別列表,請創(chuàng)建具有預(yù)定義類別的表:

dim_movies
----------
movies_id
category1_relavance
category2_relavance
category3_relavance

最多10個(gè)也許可以,特別是如果您為公司工作,您創(chuàng)建的是DWH,而不僅僅是咨詢(您可以管理)。

有一次,我們試圖創(chuàng)建一個(gè)數(shù)據(jù)倉庫的杰作,其中有一個(gè)與您的類似的示例。付款交易基于性能(每個(gè)事實(shí)表的數(shù)據(jù)超過2TB),因此我們決定嘗試創(chuàng)建星型架構(gòu)。

我們創(chuàng)建了維度,就像我上面描述的那樣,每次沒有。不同類別的增長etl在表中增加了新的字段。
ETL進(jìn)程還必須動態(tài)重新創(chuàng)建多維數(shù)據(jù)集。
雖然很痛苦,但在我的記憶中,它的表現(xiàn)比雪花好13%。

此外,在最詳盡的項(xiàng)目中,我相信10y.o孩子會更好地設(shè)計(jì)數(shù)據(jù)庫,我們必須將每個(gè)項(xiàng)目準(zhǔn)確地連接5個(gè)類別。每一類都指向20多個(gè)可能的表格中的一個(gè)。它只能根據(jù)一些規(guī)則通過他們的軟件加入。這是一種1…5:多的關(guān)系(它不存在!?!)

pk     code_conto     cat1    cat2    cat3    cat4    cat5
----------------------------------------------------------
1      123            17      NULL    5467    12      NULL
2      124            67      1098    NULL    1423    AK12
3      123            NULL    NULL    NULL    13      23

代碼如下:

If (code_conto == 123)
{
    Category1_join_set = 'SELECT cat_id, cat_name FROM cat_customers'; //NOTE THIS
    Category2_join_set = 'SELECT cat_id, cat_name FROM cat_products';
    Category3_join_set = 'SELECT cat_id, cat_name FROM cat_city';
    ...
    ...
}
    If (code_conto == 124)
{
    Category1_join_set = 'SELECT cat_id, cat_name FROM cat_products'; //AND THIS
    Category2_join_set = 'SELECT cat_id, cat_name FROM cat_origin';   //ON SAME FIELD
    Category3_join_set = 'SELECT cat_id, cat_name FROM cat_blabla';   //DIFFERENT JOIN TABLE
    ...
    ...
}

都是硬編碼的。因此,我們對查詢進(jìn)行了硬編碼,重復(fù)了100多次When In Case語句。你猜怎么著?ERP供應(yīng)商改進(jìn)了他的軟件,并創(chuàng)建了映射表,其中是基于CODE_CONTO鍵的‘C’IF語句。
我們花了3周多的時(shí)間來提供良好且安全的ETL工作(使用SQL、外部工具)。

我寫這一切不是白寫的。我想讓你和其他人相信,在多對多關(guān)系中使用橋接表可能是97%的最佳實(shí)踐。

但是,有五種可能的M:M關(guān)系設(shè)計(jì)解決方案:

    數(shù)組或系列(我甚至不想嘗試)
    橋接表
    分組
    固定級別
    動態(tài)創(chuàng)建固定級別

希望我沒有把您弄糊涂。

這篇關(guān)于雪花圖與多對多關(guān)系的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,

分享到:
標(biāo)簽:data-warehouse errorSnowFlakeDiagramandManytoManyrelationship exception I
用戶無頭像

網(wǎng)友整理

注冊時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運(yùn)動步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績評定2018-06-03

通用課目體育訓(xùn)練成績評定