Star Schema的設(shè)計(jì)思路與總結(jié)
Star Schema設(shè)計(jì)思路是本文我們主要要介紹的內(nèi)容,在實(shí)際工作中,遇到的數(shù)據(jù)通常是很不規(guī)則的,類似于xml,有很多一對多的關(guān)系。例如一個商品,可以有很多種稅,有幾個累加的折扣,每個折扣又有一些信息,例如折扣的原因,折扣率之類。在《Star Schema The Complete Reference》中提到了兩種經(jīng)典的做法來解決一對多的關(guān)系。
1.簡單方法
用稅來舉例子,如果稅的類型數(shù)是固定的,例如一個商品最多6種稅。就把這六種稅在fact table中放置6個外鍵,指向稅的dimension table。其實(shí)如果是column database,加屬性應(yīng)是很快的,所以即使稅的種類不定,應(yīng)該也可以處理。這種方法的問題很明顯,就是導(dǎo)致fact table的屬性過多。
2. bridge方法
做一個中間表,即bridge表,只有兩個屬性:groupid和taxid, 一個groupid對應(yīng)fact table中的一個item, 一個 taxid對應(yīng)一個group中一種稅。taxid對應(yīng)到tax dimension table的表中的一行。如果需要加稅的種類,直接在 tax dimension table里加就可以了。這樣就可以應(yīng)用到tax 種類數(shù)量不清楚的情況。
但bridge方法在join fact table和 tax dimension table時可能會出多次計(jì)算的錯誤。
現(xiàn)實(shí)中的情況和書本中總是有區(qū)別的,早上和老板討論,對于海量數(shù)據(jù)而言,bridge table可能非常大,使得join 性能很低,所以bridge對于海量數(shù)據(jù)而言可用性不大。
對于實(shí)際應(yīng)用中raw data 轉(zhuǎn)化為數(shù)據(jù)倉庫中的Star Schema,可能遇到很多書本中沒有的問題。其實(shí)Peter提出的flatten table方法可以最直觀,最完整,最方便的展現(xiàn)數(shù)據(jù)的信息。但是對數(shù)據(jù)庫的NULL值優(yōu)化處理要求很高。一著是對NULL的存儲壓縮,二者是對數(shù)據(jù)的索引優(yōu)化時對NULL的處理,三者是查詢性能。
而當(dāng)面對很多一對N的多層關(guān)系時,N是否是定值或者是有最大值尤其重要,在行式數(shù)據(jù)庫中,只有N有限制或?yàn)槎ㄖ挡拍苁褂蒙鲜龊唵畏椒ǎ鴮τ赽ridge,性能和查詢的正確性又是問題。這是一個取舍的難題。
關(guān)于Star Schema設(shè)計(jì)思路與總結(jié)就介紹到這里了,希望本次的介紹能夠?qū)δ兴斋@!
【編輯推薦】
- Oracle 10g正則表達(dá)式REGEXP_LIKE簡介
- Oracle 10g監(jiān)聽listener不能啟動的解決方案總結(jié)
- Oracle 10g Shrink Table和Shrink Space使用詳解
- Oracle 10g利用utlsampl.sql創(chuàng)建scott用戶及樣本數(shù)據(jù)
- Oracle 10g透明網(wǎng)關(guān)訪問SQL Server 2000之配置監(jiān)聽


2014-06-11 10:29:03




