• 沒有找到結果。

類別圖轉換實例

在文檔中 中 華 大 學 (頁 45-50)

第三章 物件轉換關聯式資料庫之研究架構

3.4 類別圖轉換實例

接下來處理物件的繼承關係,當物件具有繼承的關係時,相關繼承的特性必 須要被記錄下來,並且預留相關的欄位資料,以供給關聯式資料庫日後在進行資 料儲存時使用,當繼承架構的處理完成之後,再繼續針對物件的關係進行相關的 處理。

物件的關係當中,跟關聯式資料庫的實體關係圖(ERD)有些相似的部份,不過 仍需要另外去進行處理。在流程當中會先去檢查物件是否存在著多對多的關係。

當物件存在多對多關係時,必須要多產生一個資料表格去記錄兩個物件之間的物 件辨別碼,也就是每一筆記錄都存在著一對的物件辨別碼。

一對多的關係也需要額外的資料表格在關聯式資料庫中儲存,利用新增一個 兩個欄位的資料表,記錄物件辨別碼,這個動作與多對多的關係儲存有著類似的 作用,都需要在額外記錄成對的物件辨別碼。這部份的工作,在本架構中會先在 XML 文件中,先將資料表格之欄位定義等等進行處理。

物件一對一關係在關聯式資料庫的記錄就比較簡單了,需要在物件當中新增 一個欄位記錄另外一個物件之物件辨別碼即可。在關聯式資料庫可以透過外來鍵 的方式來達到。最後再把已經處理好關聯維護之 XML 文件,透過文字轉換的方式 把 XML 的標籤與內容,轉換成關聯式資料庫之定義碼。

圖 3.5 類別圖實例

以 Rational Rose 所繪製的類別圖為例,本架構在輸入到類別圖時,便會把類 別圖轉換成為 XML 的記錄方式。這部分的轉換並不會處理其他物件的繼承或關 係,僅是把圖像化的類別圖轉換成為 XML 的描述方式。經過轉換之後的月薪制類 別的定義如圖 3.6。

<xml version=”1.0”>

<class_digram>

<class>

<class_name>月薪制</class_name>

<inheritance>雇員</inheritance>

<attribute>

<attribute_name>基本月薪</attribute_name>

<attribute_type>Int</attribute_type>

</attribute>

<attribute>

<attribute_name>服務部門</attribute_name>

<attribute_type>String</attribute_type>

</attribute>

<method>

<method_name>調整月薪</method_name>

</method>

</class>

圖 3.6 月薪制類別之原始 XML 定義

接著把這份 XML 的文件透過架構中的資料庫轉換模組來進行關聯式資料庫 欄位的定義。首先會為物件加入物件識別碼的欄位,以供資料庫儲存物件識別碼 使用。

接著尋找此類別是否有與其他物件有繼承或關係,以月薪制為例,此物件繼 承於雇員,所以本架構會把雇員內的屬性加入其中,使得繼承之屬性等資料欄位 可以順利的記錄。另外,會在系統的資料庫中,記錄該繼承架構的關係。經轉換 處理過的月薪制 XML 文件大致如圖 3.7:

<xml version=”1.0”>

<class_digram>

<class>

<class_name>月薪制</class_name>

<attribute>

<attribute_name>OID</attribute_name>

<attribute_type>String</attribute_type>

</attribute>

<attribute>

<attribute_name>姓名</attribute_name>

<attribute_type>String</attribute_type>

</attribute>

<attribute>

<attribute_name>電話</attribute_name>

<attribute_type>String</attribute_type>

</attribute>

<attribute>

<attribute_name>基本月薪</attribute_name>

<attribute_type>Int</attribute_type>

</attribute>

<attribute>

<attribute_name>服務部門</attribute_name>

<attribute_type>String</attribute_type>

</attribute>

<method>

<method_name>調整月薪<method_name>

</method>

圖 3.7 轉換後月薪制之 XML 定義

把物件的物件辨別碼、繼承與關係轉換完畢之後,系統利用 XML 轉換資料庫 定義模組,將 XML 文件的定義,轉換成為 SQL 的定義碼(SQL Schema),如圖 3.8 所示:

CREATE TABLE 月薪制 ( OID VARCHAR(255) NOT NULL, 姓名 VARCHAR (255),

電話 VARCHAR (255), 基本月薪 INTEGER (255), 部門 VARCHAR(255) ,

圖 3.8 月薪制資料庫定義碼

除了利用 XML 定義檔將關聯式資料庫的定義碼產生之外,將該物件在關聯式 資料庫中的表格定義也會寫入到該份 XML 的檔案當中。結果如圖 3.9 所示:

<xml version=”1.0”>

<class_digram>

<class>

<class_name>月薪制</class_name>

<attribute>

<attribute_name>OID</attribute_name>

<attribute_type>String</attribute_type>

<DB_define>

<table_name>月薪制</table_name>

<col>OID</col>

<type>VARCHAR</type>

<limit>255</limit>

</DB_define>

</attribute>

<attribute>

<attribute_name>姓名</attribute_name>

<attribute_type>String</attribute_type>

<DB_define>

<table_name>月薪制</table_name>

<col>姓名</col>

<type>VARCHAR</type>

<limit>255</limit>

</DB_define>

</attribute>

<attribute>

<attribute_name>電話</attribute_name>

<attribute_type>String</attribute_type>

<DB_define>

<table_name>月薪制</table_name>

<col>電話</col>

<type>VARCHAR</type>

<limit>255</limit>

</DB_define>

</attribute>

<attribute>

<attribute_name>基本月薪</attribute_name>

<attribute_type>Int</attribute_type>

<DB_define>

圖 3.9 月薪制類別包含資料庫定義(部分)

透過這樣的方式,本架構提供了一個可以自動產生資料庫定義的方法,也可 以透過資料庫自動產生去減少人為設計上的錯誤;並且可以自動產生資料庫與物 件彼此之間的資料索引,讓開發人員可以很快速知道物件的詳細資料是存放在哪 一個表格與欄位當中。

在下一章節中,本架構將更進一步的提出一個讓程式開發人員可以透過物件 導向式的存取模式,去存取資料庫。並且在開發人員不需要了解 SQL 語言的前提 之下,讓開發人員也可以去存取在資料庫中的物件屬性。

在文檔中 中 華 大 學 (頁 45-50)

相關文件