激情欧美日韩一区二区,浪货撅高贱屁股求主人调教视频,精品无码成人片一区二区98,国产高清av在线播放,色翁荡息又大又硬又粗视频

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

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

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

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

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

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

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

戰略整合模型研究10-13

剩余收益模型與傳統DCF模型的比較研究07-07

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

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

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

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

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

準實(shí)時(shí)公交調度模型的研究08-20

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

激情欧美日韩一区二区,浪货撅高贱屁股求主人调教视频,精品无码成人片一区二区98,国产高清av在线播放,色翁荡息又大又硬又粗视频