国产激情久久久久影院小草_国产91高跟丝袜_99精品视频99_三级真人片在线观看

對(duì)象模型的關(guān)系投影研究

時(shí)間:2024-05-28 19:48:39 計(jì)算機(jī)畢業(yè)論文 我要投稿
  • 相關(guān)推薦

對(duì)象模型的關(guān)系投影研究

摘要  本文在對(duì)象模型與關(guān)系模型區(qū)別的基礎(chǔ)上,介紹了將對(duì)象模型投影成關(guān)系模型的投影原理,并結(jié)合實(shí)例詳細(xì)論述了對(duì)象之間不同引用關(guān)系的不同投影以及繼承實(shí)體的三種不同投影方法。 關(guān)鍵詞  面向?qū)ο?nbsp; 數(shù)據(jù)模型  關(guān)系模型  投影 0 引言
     隨著我國軟件開發(fā)水平的提高,越來越多的軟件開發(fā)自覺地遵循軟件工程開發(fā)方法。在數(shù)據(jù)庫的開發(fā)中采用了很多軟件建;驍(shù)據(jù)建模工具,如Rational Rose、PowerDesigner等。這些建模工具在需求分析、系統(tǒng)分析以及設(shè)計(jì),直至最終物理代碼的生成都提供了強(qiáng)大的功能,帶給數(shù)據(jù)庫開發(fā)人員很大的便利。同時(shí)由于面向?qū)ο蟮姆椒鼙容^直觀地描述現(xiàn)實(shí)系統(tǒng),便于建立的業(yè)務(wù)模型,便于開發(fā)過程中的交流,因此開發(fā)人員使用這些工具進(jìn)行需求分析、系統(tǒng)分析和設(shè)計(jì)的時(shí)候,一般也都建立對(duì)象模型。
建立起來的概念上的對(duì)象模型,其物理實(shí)現(xiàn)可以有兩種,一種是對(duì)象數(shù)據(jù)庫,一種是關(guān)系數(shù)據(jù)庫。由于關(guān)系數(shù)據(jù)庫更加成熟,并且占主導(dǎo)地位,所以大多開發(fā)人員會(huì)選擇用關(guān)系數(shù)據(jù)庫來實(shí)現(xiàn)設(shè)計(jì)出的對(duì)象模型。這樣,在用對(duì)象模型分析與設(shè)計(jì)完成后,開發(fā)人員不得不將對(duì)象模型轉(zhuǎn)換成關(guān)系模型[1];而在此數(shù)據(jù)庫之上的數(shù)據(jù)操作也不得不改為針對(duì)關(guān)系模型,而不是概念層上的對(duì)象模型,這就使得設(shè)計(jì)與實(shí)現(xiàn)形成了一條鴻溝。為了填平這條鴻溝,使數(shù)據(jù)庫上層開發(fā)人員還能夠針對(duì)對(duì)象模型進(jìn)行數(shù)據(jù)操作,就需要開發(fā)一個(gè)轉(zhuǎn)換層,用來屏蔽掉對(duì)象模型與關(guān)系數(shù)據(jù)庫之間的這種轉(zhuǎn)換,該層的實(shí)現(xiàn)就稱為對(duì)象模型的關(guān)系實(shí)現(xiàn)。
     對(duì)象模型的關(guān)系實(shí)現(xiàn)包括兩方面的:一個(gè)是模型上的轉(zhuǎn)換,稱為“模型投影”,即將對(duì)象模型轉(zhuǎn)換成關(guān)系模型;另一個(gè)是數(shù)據(jù)操作接口的轉(zhuǎn)換,即定義一個(gè)接口負(fù)責(zé)把對(duì)對(duì)象模型的操作轉(zhuǎn)換成對(duì)投影生成的關(guān)系模型的操作。本文重點(diǎn)介紹模型的投影方法,通過分析對(duì)象模型與關(guān)系模型的特點(diǎn),提出了一套對(duì)象模型在關(guān)系型數(shù)據(jù)庫上投影的具體方案。 1 投影原理分析
