亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Atlas語言的數(shù)據(jù)庫模型轉(zhuǎn)換方法的研究

        2013-07-25 02:28:10李亞芬
        計算機工程與設(shè)計 2013年2期
        關(guān)鍵詞:關(guān)聯(lián)數(shù)據(jù)庫模型

        張 博,李亞芬,王 普

        (北京工業(yè)大學電子信息與控制工程學院,北京100124)

        0 引言

        模型驅(qū)動架構(gòu) (model driven architecture,MDA)[1]是由對象管理組織 (object management group,OMG)提出的一個軟件開發(fā)過程和方法,它定義了平臺無關(guān)模型 (platform independent model,PIM)和平臺相關(guān)模型 (platform specific model,簡稱PSM),其核心思想是以模型作為整個軟件開發(fā)過程的中心,根據(jù)不同的開發(fā)階段,使用不同抽象層次的模型對系統(tǒng)進行分析、提煉和獲取相關(guān)的信息,如圖1所示。

        MDA的思想是將系統(tǒng)中的元素都看作一個模型或者一個模型元素,并且它們可以依照相關(guān)規(guī)范進行組合,在更高的層次上實現(xiàn)軟件的復用。這種開發(fā)模式的優(yōu)勢主要體現(xiàn)在,模型貫穿于整個軟件開發(fā)過程中,需求變更首先會體現(xiàn)在模型的變化上,而代碼也是由模型自動生成的,所以這種開發(fā)模式不但可以提高軟件開發(fā)效率,還可以將模型作為后期維護與系統(tǒng)再開發(fā)的可靠依據(jù)??梢奙DA在一定程度上解決了傳統(tǒng)軟件開發(fā)所面臨的種種問題,旨在降低系統(tǒng)中業(yè)務與技術(shù)的耦合,提高了系統(tǒng)的可移植性和可維護性。

        圖1 MDA設(shè)計模式

        在設(shè)計一個Web系統(tǒng)時,數(shù)據(jù)庫的建設(shè)是一個重要部分。傳統(tǒng)的數(shù)據(jù)庫的設(shè)計方法是直接建立ER模型 (entityrelation模型,ER模型)來描述系統(tǒng),如采用PowerDesigner等工具。由此方法可以靈活地創(chuàng)建健壯的數(shù)據(jù)模型,但是它沒有采用面向?qū)ο蟮募夹g(shù)對系統(tǒng)進行描述,忽略了軟件系統(tǒng)的業(yè)務因素和需求對數(shù)據(jù)的影響,直接根據(jù)需求分析得到數(shù)據(jù)庫模型,由于跨度比較大,容易造成設(shè)計的數(shù)據(jù)庫與客戶所需要的模型有較大的出入[2]。而面向?qū)ο蟮慕7椒梢詮男枨蠓治龅慕嵌瘸霭l(fā),循序漸進地構(gòu)造模型,即從需求分析得到UML模型,再經(jīng)過轉(zhuǎn)換得到數(shù)據(jù)庫模型,這種建模方法不易產(chǎn)生設(shè)計人員與客戶之間對數(shù)據(jù)庫理解的差異。

        本文針對以上問題,提出一種基于元模型的UML模型到數(shù)據(jù)庫模型的轉(zhuǎn)換方法。采用MDA思想,在建立系統(tǒng)面向?qū)ο蟮腢ML模型的同時,將模型中的關(guān)聯(lián)關(guān)系、約束等信息提取出來進行抽象描述,再通過ATL自動地轉(zhuǎn)換成數(shù)據(jù)庫模型。

        1 基于MDA的模型轉(zhuǎn)換

        1.1 模型轉(zhuǎn)換原理

        模型是MDA的核心。在UML中,可以使用類、屬性、關(guān)聯(lián)、狀態(tài)等元素描述一個完整的軟件系統(tǒng)。模型是系統(tǒng)的抽象,它比實現(xiàn)系統(tǒng)更容易獲取、理解和計算,確定一個將要在PIM到PSM的轉(zhuǎn)換中使用到的元模型是一個艱巨的任務。不同層面的模型間的相互關(guān)系是符合元模型機構(gòu)(meta object facility,MOF)標準的。MOF元對象設(shè)施是OMG組織提出的一個標準,它是自描述的,所有的建模語言 (如UML等)都是MOF的實例。

        1.2 模型轉(zhuǎn)換具體流程

        模型不僅僅是帶標記的導向圖,還包括一些基于元模型的精確描述和附加屬性。從元模型的觀點來看,PIM和PSM都沒有一個唯一的元模型,模型轉(zhuǎn)換就是將一種元模型中所定義的元類轉(zhuǎn)換到另一種元模型定義的元類上。

        本文以Web信息管理系統(tǒng)為例來說明UML模型到關(guān)系數(shù)據(jù)庫模型的轉(zhuǎn)換。在MDA框架下模型轉(zhuǎn)換系統(tǒng)首先建立用UML類圖描述的PIM,由UML的基本元素:類、屬性、屬性類型、關(guān)聯(lián)關(guān)系、繼承關(guān)系等構(gòu)成。之后細化PIM模型的操作,再轉(zhuǎn)化為關(guān)系數(shù)據(jù)庫類型的PSM模型。具體的轉(zhuǎn)換規(guī)則就是將上述的映射規(guī)則定義成可操作的代碼,通過轉(zhuǎn)換引擎調(diào)用這些規(guī)則進行模型的轉(zhuǎn)換。最后將PSM模型輸入到代碼生成器中,用戶就可以得到所需要的數(shù)據(jù)庫操作代碼,具體流程如圖2所示。

        圖2 模型轉(zhuǎn)換系統(tǒng)流程

        1.3 模型轉(zhuǎn)換方法

        當前MDA正處于發(fā)展階段,模型轉(zhuǎn)換方法有很多種。例如:手動轉(zhuǎn)換方法 (人為地對源模型中的元素進行轉(zhuǎn)換,得到目標模型)、基于規(guī)則的模型轉(zhuǎn)換[3]、基于模板的代碼生成技術(shù) (例如AndroMDA)、基于關(guān)系代數(shù)的模型轉(zhuǎn)換(將模型轉(zhuǎn)換表達為一個二元關(guān)系或者一組二元關(guān)系)[4]、基于元模型映射的模型轉(zhuǎn)換 (進行M1層模型轉(zhuǎn)換時,以M2層的模型元素的映射作為轉(zhuǎn)換規(guī)則來執(zhí)行轉(zhuǎn)換)[5]、基于模式的模型轉(zhuǎn)換[6]、以及基于模型編織技術(shù)[7]等。

        本文在研究基于MDA的UML模型到數(shù)據(jù)庫模型的轉(zhuǎn)換中,使用的轉(zhuǎn)換是以元模型為基礎(chǔ)的,采用Atlas轉(zhuǎn)換語言進行轉(zhuǎn)換。

        1.4 Atlas轉(zhuǎn)換框架

        Atlas屬于開源的項目,其轉(zhuǎn)換框架如圖3所示。

        圖3 Atlas轉(zhuǎn)換框架

        圖3 中的每個元素在MDA中都起著重要的作用。MOF是建立元模型的過程中行之有效的元元模型。PIM反映了系統(tǒng)的功能、結(jié)構(gòu)和行為。PSM則更加注重實現(xiàn),是對應于給定平臺的PIM的一個模型描述。源模型和目標模型是符合這些元模型的模型實例。模型轉(zhuǎn)換是通過一個轉(zhuǎn)換引擎執(zhí)行轉(zhuǎn)換規(guī)則來完成的,轉(zhuǎn)換規(guī)則制定如何從源模型生成目標模型[8]。一個完整的Atlas模型轉(zhuǎn)換程序需要4個文件:源元模型a、目標元模型b、源模型、模型轉(zhuǎn)換實例。通過轉(zhuǎn)換生成的模型就是我們得到的目標模型。

        2 基于元模型的模型轉(zhuǎn)換描述

        通過上面的論述,只有在定義了完整的源元模型、目標元模型、模型轉(zhuǎn)換規(guī)則和源模型的基礎(chǔ)上,才能得到目標模型。因此,下面將逐一對上述模型進行分析與設(shè)計,并通過實例進行描述。

        2.1 源元模型的設(shè)計

        依據(jù)元模型自描述的特征,本文用UML類圖來描述UML元模型。模型包括類、數(shù)據(jù)類型、屬性、操作、關(guān)聯(lián)等基本元素[9]。模型中的Class類和DataType類均繼承自抽象類Classifier,其中最主要的類是Class類,它包括一組Attribute類型的屬性,一組Operation類型的操作以及類之間的關(guān)聯(lián)關(guān)系集合。類DataType為原始的建模數(shù)據(jù)類型,如圖4所示。

        圖4 UML元模型

        2.2 源模型的設(shè)計

        上述UML元模型是對系統(tǒng)的抽象描述,提取了系統(tǒng)中的類和關(guān)系。本文將針對北京市重點學科系統(tǒng)進行分析,依照UML元模型,建立其具體的模型描述。該系統(tǒng)中主要包含如部門Depart、部門主管Authority、學科Category、學科主管Director、一級學科One_dpl、二級學科Two_dpl等多個對象,每個對象擁有自己的屬性,對象之間存在一對多,多對多等關(guān)聯(lián)關(guān)系,例如一個部門有一到多個主管,多個部門可以對應多個學科、一級學科包含多個二級學科等等,這種關(guān)聯(lián)關(guān)系用直線描述,在直線兩端的數(shù)字表示數(shù)量關(guān)系。同時,在UML模型的Operation中加入CHECK操作對對象的屬性進行約束,這樣可以限制其取值范圍或格式。源模型的UML模型如圖5所示。

        2.3 目標元模型的設(shè)計

        如圖6所示,本文研究的目標是自動生成數(shù)據(jù)庫模型,因此目標元模型的設(shè)計就是數(shù)據(jù)庫元模型。關(guān)系數(shù)據(jù)庫元模型也是由UML模型中的類進行描述的。在這個模型中的5個主要類別:表,列,鍵,外鍵和SQL數(shù)據(jù)類型。它們對應到數(shù)據(jù)庫中的相應元素。主要的類是Table類,代表數(shù)據(jù)庫的表,它包括一組列Column和對鍵Key的引用,Column通過鍵Key定義數(shù)據(jù)庫的外鍵關(guān)系。列Column具有對數(shù)據(jù)類型SQLDataType的引用,表示列中數(shù)據(jù)所使用的數(shù)據(jù)類型。

        2.4 模型轉(zhuǎn)換的設(shè)計

        2.4.1 總體設(shè)計

        在設(shè)計了上述兩個元模型的基礎(chǔ)上,定義這兩個模型之間的映射關(guān)系,即UML到數(shù)據(jù)庫模型的映射。圖7顯示了從UML元模型到數(shù)據(jù)庫元模型的完整映射。映射通過一組規(guī)則,指定源元模型 (即UML元模型)中的各個元素映射到目標元模型 (即數(shù)據(jù)庫元模型)中各個元素[10]。在圖中,兩個元模型的映射使用圖形符號“○”來表示,UML元模型在左側(cè),映射在中間,數(shù)據(jù)庫元模型在右側(cè)。此圖形符號包含以下內(nèi)容:連接 (源和目標),關(guān)聯(lián)關(guān)系,轉(zhuǎn)換規(guī)則和組成。一個連接表示一個或多個元模型元素之間的轉(zhuǎn)換規(guī)則。轉(zhuǎn)換規(guī)則將元模型通過轉(zhuǎn)換,得到適當?shù)哪繕嗽P椭械脑?。最后,使用Atlas模型轉(zhuǎn)換語言來對上述的轉(zhuǎn)換規(guī)則進行編寫,便得到轉(zhuǎn)換規(guī)則的代碼描述,.atl為文件后綴。如圖7所示。

        圖5 系統(tǒng)源模型

        2.4.2 轉(zhuǎn)換規(guī)則設(shè)計

        基于對應用程序或數(shù)據(jù)庫的需求,模型會不斷的變化,因此很有必要在UML模型和數(shù)據(jù)庫模型之間建立映射規(guī)則,確保當發(fā)生需求變更時,僅需要對源模型進行修改,即可自動體現(xiàn)在目標模型上。

        本文將規(guī)則設(shè)計為兩部分:直接映射規(guī)則和間接映射規(guī)則。直接映射規(guī)則代表的是轉(zhuǎn)換過程中無需進行操作,直接生成對應的模型元素,主要包括4個方面。

        (1)主鍵 (FK):對象標識符映射為數(shù)據(jù)庫主鍵,

        所有的外鍵都設(shè)計為對主鍵的引用。

        (2)數(shù)據(jù)類型 (DataType):UML元模型中的

        DataType代表了在類圖中所定義的屬性的數(shù)據(jù)類型,它映射到數(shù)據(jù)庫元模型中,就轉(zhuǎn)換成數(shù)據(jù)庫中的數(shù)據(jù)類型,即SQLDataType。

        (3)列 (Column):UML模型中的屬性映射為數(shù)據(jù)

        庫中的列,屬性的數(shù)據(jù)類型即數(shù)據(jù)庫中的SQLData-Type。

        (4)約束:UML模型中的Operation操作中定義的

        對屬性的約束,將會映射為數(shù)據(jù)庫中列的約束,CHECK在數(shù)據(jù)庫中可以約束該列設(shè)定值的取值范圍及格式。

        間接映射規(guī)則代表的是無法由UML模型直接生成目標模型元素。需要在對映射元素進行判斷后執(zhí)行規(guī)則,間接映射主要涉及到兩個主要方面:類的映射和關(guān)聯(lián)關(guān)系的映射。

        (1)類的映射:將類映射為關(guān)系數(shù)據(jù)庫中的表時,需要對類之間的繼承關(guān)系進行分析處理。繼承關(guān)系的處理方法取決于在數(shù)據(jù)庫中怎樣組織類中被繼承的屬性。首先,將所有的類都映射為數(shù)據(jù)庫中的表。這種方法為每個超類和子類都創(chuàng)建一張表,這些表共享一個公共的主鍵。如果存在繼承關(guān)系,則將超類的屬性下移,每個子類對應的數(shù)據(jù)庫表中既包含該子類中的屬性,也包含該子類所繼承的屬性。超類不映射為數(shù)據(jù)庫表,這樣就減少了數(shù)據(jù)庫表的數(shù)量,訪問速度有所提升。

        (2)關(guān)聯(lián)關(guān)系的映射:數(shù)據(jù)庫模型中的關(guān)系是通過Key來描述的。Foreign Key是在一張表中出現(xiàn)的一個或多個數(shù)據(jù)屬性,它是另一張Table的Key的一部分,或者是另一張Table的Key。Foreign Key讓一張表中的一行與另一張表中的一行相關(guān)起來。如果要實現(xiàn)一對一或者一對多的關(guān)系,只需要將一張Table包含另一張Table的Key。

        在模型轉(zhuǎn)換的過程中,我們在源模型中定義了一個參數(shù)MultiValue,如果MultiValue=ture,那么表示該表和其他表具有一對多或者多對多的關(guān)系,如果沒有此參數(shù),則表示該表和其他表僅是一對一的關(guān)系,在轉(zhuǎn)換規(guī)則中將分別對這些轉(zhuǎn)換進行定義[11]。

        下面以學科管理Web應用系統(tǒng)中的單位機構(gòu)和學科門類為例來說明關(guān)聯(lián)關(guān)系的映射:

        多對多關(guān)聯(lián)的映射:鑒于數(shù)據(jù)庫的3個范式,多對多關(guān)聯(lián)的實現(xiàn)并不能用兩張表來進行實現(xiàn),因此需要建立一張關(guān)聯(lián)表。關(guān)聯(lián)表是一張獨立的表,它用于在關(guān)系數(shù)據(jù)庫中維護兩張或多張表之間的關(guān)聯(lián)。在關(guān)系數(shù)據(jù)庫中,關(guān)聯(lián)表中包含的屬性是關(guān)系中涉及到的表中的鍵的組合。關(guān)聯(lián)表的名字是它所關(guān)聯(lián)的表的名字的組合,或者是它實現(xiàn)的關(guān)聯(lián)的名字。圖8說明了如何在關(guān)系數(shù)據(jù)庫中實現(xiàn)多對多的關(guān)聯(lián)關(guān)系。

        圖8 多對多關(guān)聯(lián)的映射

        一對多關(guān)聯(lián)的映射映射:如圖9所示,在實現(xiàn)一對多關(guān)聯(lián)時,設(shè)置MultiValue=ture,將外鍵Foreign Key放置在“多”的一方,角色作為外鍵屬性名的一部分。外鍵的空與非空由對1的強制性決定。

        圖9 一對多關(guān)聯(lián)的映射

        3 目標模型的生成

        3.1 轉(zhuǎn)換規(guī)則代碼

        針對圖7列出的映射關(guān)系對照圖,采用Atlas轉(zhuǎn)換語言對其一一進行描述,得到轉(zhuǎn)換規(guī)則代碼。由于篇幅所限,這里給出模型轉(zhuǎn)換的代碼片段:

        module UML2Database;

        create OUT:Database from IN:UML;

        rule Class2Table;

        rule DataTypeAttribute2Column{

        from

        a:UML!Attribute(

        a.type.oclIsKindOf (UML! DataType ) and not a.multiValued

        )

        to

        out:Database!Column(

        name< - a.name,

        type<-a.type

        )}…

        rule Attribute2Column{

        from

        a:Class!Attribute(

        a.type.oclIsKindOf(Class!Class)and not a.multi Valued

        )

        to

        out:Relational!Column(

        name < - a.name+ 'Id',

        type<-thisModule.objectIdType

        )}

        通過執(zhí)行轉(zhuǎn)換規(guī)則,源模型按照相關(guān)映射關(guān)系,得到了目標模型,即數(shù)據(jù)庫模型,它是XMI格式描述的,用UML圖形化表示后,如圖10所示。

        3.2 實驗結(jié)論

        由UML設(shè)計的源模型經(jīng)過ATL轉(zhuǎn)換,得到了數(shù)據(jù)庫目標模型。它們分別用數(shù)據(jù)庫的表,列,主鍵,外鍵來描述整個系統(tǒng),是一個完整的數(shù)據(jù)庫系統(tǒng)。對于源模型中的多重關(guān)系,生成了新的關(guān)聯(lián)關(guān)系表,用名稱_名稱表示,里面包含關(guān)聯(lián)的基本信息。由生成的目標模型可以看出,UML類圖中的每個元素均按照對應的轉(zhuǎn)換規(guī)則進行轉(zhuǎn)換。源模型中存在5個關(guān)聯(lián),因此生成了5個關(guān)聯(lián)關(guān)系表。

        4 結(jié)束語

        U M L對象模型在本質(zhì)上只是一個擴展的實體-關(guān)系(ER)模型,它強調(diào)的是面向?qū)ο蟮挠^點,同時,ER模型現(xiàn)在已被普遍接受,所以在面向?qū)ο蟮脑O(shè)計中,U M L使得軟件和數(shù)據(jù)庫使用相同的模型一起工作,保證了系統(tǒng)的一致性設(shè)計。本文探討了在MDA中使用建立數(shù)據(jù)庫模型的方法,分析了在元模型的基礎(chǔ)上UML模型與關(guān)系數(shù)據(jù)庫模型之間的映射關(guān)系,并使用Atlas轉(zhuǎn)換語言對其進行代碼級的描述。在下一步工作中,應考慮更多模型的復雜性,不斷完善模型間的映射關(guān)系,進一步提高模型轉(zhuǎn)換的精度和完整性,針對更多業(yè)務領(lǐng)域編寫相關(guān)的模型及模型轉(zhuǎn)換實例。

        圖10 目標數(shù)據(jù)庫模型

        [1]Joaquin Miller,Jishnu Mukerji.MDA guide version 1.0.1 [EB/OL ].http://www.omg.org/cgi-bin/doc? omg/03-06-01,2003.

        [2]XIONG Xinfu.Research of relational database modeling based on UML[D].Chengdu:University of Electronic Science and Technology of China,2011(in Chinese).[熊信富.基于UML的關(guān)系數(shù)據(jù)庫建模研究與實現(xiàn)[D].成都:電子科技大學.2011.]

        [3]ZHANG Zheng,HE Keqing.A rule-based model transformation method [J].Application Research of Computers,2005,22(10):16-19(in Chinese).[張征,何克清.一種基于規(guī)則的模型轉(zhuǎn)換方法 [J].計算機應用研究,2005,22(10):16-19.]

        [4]JIANG Lu.MDA-based transformation between UML models[D].Xi’an:Xidian University,2009:1-23(in Chinese).[蔣璐.基于MDA的UML模型轉(zhuǎn)換[D].西安:西安電子科技大學,2009:1-23.]

        [5]Tihomir Calic.Exploration of model driven architecturecapabi-lities via comparative utilization of MDA tools[D].Reno:University of Nevada,2006.

        [6]ZHAO Ping.Research of the model transformation technology in MDA [D].Harbin:Harbin Engineering University,2010:3-17(in Chinese).[趙萍.模型驅(qū)動系統(tǒng)中模型轉(zhuǎn)換技術(shù)的研究[D].哈爾濱:哈爾濱工程大學,2010:3-17.]

        [7]Fabro MDD,Jouault F.Model transformation and weaving in the AMMA platform [C]//Proc of the Generative and Trans.Techniques in Software Engineering,2005:71-77.

        [8]Jos'e Barranquero Tolosa,Oscar Sanju'an-Mart'lnez.Towards the systematic measurement of ATL transformation mo-dels[J].Software– Practice and Experience,2011,41(7):789-815.

        [9]France R B.Model-driven development using UML 2.0:promises and pitfalls[J].Computer,2006,39(2):59-66.

        [10]Jesus M Alemndros,Luis Iribarne.UML modeling of user and database interaction [J].The Computer Journal,2009,52(3):348-367.

        [11]Pontus Bostr,Mats Neovius,Ian Oliver,et al.Formal transformation of platform independent models into platform specific models[C]//Abo Akademi University,Department of Information Technologies Turku Centre for Computer Science,2007.

        猜你喜歡
        關(guān)聯(lián)數(shù)據(jù)庫模型
        一半模型
        “苦”的關(guān)聯(lián)
        當代陜西(2021年17期)2021-11-06 03:21:36
        重要模型『一線三等角』
        重尾非線性自回歸模型自加權(quán)M-估計的漸近分布
        奇趣搭配
        數(shù)據(jù)庫
        財經(jīng)(2017年2期)2017-03-10 14:35:35
        智趣
        讀者(2017年5期)2017-02-15 18:04:18
        3D打印中的模型分割與打包
        數(shù)據(jù)庫
        財經(jīng)(2016年15期)2016-06-03 07:38:02
        數(shù)據(jù)庫
        財經(jīng)(2016年3期)2016-03-07 07:44:46
        国产白色视频在线观看| 精品国产三级a| 久久伊人网久久伊人网| 色播视频在线观看麻豆| 精品国产一区二区三区av性色| 爽爽午夜影视窝窝看片| 国内精品91久久久久| 少妇被粗大的猛进69视频| 丰满少妇被粗大猛烈进人高清| 亚洲国产人在线播放首页| 久久99久久99精品免视看国产成人| 自拍视频在线观看国产| 亚洲一区二区三区影院| 欧美xxxx黑人又粗又长精品| 亚洲AV成人无码天堂| 九九精品国产亚洲av日韩| 日本爽快片100色毛片| 破了亲妺妺的处免费视频国产| 两个人免费视频大全毛片| 亚洲在线精品一区二区三区| 亚洲av无码国产精品永久一区| 熟妇与小伙子matur老熟妇e| 亚洲中文字幕精品一区二区| 日韩av一区二区不卡| 亚洲综合在线一区二区三区| 成人免费xxxxx在线视频| 亚洲视频在线视频在线视频| 国产亚洲视频在线播放| 成人免费看吃奶视频网站| 亚洲av在线播放观看| 日本亚洲视频免费在线看| 无码人妻一区二区三区免费视频| 人体内射精一区二区三区| 好爽要高潮了在线观看| 亚洲一区二区二区视频| 朝鲜女子内射杂交bbw| 亚洲欧美成人在线免费| 成人影院在线观看视频免费| 日韩精品无码中文字幕电影| 久久九九青青国产精品| 日本免费一区二区久久久|