監(jiān)理公司管理系統(tǒng) | 工程企業(yè)管理系統(tǒng) | OA系統(tǒng) | ERP系統(tǒng) | 造價咨詢管理系統(tǒng) | 工程設(shè)計管理系統(tǒng) | 簽約案例 | 購買價格 | 在線試用 | 手機APP | 產(chǎn)品資料
X 關(guān)閉

把握數(shù)據(jù)倉庫中的“鍵”

申請免費試用、咨詢電話:400-8352-114

文章來源:泛普軟件

目前,在數(shù)據(jù)倉庫邏輯模型設(shè)計上主要有實體-關(guān)系建模和維度建模兩種方法,其中維度建模,即星型模式設(shè)計在國內(nèi)數(shù)據(jù)倉庫項目工程實踐中應(yīng)用更為廣泛。星型結(jié)構(gòu)模型典型的形式是一個主題由中間的一個大表和圍繞在其周圍的一組小表組成。中間的大表稱為“事實表”,存儲數(shù)值型度量指標和連接到維度表的外鍵;外圍的小表稱為“維度表”,存儲用于描述事物的文本屬性信息及連接到事實表的主鍵。

這一結(jié)構(gòu)體現(xiàn)了兩種關(guān)系,一是維度表與事實表之間的一對多關(guān)系;二是通過事實表體現(xiàn)出的維度表之間相互的多對多關(guān)系。實踐證明,這種簡單而對稱的結(jié)構(gòu)能夠表達各種復(fù)雜的業(yè)務(wù)邏輯,并有助于最終用戶的訪問。

主外鍵關(guān)系是維度建模的重要基礎(chǔ),那么怎樣決定數(shù)據(jù)倉庫中的主鍵呢?至少有三個方面因素必須考慮:第一,主鍵應(yīng)該是穩(wěn)定的;第二,主鍵應(yīng)該能夠標識出到相關(guān)源系統(tǒng)的映射;第三,主鍵實際是一種約束,必須考慮加載和查詢的效率。

維度表中的鍵

維度表一般由主鍵、分類層次和屬性描述組成。對于主鍵的選擇一般存在兩種觀點:一種是采用自然鍵(Natural Key),即操作型系統(tǒng)使用的具有一定內(nèi)置含義的標識符;另一種是采用代理鍵(Surrogate Key),即由裝載程序或者數(shù)據(jù)庫系統(tǒng)所賦予的一個數(shù)值,該數(shù)值按順序分配,沒有內(nèi)置含義但可以作為一行維度信息的惟一標識。

根據(jù)筆者的項目經(jīng)驗,推薦采納第二種觀點,主要原因是代理鍵簡化了事實表與維度表的主外鍵關(guān)系。維度表作為用戶進入事實表的入口,承擔著記錄觀察視角的歷史變化軌跡的任務(wù)。如果以自然鍵、時間標簽,或許還有機構(gòu)代碼聯(lián)合起來也可以在邏輯上惟一標識出一個產(chǎn)品,但如果作為主鍵,那就意味著在事實表中也要加入同樣的外鍵信息,而事實表記錄行數(shù)是巨大的,在多個維度上重復(fù)這樣的做法會使事實表由于列寬過于膨脹而迅速崩潰。

最好的辦法是采用代理鍵,即選擇一個只占用4個字節(jié)就可以處理20億個正整數(shù)的列作為維度表的主鍵,這樣既解決了事實表存儲空間的浪費問題,又維持了自身的獨立和穩(wěn)定。

另一個好處是,代理鍵可以作為數(shù)據(jù)倉庫系統(tǒng)與源系統(tǒng)之間的緩沖。隨著企業(yè)的發(fā)展,生產(chǎn)系統(tǒng)中的產(chǎn)品名稱、產(chǎn)品分類、組織機構(gòu)幾乎不可避免地會發(fā)生調(diào)整,有的時候甚至自然鍵本身也會發(fā)生變化。就像身份證號碼都從15位變到18位一樣,在歷史的長河中一般認為不可能的事其實都有可能發(fā)生。如果采用了代理鍵,這些變化會被屏蔽在維度表內(nèi),需要記錄歷史軌跡的就貼上時間標簽,不需要的就直接更新掉,變化的過程不會對事實表產(chǎn)生任何沖擊。維持業(yè)務(wù)系統(tǒng)的自然鍵與維度表代理鍵的對照關(guān)系的目的也在于此,既保留了業(yè)務(wù)系統(tǒng)到數(shù)據(jù)倉庫系統(tǒng)的映射,又提高了數(shù)據(jù)倉庫系統(tǒng)的抗震性。