首先,我們比較一下對(duì)象模型和關(guān)系模型的主要概念。
     表1給出了對(duì)象模型與關(guān)系模型基本概念的對(duì)照。從中可以看出對(duì)象模型與關(guān)系模型有較大的區(qū)別,對(duì)象模型許多概念在關(guān)系模型中沒有對(duì)應(yīng)的概念,即使有對(duì)應(yīng)的概念在實(shí)際投影時(shí)并不能簡(jiǎn)單地一一對(duì)應(yīng)[2]。例如,一個(gè)實(shí)體并不能簡(jiǎn)單地投影成一個(gè)關(guān)系表,因?yàn)殛P(guān)系模型中沒有實(shí)體之間的繼承關(guān)系,所以一個(gè)實(shí)體的定義可能被投影成多個(gè)表,也可能沒有關(guān)系表與之對(duì)應(yīng),如抽象實(shí)體。屬性也不能直接對(duì)應(yīng),當(dāng)對(duì)象模型中具有復(fù)雜數(shù)據(jù)類型時(shí),一個(gè)屬性可能被投影成多個(gè)列。
對(duì)象模型中實(shí)體之間的聯(lián)系與關(guān)系模型中表之間的聯(lián)系也有本質(zhì)的區(qū)別。在對(duì)象模型中實(shí)體之間聯(lián)系使用“引用”方式在實(shí)體與實(shí)體之間建立比較緊密的耦合關(guān)系和比較的導(dǎo)航關(guān)系。例如,要指出某人所在單位領(lǐng)導(dǎo)的姓名,可以用person.department.master.name這種簡(jiǎn)潔的方式直接獲得,但在關(guān)系模型中則要通過一組復(fù)雜的表之間的關(guān)聯(lián)查詢(利用外部鍵)才能得到。
對(duì)象模型向關(guān)系模型的投影有三個(gè)關(guān)鍵要素:
(1)      對(duì)象模型的描述規(guī)范
(2)      關(guān)系模型的描述規(guī)范
(3)      對(duì)象模型向關(guān)系模型投影的規(guī)則
我們?cè)诖瞬粡恼Z法上來定義對(duì)象模型,只給出對(duì)象模型的主要概念。在我們的對(duì)象模型中將應(yīng)用以下幾個(gè)概念:(1)實(shí)體、(2)屬性、(3)主標(biāo)識(shí)、(4)對(duì)象引用、(5)實(shí)例、(6)繼承、(7)方法、(8)對(duì)象標(biāo)識(shí)、(9)聚集、(10)類型定義、(11)唯一性規(guī)則、(12)Where規(guī)則。
關(guān)系模型中將應(yīng)用以下幾個(gè)概念:(1)表、(2)列、(3)行、(4)主鍵、(5)外部鍵
為了按對(duì)象進(jìn)行操作,需要建立一個(gè)數(shù)據(jù)字典,也稱為投影字典。投影字典由一組關(guān)系表構(gòu)成,在投影字典中要保存對(duì)象模型的完整描述。
2、基本內(nèi)容的投影
基本的投影包括簡(jiǎn)單的對(duì)象模型向關(guān)系模型的轉(zhuǎn)換。具體有以下幾種:
(1)實(shí)體  一般投影成表。但只有一個(gè)獨(dú)立的實(shí)體,既沒有超類,也沒有子類,才投影成一個(gè)表。具有繼承關(guān)系的實(shí)體投影,將在第4節(jié)中介紹。由于投影規(guī)則選擇不同,當(dāng)一個(gè)實(shí)體投影成多個(gè)表時(shí),不能保證可以用一個(gè)關(guān)系視圖來描述一個(gè)實(shí)體。
(2)屬性  對(duì)具有基本數(shù)據(jù)類型的屬性,投影成列。這需要在對(duì)象模型與關(guān)系模型的各種數(shù)據(jù)類型之間建立對(duì)應(yīng)關(guān)系;緮(shù)據(jù)類型指整型、實(shí)型、字符串、日期、時(shí)間、布爾。如果對(duì)象模型采用枚舉類型需要在關(guān)系模型中對(duì)列進(jìn)行取值范圍限定。其它復(fù)雜數(shù)據(jù)類型如聚集、結(jié)構(gòu)類型則需要采用專門的處理方法。
(3)主標(biāo)識(shí)、對(duì)象標(biāo)識(shí)。對(duì)象標(biāo)識(shí)在對(duì)象模型中并不需要明確地表示成對(duì)象的一個(gè)屬性,采用的方式是在每一個(gè)與實(shí)體對(duì)應(yīng)的關(guān)系表中都增加一個(gè)列,并把該列作為主鍵,數(shù)據(jù)類型為字符串,對(duì)象標(biāo)識(shí)的格式為:實(shí)體名+表中唯一序列號(hào)。之所以把對(duì)象標(biāo)識(shí)作為主鍵,是因?yàn)橐褜?shí)體之間的引用采用以對(duì)象標(biāo)識(shí)作為主鍵/外部鍵來實(shí)現(xiàn)的。這樣原來的主標(biāo)識(shí)就不能投影成主鍵了。在有的關(guān)系數(shù)據(jù)庫中允許使用輔助鍵,如果沒有輔助建則只能對(duì)原來的主標(biāo)識(shí)投影成的列加上唯一性約束規(guī)則。
(4)實(shí)例   實(shí)例不屬于模型投影的內(nèi)容,但與投影的操作有密切關(guān)系。如果一個(gè)實(shí)體投影成多個(gè)表,則一個(gè)實(shí)例將由多個(gè)關(guān)系表的行構(gòu)成。這些行必須具有相同的對(duì)象標(biāo)識(shí)。
(5)聚集  如果聚集的元素類型是基本數(shù)據(jù)類型,可以考慮投影成二進(jìn)制類型。如果元素類型是實(shí)體類型,這實(shí)際上構(gòu)成了該實(shí)體與元素所指向?qū)嶓w之間多對(duì)多的引用關(guān)系,具體可參照第3節(jié)。
(6)類型定義  主要指自定義結(jié)構(gòu)類型,需要將結(jié)構(gòu)的域投影成單個(gè)的列。
(7)唯一性規(guī)則。轉(zhuǎn)換為關(guān)系表的唯一性約束規(guī)則,當(dāng)唯一性規(guī)則中包括的屬性投影成多列時(shí),注意要將多個(gè)列均包括在關(guān)系表的唯一性約束定義中。
(8)Where規(guī)則  轉(zhuǎn)換成關(guān)系表的條件約束規(guī)則。
(9)名字轉(zhuǎn)換規(guī)則  實(shí)體名轉(zhuǎn)換成表名,屬性名轉(zhuǎn)換為列名,數(shù)據(jù)類型的域展開為列時(shí),需要有一套名字轉(zhuǎn)換規(guī)則。
3、對(duì)象之間引用關(guān)系的投影[3]
如果從純粹的建模技術(shù)角度來看,對(duì)象之間的關(guān)系有以下幾種:
      一對(duì)多關(guān)系
      多對(duì)多關(guān)系
      一對(duì)一關(guān)系
