八大規(guī)則精通程序空間建模
程序空間建模的八大規(guī)則將向你呈現(xiàn)的是一些自然規(guī)律,那么我們?nèi)绾握莆蘸瓦\(yùn)用好呢?首先我們來(lái)看他們各自的特點(diǎn):
程序空間建模規(guī)則一:向空間結(jié)構(gòu)中加載詳細(xì)原數(shù)據(jù)
空間模型中應(yīng)該加入原數(shù)據(jù)的細(xì)節(jié)以支持不可預(yù)測(cè)的過(guò)濾和商業(yè)用戶查詢時(shí)的分組要求。用戶一般不需要一次看到單個(gè)記錄,但是你不能預(yù)測(cè)他們希望顯示的方式然后顯示出細(xì)節(jié)信息。如果只能獲取摘要數(shù)據(jù),那么你已經(jīng)對(duì)數(shù)據(jù)的使用模式作出了推測(cè),而這些推測(cè)將在永固想深挖細(xì)節(jié)的時(shí)候?qū)е滤麄兣霰?。?dāng)然,原數(shù)據(jù)可以被簡(jiǎn)要的空間模型來(lái)補(bǔ)充,這些模型提供了匯總數(shù)據(jù)中共同查詢的優(yōu)勢(shì),但是商業(yè)用戶不能僅僅依賴于這些簡(jiǎn)要數(shù)據(jù),他們還需要數(shù)據(jù)細(xì)節(jié)來(lái)回答不斷變化的問(wèn)題。
程序空間建模規(guī)則二:機(jī)構(gòu)化空間模型和業(yè)務(wù)流程
業(yè)務(wù)流程是你所在的機(jī)構(gòu)所執(zhí)行的活動(dòng);他們代表了測(cè)量活動(dòng),如采取命令。業(yè)務(wù)流程通常會(huì)捕獲(如何處理SSIS 2008中的變更數(shù)據(jù)捕獲)或生成與每個(gè)事件相關(guān)的獨(dú)特?cái)?shù)據(jù)。每個(gè)業(yè)務(wù)流程都由一個(gè)單獨(dú)的原事實(shí)表格代表。除了單一處理事實(shí)表格,合并的事實(shí)表格有時(shí)候也會(huì)從多流程到某一事實(shí)表格的過(guò)程中產(chǎn)生。同樣,合并的事實(shí)表格是對(duì)詳細(xì)單一進(jìn)程事實(shí)表格的補(bǔ)充,而不是要取代他們。
程序空間建模規(guī)則三:確保每個(gè)事實(shí)表格都具備相關(guān)數(shù)據(jù)維度表
規(guī)則二中介紹的測(cè)量事件通常擁有一個(gè)與其相關(guān)的變量日期標(biāo)記。每個(gè)事實(shí)表格都至少應(yīng)該具備一個(gè)與日期維度表相關(guān)的外關(guān)鍵字(三個(gè)關(guān)鍵字實(shí)現(xiàn)JAVA類的隱藏),其粒度是單獨(dú)的一天,具有日歷屬性和測(cè)量事件日期的非標(biāo)準(zhǔn)特性,如財(cái)政月和企業(yè)假日指示等。有時(shí)候多個(gè)日期外關(guān)鍵字會(huì)在事實(shí)表中有所表現(xiàn)。
程序空間建模規(guī)則四:解決事實(shí)表中多對(duì)多的關(guān)系
由于事實(shí)表保存了業(yè)務(wù)進(jìn)程活動(dòng)的結(jié)果,那么其外關(guān)鍵字之間就固然會(huì)存在多對(duì)多的關(guān)系,如多個(gè)產(chǎn)品在若干日的時(shí)間里在多個(gè)商店出售。這些外關(guān)鍵字的域不應(yīng)該為空值。有時(shí)候維度可以為單個(gè)測(cè)量事件獲取多個(gè)值,如與衛(wèi)生保健相關(guān)的多項(xiàng)診斷或是銀行賬號(hào)的多個(gè)用戶。在這些舉例中,要在事實(shí)表中直接解決有多值層面是不合理的,因?yàn)檫@樣會(huì)違背測(cè)量事件的自然粒度。因此,我們要使用多對(duì)多,將雙鍵橋表和事實(shí)表結(jié)合使用。
程序空間建模規(guī)則五:解決維度表中多對(duì)一的關(guān)系
屬性之間層次化,固定深度的多對(duì)一關(guān)系通常是非正規(guī)化的維度表。如果你已經(jīng)花了大量時(shí)間用于設(shè)計(jì)交易處理系統(tǒng)的實(shí)體關(guān)系模型,你就需要抵制本能的傾向,然后將多對(duì)一的關(guān)系轉(zhuǎn)為更小的層級(jí),層級(jí)非規(guī)格化是空間建模中的一個(gè)名詞。
在單個(gè)維度表中存在多對(duì)一關(guān)系是常見(jiàn)現(xiàn)象。一對(duì)一的關(guān)系,如與某產(chǎn)品代碼相關(guān)的產(chǎn)品描述,也可以在維度表中進(jìn)行處理。偶爾,多對(duì)一關(guān)系會(huì)在事實(shí)表中解決,如當(dāng)詳細(xì)維度表中有上百萬(wàn)的行數(shù)時(shí),由此而產(chǎn)生的屬性會(huì)頻繁發(fā)生改變。但是,使用事實(shí)表來(lái)解決多對(duì)一的關(guān)系應(yīng)該有節(jié)制的使用。
程序空間建模規(guī)則六:在維度表中保存報(bào)告標(biāo)簽并過(guò)濾域值
代碼,更重要的是用于標(biāo)記和查詢過(guò)濾的相關(guān)解碼和描述符應(yīng)該在維度表中被捕捉到。要避免在事實(shí)表中保存隱蔽代碼域或冗繁的描述域,同樣,不要只是在維度表中保存代碼并假設(shè)用戶不需要描述型解碼或這些解碼應(yīng)該在BI應(yīng)用中得到處理。如果是一個(gè) 行/列 標(biāo)簽或下拉菜單過(guò)濾器,那么它應(yīng)該作為維度屬性來(lái)處理。
雖然,我們?cè)谝?guī)則五中已經(jīng)講過(guò)事實(shí)表的外關(guān)鍵字不應(yīng)該為空值,但是我們也建議大家可以用“NA”(not applicable)或另一默認(rèn)值來(lái)替代“Null”以避免在維度表的屬性域中出現(xiàn)空值。
程序空間建模規(guī)則七:弄清楚維度表使用的是代理鍵
按順序分配的替代鍵帶來(lái)了一系列的好處,包括更小的鍵,這意味著更小的事實(shí)表,更小的指示以及改進(jìn)的性能。如果 你正追蹤隨著每個(gè)配置文件的更改而變化的維度屬性,那么你肯定需要代理鍵。即便你的商業(yè)用戶沒(méi)有在最初發(fā)現(xiàn)追蹤屬性變更的價(jià)值,代理鍵的使用會(huì)使下游策略的改變更寬松。代理鍵還可以讓你把多個(gè)操作鍵映射到公用參數(shù)文件中,再加上從意料之外的操作中進(jìn)行緩沖等。
程序空間建模規(guī)則八:創(chuàng)建認(rèn)可層級(jí)以便在企業(yè)中整合數(shù)據(jù)
認(rèn)可層級(jí)(也稱為通用,標(biāo)準(zhǔn)或參照層級(jí))對(duì)于企業(yè)數(shù)據(jù)庫(kù)很有必要。只需在ETL系統(tǒng)中管理一次,就可以在多個(gè)事實(shí)表中重復(fù)使用。認(rèn)可層級(jí)在維度模型方面與描述型屬性一致,可以支持多個(gè)業(yè)務(wù)流程中的數(shù)據(jù)整合。企業(yè)數(shù)據(jù)庫(kù)總線矩陣(EDWBM)是代表了該企業(yè)核心業(yè)務(wù)路程和相關(guān)維度的關(guān)鍵架構(gòu)藍(lán)圖。重復(fù)使用認(rèn)可層級(jí)最終可以消除冗繁的設(shè)計(jì)和開(kāi)發(fā)過(guò)程,從而縮短產(chǎn)品上市時(shí)間。但是認(rèn)可層級(jí)要求在數(shù)據(jù)管理和治理上給予承諾和投資。
程序空間建模的八大規(guī)則向你介紹完了,是不是對(duì)程序空間建模有更深入的理解呢?趕緊動(dòng)手實(shí)踐吧。
【編輯推薦】