詳解
由用戶或專家在模式級顯式地說明屬性的偏序:通常,分類屬性或維的概念分層涉及一組屬性。用戶或專家在模式級通過說明屬性的偏序或全序,可以很容易地定義概念分層。例如,關係資料庫或數據倉庫的維location可能包含如下屬性組:street, city, province_or_state 和country。可以在模式級說明這些屬性的全序,如street < city < province_or_state < country, 來定義分層結構。
通過顯式數據分組說明分層結構的一部分:這基本上是人工地定義概念分層結構的一部分。在
大型資料庫中,通過顯式的值枚舉定義整個概念分層是不現實的。然而,對於一小部分中間層數據,我們可以很容易地顯式說明分組。例如,在模式級說明了province和country形成一個分層後,用戶可能人工地添加某些中間層。如“{Albert, Sakatchewan, Manitoba}. prairies_Canada”和“{British Columbia, prairies_Canada} . Western_Canada”。
屬性集
不說明偏序
說明屬性集但不說明它們的偏序:用戶可以說明一個屬性集形成概念分層,但並不顯式說明它們的偏序。然後,系統可以嘗試自動地產生屬性的序,構造有意義的概念分層。“沒有數據語義的知識,如何找出任意的分類屬性集的分層序?”考慮下面的事實:由於一個較高層的概念通常包含若干從屬的較低層概念,定義在高概念層的屬性(如country)與定義在較低概念層的屬性(如street)相比,通常包含較少數目的不同值。
含義分層
定屬性集中每個屬性不同值的個數自動地產生概念分層。具有最多不同值的屬性放在分層結構的最低層。一個屬性的不同值個數越少,它在所產生的概念分層結構中所處的層次越高。在許多情況下,這種
啟發式規則都很頂用。在考察了所產生的分層之後,如果必要,局部層次交換或調整可以由用戶或專家來做。
舉例
例一
讓我們考察這種方法的一個例子。
例2-7 根據每個屬性的不同值的個數產生概念分層。假定用戶從AllElectronics資料庫中選擇了關於location的屬性集:street, country, province_or_state和city,但沒有指出這些屬性之間的層次序。
location的概念分層可以自動地產生,如圖2-24所示。首先,根據每個屬性的不同值個數,將屬性按升序排列,其結果如下(其中,每個屬性的不同值數目在括弧中):country(15), province_or_state(365), city(3567), street(674 339)。其次,按照排好的次序,自頂向下產生分層,第一個屬性在最頂層,最後一個屬性在最底層。最後,用戶考察所產生的分層,必要時,修改它以反映屬性之間期望的語義联系。在這個例子中,顯然不需要修改所產生的分層。
只說明部分屬性集:在定義分層時,有時用戶可能不小心,或者對於分層結構中應當包含什麼只有很模糊的想法。結果,用戶可能在分層結構說明中只包含了相關屬性的一小部分。例如,用戶可能沒有包含location所有分層相關的屬性,而只說明了street和city。為了處理這種部分說明的分層結構,重要的是在資料庫模式中嵌入數據語義,使得語義密切相關的屬性能夠捆在一起。用這種辦法,一個屬性的說明可能觸發整個語義密切相關的屬性組“拖進”, 形成一個完整的分層結構。然而必要時,用戶應當可以選擇忽略這一特性。
例二
使用預先定義的語義關係產生概念分層。假定
數據挖掘專家(作為管理者)已將五個屬性number, street, city, province_or_state和country捆綁在一起,因為它們關於location概念語義密切相關。如果用戶在定義location的分層結構時只說明了屬性city,系統可以自動地拖進以上五個語義相關的屬性,形成一個分層結構。用戶可以選擇去掉分層結構中的任何屬性,如
number和
street,讓city作為該分層結構的最低概念層。