不管是哪一種關(guān)系在概念模型中都兩種情況,一種是依賴的,一種是獨(dú)立的。
為了方便敘述,我們定義了一個(gè)簡(jiǎn)單的對(duì)象模型,圖2是該模型的實(shí)體關(guān)系圖(也稱為類圖),圖中的各實(shí)體只列出了主標(biāo)識(shí)中的屬性。圖中分別用不同的符號(hào)給出了繼承關(guān)系、多對(duì)多關(guān)系、依賴的一對(duì)多關(guān)系和獨(dú)立的一對(duì)多關(guān)系。
具體說明如下:實(shí)體Student和Teacher是Person的子類,繼承關(guān)系用一個(gè)三角形表示。一個(gè)系(Department)里有多個(gè)人(學(xué)生或老師),兩個(gè)實(shí)體間用實(shí)線連接表示引用關(guān)系,實(shí)心圓圈表示多的一端。一個(gè)系可以開設(shè)多門課(Course),一門課是依賴于系的,這就是說只知道課程名還不能確定這門課,還需要知道是哪個(gè)系開設(shè)的這門課。同樣是方法課,數(shù)學(xué)系開設(shè)的和計(jì)算機(jī)系開設(shè)的在難度上和內(nèi)容上會(huì)有很大區(qū)別。用箭頭表示依賴。一門課有多個(gè)學(xué)生選修,一個(gè)學(xué)生可以選修多門課程。  

