1. <tt id="5hhch"><source id="5hhch"></source></tt>
    1. <xmp id="5hhch"></xmp>

  2. <xmp id="5hhch"><rt id="5hhch"></rt></xmp>

    <rp id="5hhch"></rp>
        <dfn id="5hhch"></dfn>

      1. 對象模型的關系投影研究

        時間:2024-05-28 19:48:39 計算機畢業論文 我要投稿
        • 相關推薦

        對象模型的關系投影研究

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

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

        【對象模型的關系投影研究】相關文章:

        能力結構與經濟合作的關系模型研究10-23

        戰略整合模型研究10-13

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

        超市商業智能模型研究10-05

        對醫療市場博弈模型研究10-03

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

        力學與固定關系的研究10-24

        哲學與法學的關系研究07-23

        準實時公交調度模型的研究08-20

        經濟增長理論與模型的發展研究06-28

        国产高潮无套免费视频_久久九九兔免费精品6_99精品热6080YY久久_国产91久久久久久无码

        1. <tt id="5hhch"><source id="5hhch"></source></tt>
          1. <xmp id="5hhch"></xmp>

        2. <xmp id="5hhch"><rt id="5hhch"></rt></xmp>

          <rp id="5hhch"></rp>
              <dfn id="5hhch"></dfn>