事實表中的鍵

事實表中包含度量指標和連接到相關(guān)維度表的一組外鍵,這組外鍵的聯(lián)合惟一標識了一行事實數(shù)據(jù)。然而,事實表在維度建模過程中是如此重要,以致于我們必須進一步認識它。這里的關(guān)鍵是對邏輯主鍵和物理主鍵的認識。

邏輯主鍵是構(gòu)成事實表的所有維度外鍵的聯(lián)合。由于事實表存在多種類型,從粒度上看有原子級和匯總級;從度量的可加性上看有完全可加、半可加和不可加類型。在數(shù)據(jù)倉庫邏輯模型設(shè)計階段,使用邏輯主鍵是妥當?shù)?,這是一個具有很好包容性和概括性的定義。物理主鍵是在具體的項目場景中能夠惟一標識事實表中一行數(shù)據(jù)的列的聯(lián)合。在數(shù)據(jù)倉庫物理模型設(shè)計階段,一般會采用物理主鍵的概念。邏輯主鍵有時是和物理主鍵一致的,但并不總是這樣。

物理模型中保單事實表的物理主鍵已經(jīng)確定,那么是否意味著一定要在事實表上真正建立起聯(lián)合主鍵?這個問題目前在業(yè)界存在著廣泛的爭議。筆者認為應(yīng)該視情況而定,如果事實表很大,每天的增量信息很多,那么這個聯(lián)合主鍵可以不做顯式的聲明,即不在保單事實表上建立主鍵,物理主鍵只用于ETL及數(shù)據(jù)核查過程。

因為,在OLTP系統(tǒng)環(huán)境中,數(shù)據(jù)的完整性通??績煞N方式來保證,一是應(yīng)用程序的邏輯保證,另一個是數(shù)據(jù)庫結(jié)構(gòu)自身的約束機制。這兩種方式相互補充,而數(shù)據(jù)倉庫環(huán)境中的情況則完全不同,數(shù)據(jù)倉庫中數(shù)據(jù)的完整性更依賴于應(yīng)用程序,也就是ETL系統(tǒng)的保證。

首先,ETL系統(tǒng)運行時間雖然很長,但其結(jié)構(gòu)是簡單的,重復(fù)地抓取、清洗、轉(zhuǎn)換、加載動作。與其相比,OLTP系統(tǒng)可能同時在一張表上執(zhí)行大量并行業(yè)務(wù)操作;其次,事實表的惟一入口是維度表,按照維度建模的思路實現(xiàn)ETL程序,只可能產(chǎn)生不準確的維度信息,但不可能在事實表中產(chǎn)生重復(fù)記錄;第三,與OLTP系統(tǒng)相比,數(shù)據(jù)倉庫系統(tǒng)沒有交互式人機錄入界面,不存在“人為”錯誤。

因此,當裝載時間窗是一個必須考慮的問題時,建議從數(shù)據(jù)倉庫環(huán)境中刪除一些不必要的約束,其中包括主鍵約束、外鍵約束和惟一索引約束。這些約束規(guī)則可以在外部得以實施。 (CCW)

發(fā)布:2007-04-22 10:02    編輯:泛普軟件 · xiaona    [打印此頁]    [關(guān)閉]
相關(guān)文章:
南昌OA系統(tǒng)
聯(lián)系方式

成都公司:成都市成華區(qū)建設(shè)南路160號1層9號

重慶公司:重慶市江北區(qū)紅旗河溝華創(chuàng)商務(wù)大廈18樓

咨詢:400-8352-114

加微信,免費獲取試用系統(tǒng)

QQ在線咨詢

泛普南昌OA信息化其他應(yīng)用

南昌OA軟件 南昌OA新聞動態(tài) 南昌OA信息化 南昌OA快博 南昌OA行業(yè)資訊 南昌軟件開發(fā)公司 南昌門禁系統(tǒng) 南昌物業(yè)管理軟件 南昌倉庫管理軟件 南昌餐飲管理軟件 南昌網(wǎng)站建設(shè)公司