• 沒有找到結果。

UML 類別圖轉換方式

在文檔中 中 華 大 學 (頁 31-35)

第二章 文獻探討

2.4 物件導向式分析轉換關聯式資料庫之相關研究

2.4.2 UML 類別圖轉換方式

在這樣一個前提之下,首先要面對的就是在資料庫當中,如何去進行資料的 對映問題。Keller 把從概觀上的資料對映,到細部有關資料庫效能調校所需要注 意的工作,都整理成一個以樣式語言來描述的架構[Wolf98]。並且在這個架構當中 是把所有有關物件導向與關聯式資料庫的資料在對映時,所要注意的議題。

架構方面提出在對一個系統要設計對映的工作時,需要有哪些的部分去進 行:物件導向的資料維護方面提出一些在把物件的屬性及關聯,用何種方式存放 到關聯式的;關聯式資料庫方面提出如何讓資料庫系統可以提供較好的服務效 能;建立存取層方面討論在建立存取層時,要使用何種方式來將物件放入資料庫 當中,以及在物件導向的發展過程中,何時去建立一個轉換的機制較佳。

其中在架構方面提到的兩層式處理架構(Two Layer Persistence Subsystem) [Cold97],就是把物件導向式的資料部分,以及關聯式資料庫運作的部分,分開來 進行處理。

這種分層式的做法,好處在於它可以很方便的進行管理,尤其是在多種不同 關聯式資料庫的環境下。當新增加一個不同於現有系統的資料庫,系統人員只需 要針對新的資料庫去進行設定,而不會去變更到舊有的系統,這樣可以有效的減 少在新增資料庫時對舊有系統的影響。

在繼承架構對映方面,目前最常見的繼承架構對映模式有 3 種,為水平式 (horizontal mapping)、垂直式(vertical mapping)跟過濾式(filtered mapping) [Arth93,

Dan92,Sun92],以圖 2.4 為簡單的繼承關係類圖,用以說明三種對應方式。

圖 2.4 繼承關係類別圖

圖 2.4 是一個簡單的繼承架構,包含了三個簡單的類別,雇員類別表示是公 司的員工,記錄姓名、電話、地址等等的基本資料;按件計酬類別表示記錄公司 當中按件計酬的員工,記錄有關案件的價格與工作數量,以方便計算薪資;而月 薪制類別則是表示公司當中按月付薪水的一般員工,其中記錄月薪資料及其服務 的部門資料。其中雇員這個類別是按件計酬與月薪制之父類別,也就是說,按件

計酬與月薪制兩個類別繼承了雇員這個類別當中的屬性,及其相關的操作。

當以垂直式的方法進行繼承關係轉換時,會先將所有的類別加入一個物件辨 別碼(OID)的欄位,並且在所有子類別當中加入一個記錄父類別之物件辨別碼欄 位。再透過表單的加入(join)的方式,來取得所需要的資料。轉換結果如表 2.3 所 示。簡言之,當應用程式需要建立月薪制員工之資料時,須先在雇員的資料表中 建立一個雇員資料,再到月薪制的資料表中,將剛剛建立之雇員的物件辨別碼填 入,以完成繼承關係的記錄。當應用程式需要去查詢時,則需要透過關聯式資料 庫的加入,讓月薪制的物件資料可以完整的呈現。

表 2.3 垂直式轉換資料表範例 雇員 表格

物件辨別碼 AutoNumber

姓名 String

電話 String

住址 String

月薪制 表格

物件辨別碼 AutoNumber

雇員之物件辨別碼 Long

基本月薪 Int

服務部門 String

按件計酬 表格

物件辨別碼 AutoNumber

雇員之物件辨別碼 Long

每件報酬 Int

工作件數 Int

水平式的轉換方法將不會有產生父類別的表格,而是把父類別中的所有屬性 下移至子類別當中,如表 2.4 所表示。這個方式會使得繼承關係在表格當中較為 不容易顯現,但是卻可以減少關聯式資料庫多花在加入動作上的效率。當應用程 式需要尋找月薪制員工資料時,僅僅需要去月薪制員工的資料表中去尋找,而不

需要多做額外的加入動作,以增加應用程式執行的效率。

表 2.4 水平式轉換資料表範例 月薪制 表格

物件辨別碼 AutoNumber

姓名 String

電話 String

住址 String

基本月薪 Int

服務部門 String

按件計酬 表格

物件辨別碼 AutoNumber

姓名 String

電話 String

住址 String

每件報酬 Int

工作件數 Int

過濾式的轉換方法會將所有的物件類別,內部所擁有的所有屬性皆移至最上 層的父類別中,在產生資料表的過程中只會有一個資料表產生。並且需要額外多 加一個欄位用來分別該筆記錄是屬於哪一個型態的資料物件,如表 2.5 所表示。

當應用程式需要尋找月薪制的資料時,就必須透過記錄物件型態的指標,來找出 它所需的類別物件。這個方法把所有的資料儲存在同一個資料表格當中,也因此 程式開發人員可以很簡單的去尋找物件相關的資料,但是同時卻喪失了物件的繼 承關係,也造成資料庫的表格可能會有存在著過多不需要的欄位,形成儲存空間 上的浪費。

這三種方式都可以達到物件導向的繼承觀念在資料方面於關聯式資料庫上的 應用,但是仍存在一些問題,這些方法都或多或少犧牲了資料的維護性來達成物 件導向的要求,或是犧牲了物件導向的觀念來增加資料庫的維護性,有的方法還 會造成許多欄位的浪費,可能會使得在資料庫運行效率上產生影響。

表 2.5 過濾式轉換資料表範例

雇員 表格

物件辨別碼 AutoNumber

物件型態 Int

姓名 String

電話 String

地址 String

基本月薪 Int

服務部門 String

每件報酬 Int

工作件數 Int

在文檔中 中 華 大 學 (頁 31-35)

相關文件