實(shí)體間不同的關(guān)系進(jìn)行投影是不同的。
(1)獨(dú)立的引用關(guān)系進(jìn)行投影,需要在“多”的一邊要產(chǎn)生一個(gè)外部鍵。如果實(shí)體Person投影對(duì)應(yīng)的表是T_Person,則表T_Person中要自動(dòng)增加一個(gè)屬性DptName,作為外部鍵,對(duì)應(yīng)實(shí)體Department投影成的表T_Department的主鍵DptName。如果在繼承關(guān)系中Person要分解到多個(gè)子類表中,則這些子類表中都要生成這個(gè)對(duì)實(shí)體Department引用的外部鍵
(2)依賴的引用關(guān)系進(jìn)行投影,不僅需要在“多”的一邊產(chǎn)生一個(gè)外部鍵,而且還要把該外部鍵做為輔助鍵。例如實(shí)體Course投影成表T_Course時(shí),不僅要生產(chǎn)一個(gè)外部鍵DptName,而且它的輔助鍵由兩個(gè)列組成:DptName和CourseName。注意,根據(jù)第2節(jié)對(duì)象標(biāo)識(shí)的投影規(guī)則,表T_Course的主鍵是對(duì)象標(biāo)識(shí)列。
(3)實(shí)體之間多對(duì)多的關(guān)系進(jìn)行投影,需要新建一個(gè)“交叉表”,該表專門記錄實(shí)體間多對(duì)多的這種聯(lián)系,原來的兩個(gè)實(shí)體表與新建的交叉表之間的關(guān)系是一對(duì)多的關(guān)系,這實(shí)際上把多對(duì)多關(guān)系變成兩個(gè)一對(duì)多關(guān)系。實(shí)體Cource和Student之間的多對(duì)多關(guān)系投影成表T_Course_Student,它有兩個(gè)列一個(gè)是Course_ID,一個(gè)是Student_ID,都是外部鍵,分別用來對(duì)表T_Course或T_Student進(jìn)行引用。
4 繼承關(guān)系的投影
繼承關(guān)系的投影是模型投影中的關(guān)鍵,對(duì)該問題的不同解決方案會(huì)到整個(gè)模型投影的設(shè)計(jì)。一般來講,在關(guān)系數(shù)據(jù)庫中實(shí)現(xiàn)繼承的方法可劃分為三類:
(1)合并法。合并法就是將整個(gè)類層次映射為單個(gè)關(guān)系表,表中保存所有類(基類、子類)的屬性。圖2中實(shí)體Person、Student、Teacher映射成一個(gè)表T_Person。如圖3所示,表中增加了一個(gè)屬性PersonID,由于對(duì)象標(biāo)識(shí)的格式是實(shí)體名+唯一序列值,通過它的前綴可以區(qū)分用一個(gè)實(shí)例屬于哪一個(gè)實(shí)體。 合并法實(shí)現(xiàn)繼承關(guān)系投影的優(yōu)點(diǎn)是實(shí)現(xiàn)簡(jiǎn)單,操作方便,缺點(diǎn)是會(huì)產(chǎn)生大量的數(shù)據(jù)冗余。
(2)分解法  分解法就是將每個(gè)具體子類映射成單個(gè)關(guān)系表,超類的屬性將復(fù)制到各子類中。子類對(duì)應(yīng)的關(guān)系表包括自身的屬性和繼承的屬性,每個(gè)具體的子類包含各自的對(duì)象標(biāo)識(shí)。抽象的基類不參與映射。其中,Person由于是抽象類,未映射成數(shù)據(jù)庫表;而Student、Teacher映射為相應(yīng)的表,它們具有各自的主鍵。如圖4所示。
     分解法的表中包含了具體子類的所有信息,操作實(shí)現(xiàn)簡(jiǎn)單,但超類的修改會(huì)導(dǎo)致相對(duì)應(yīng)的表及其子類所對(duì)應(yīng)表的更改,這會(huì)增加保持?jǐn)?shù)據(jù)的完整性的復(fù)雜性。
