• 沒有找到結果。

資料庫定義轉換模組

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

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

3.3 資料庫定義轉換模組

在物件導向設計的屬性與關聯式資料庫對映的過程中,有幾個步驟是我們必 須要額外去處理的,這是因為關聯式資料庫並沒有辦法完全存放物件導向式設計

的部分特色,像是對於物件辨別碼的處理等等,所以在進行資料庫的對映時,必 需針對物件導向的特性去進行處理。這就是資料庫轉換模組最主要的功能,透過 這樣的轉換機制,讓物件導向式的系統設計,可以更有效的轉換至關聯式資料庫 儲存平台上。圖 3.3 介紹資料庫轉換模組內之詳細的內容。

圖 3.3 資料庫轉換架構圖 z OID transfer module

由於物件導向式物件辨別碼在物件導向式中是相當重要的一個特性,它是獨 一無二的數值,用以辨別物件的唯一性。這個特性也是關聯式資料庫所沒有的,

因此必須要針對這個特性進行專屬的處理 Object-relational transfer module

OID transfer module

Inheritance process module

Many to many relationship process module

One to one relationship process module

One to many relationship process module

XML to Database Schema transfer

Inheritance record

Relation record

Data index generator Data index XML

format class diagram

圖 3.3 中的 XML format class diagram 為 XML 轉換模組(參見圖 3.2)所處理之 後的 XML 文件,在此轉換模組中是主要的輸入。物件辨別碼轉換模組會把物件辨 別碼在關聯式資料庫中所需要的記錄欄位產生,以便之後物件導向中去記錄物件 辨別碼。

z Inheritance process module

繼承關係轉換模組會將物件之間的繼承關係忠實的記錄下來,並且把需要新 增的欄位進行處理。例如一個物件具有繼承的關係時,在繼承處理模組中便會先 把繼承之間的類別關係先記錄起來,再將所有父類別的欄位,新增到子類別當中,

如此便可以將繼承的關係轉換,並且不會喪失了繼承關係的維護。

z Object-relational transfer module

物件關係轉換模組會針對物件之間的關係做轉換,在處理物件之間的關係 時,我們必須先去定義物件可能會有的關係,這個部分跟關聯式資料庫的實體關 係圖有點類似,我們可以定義出一對一、多對多、一對多等等的關係,各種不同 的關係會有不同的轉換時需要注意的事項。

„ 一對一關係最為簡單,透過新增欄位與關聯式資料庫中的外來鍵的概念 就可以完成。

„ 一對多的關係,在物件導向關係都是相同的處理方式,需要新增一個表 格去記錄集合之物件彼此的物件辨別碼,並且在一對多的一方加入一個 群組鍵值來達成。

„ 多對多的關係會需要額外的表格記錄物件辨別碼。除此之外,系統仍會 多產生一個記錄類別之間關係的表格,把類別之間關係給記錄下來,以 供系統在產生資料庫連接時處理。

z XML to Database transfer

XML 轉換資料庫定義模組會把經過前幾個模組所處理完畢之 XML 檔案,轉 換成為結構化查詢語言(SQL)的關聯式資料庫定義,讓使用者可以直接透過結構化 查詢語言讓資料庫系統自動將表格建立。

z Data index generator

資料索引產生模組會把類別圖中定義之屬性,與目前資料庫表格欄位的關係 整理成為一份可讀的文件,一來可以幫助系統開發人員在加速開發時的速度,另 外一方面可以使得資料庫管理員在資料有誤時可以方便查詢,並且可供以後接手 管理系統的人員參考。

透過前小節所提出之 XML 轉換模組處理之後的類別圖文件,已經是本系統中 一個標準定義的 XML 文件。接著系統會針對此一文件去進行關聯式資料庫定義的 轉換,在上個章節中已經針對物件導向式資料庫與關聯式資料庫的不同作了比 較,以下會針對轉換的流程進行說明,如圖 3.4 所示。

圖 3.4 資料庫轉換流程圖

當轉換模式接收到 XML 定義之類別圖,系統會先針對物件辨別碼(OID)的部 份進行處理,由於在物件導向式的觀念中,每一個物件都擁有一個獨一無二的辨 別碼,但是在關聯式資料庫中並沒有這樣的概念。因此必須要先針對儲存物件時 必須的物件辨別碼進行處理,以供在關聯式資料庫中儲存之用。

新增物件識別碼(OID)

是否繼承?

將父類別屬性 寫入子類別中

有 無

產生系統表格額外記錄 其關係,並以成對的鍵值 為額外表格之主鍵 有

有一對多關 係?

寫入對應之 OID 並以 系統表格記錄之

有一對一關

係? 對應之欄位以 OID 寫

入,並且設定為外來鍵 無

XML 轉換成 資料庫定義

有多對多關 係?

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

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

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

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

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

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

相關文件