(3)單表法  單表法為每一個(gè)類創(chuàng)建數(shù)據(jù)庫表,表中包含特定于該類的屬性和對(duì)象標(biāo)識(shí)。圖5所示,注意personID作為所有表的主鍵,它們之間是is-a的關(guān)系。
單表法與面向?qū)ο蟮母拍罹哂幸恢滦,支持多態(tài),易于修改基類和增加新的類。但數(shù)據(jù)庫中存在大量的關(guān)系表,加上表之間的關(guān)聯(lián)較多,會(huì)降低數(shù)據(jù)訪問效率。
以上三種方法各有優(yōu)缺點(diǎn),沒有一種是絕對(duì)完美的。因此,數(shù)據(jù)庫設(shè)計(jì)人員要根據(jù)模型的具體情況選擇繼承的投影方法。
5      結(jié)束語
本文介紹的對(duì)象模型的關(guān)系投影原理已經(jīng)用于多個(gè)項(xiàng)目的對(duì)象數(shù)據(jù)平臺(tái)的開發(fā)上,簡(jiǎn)潔實(shí)用。由于對(duì)象模型到為止還沒有統(tǒng)一的標(biāo)準(zhǔn),因此對(duì)象模型向關(guān)系模型的投影規(guī)則要根據(jù)實(shí)際模型的定義來制定。在實(shí)際的投影規(guī)則定義中,名字的轉(zhuǎn)換規(guī)則、聚集的處理方式、對(duì)象之間的引用關(guān)系、繼承處理方式可以根據(jù)需要確定下來,也可以設(shè)計(jì)成多種方式并存,建立可控制的投影,這需要設(shè)計(jì)一整套投影規(guī)則元模型。建立一套可描述對(duì)象模型、關(guān)系模型、投影規(guī)則的形式語言規(guī)則和語法規(guī)則在上和上具有重要意義,這也是我們目前正在的重點(diǎn)。

【對(duì)象模型的關(guān)系投影研究】相關(guān)文章:

能力結(jié)構(gòu)與經(jīng)濟(jì)合作的關(guān)系模型研究10-23

戰(zhàn)略整合模型研究10-13

剩余收益模型與傳統(tǒng)DCF模型的比較研究07-07

超市商業(yè)智能模型研究10-05

對(duì)醫(yī)療市場(chǎng)博弈模型研究10-03

基于vc與word、outlook對(duì)象模型的email實(shí)現(xiàn)07-14

力學(xué)與固定關(guān)系的研究10-24

哲學(xué)與法學(xué)的關(guān)系研究07-23

準(zhǔn)實(shí)時(shí)公交調(diào)度模型的研究08-20

經(jīng)濟(jì)增長(zhǎng)理論與模型的發(fā)展研究06-28