• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      關(guān)于將類圖映射成關(guān)系表的策略研究

      2024-04-14 21:18:56李娟明德廷王興宇
      現(xiàn)代信息科技 2024年1期
      關(guān)鍵詞:類圖關(guān)系數(shù)據(jù)庫(kù)

      李娟 明德廷 王興宇

      DOI:10.19850/j.cnki.2096-4706.2024.01.023

      收稿日期:2023-05-11

      摘? 要:文章研究了類圖映射成關(guān)系數(shù)據(jù)庫(kù)中的表的策略,首先使用Rational Rose 7.0建立類圖數(shù)據(jù)模型,通過(guò)給類設(shè)置不同的可見(jiàn)性,并在類圖中使用類與類之間的各種關(guān)系,然后再探討了類圖映射成關(guān)系表的規(guī)律。實(shí)踐的結(jié)果表明,將類圖映射成關(guān)系數(shù)據(jù)庫(kù)中的表取決于兩個(gè)因素,即類的可見(jiàn)性和類與類之間的關(guān)系,并發(fā)現(xiàn)Rational Rose 7.0軟件沒(méi)有考慮到當(dāng)屬性可見(jiàn)性不同時(shí)映射成表中對(duì)應(yīng)的屬性也應(yīng)該是不同的。

      關(guān)鍵詞:可視化建模;類圖;關(guān)系數(shù)據(jù)庫(kù)

      中圖分類號(hào):TP39? 文獻(xiàn)標(biāo)識(shí)碼:A? 文章編號(hào):2096-4706(2024)01-0113-04

      Research on Strategy for Mapping Class Diagram to Relational Table

      LI Juan, MING Deting, WANG Xingyu

      (College of Computer and Information Engineering, Jiangxi Agricultural University, Nanchang? 330045, China)

      Abstract: In this paper, the strategy of mapping class diagram to table in relational database is studied. Firstly, the data model of class diagram is established by using Rational Rose 7.0. By setting different visibility for classes and using various relationships between classes in class diagram, then the rule of mapping class diagram to relational table is discussed. The result of practice shows that the mapping of class diagram into tables in relational database depends on two factors, namely, the visibility of classes and the relationship between classes. And it is found that Rational Rose 7.0 software does not take into account that when the visibility of the attribute is different, the corresponding attribute in the mapping table should also be different.

      Keywords: Visual Modeling; class diagram; relational database

      0? 引? 言

      在面向?qū)ο蟮姆治雠c設(shè)計(jì)過(guò)程中,通常用類圖描述軟件系統(tǒng)的數(shù)據(jù)模型,它是建立數(shù)據(jù)庫(kù)的基礎(chǔ)。在研究類圖映射成關(guān)系數(shù)據(jù)庫(kù)中的表的策略過(guò)程中,文章使用Rational Rose 7.0這款軟件;它是由IBM公司推出的一款可視化建模工具,提供了Data Modeler數(shù)據(jù)建模功能,可以將類圖映射成關(guān)系數(shù)據(jù)庫(kù)中的表。

      用Rational Rose軟件生成的是.mdl文件,一個(gè)文件對(duì)應(yīng)一個(gè)軟件系統(tǒng),從一個(gè)角度觀察到的系統(tǒng)稱為一個(gè)視圖(View)。一個(gè)視圖由多個(gè)圖(Diagrams)構(gòu)成,它是在某一個(gè)抽象層次上對(duì)系統(tǒng)的抽象表示。Rational Rose從四個(gè)不同的角度來(lái)描述一個(gè)系統(tǒng),它就有四個(gè)視圖,分別是Use Case View(用例視圖)、Logical View(邏輯視圖)、Component View(組件視圖又稱構(gòu)件視圖)、Deployment View(配置視圖)[1]。視圖從軟件成分角度看就是一個(gè)文件夾,它的作用是把描述系統(tǒng)的各個(gè)元素分別放在不同的視圖中。

      Use case View描述系統(tǒng)的外部特性、系統(tǒng)功能等,通過(guò)用例圖表示。Logical View描述系統(tǒng)的設(shè)計(jì)特征,包括結(jié)構(gòu)模型視圖和行為模型視圖,用類圖、對(duì)象圖、交互圖、狀態(tài)圖和活動(dòng)圖表示。Component View描述系統(tǒng)的實(shí)現(xiàn)特征,用組件圖(又稱構(gòu)件圖)表示。Deployment View描述系統(tǒng)的物理配置特征,用配置圖表示[2]。

      1? 類圖的知識(shí)

      在類圖中,類用矩形框表示,用橫線將矩形框分割成三欄,從上到下依次表示類名、類的屬性、類的操作。類與類之間的關(guān)系有四種:關(guān)聯(lián)(Association)、泛化(Generalization)、實(shí)現(xiàn)(Realize)、依賴(Dependency)[1]。

      關(guān)聯(lián)描述了類的結(jié)構(gòu)之間的關(guān)系,一個(gè)類可以訪問(wèn)另一個(gè)類的屬性和方法;關(guān)聯(lián)可以是雙向的,也可以是單向的,雙向關(guān)聯(lián)是指兩個(gè)類相互之間可以訪問(wèn)對(duì)方的屬性和方法[3],如老師與學(xué)生,用一根沒(méi)有箭頭的實(shí)線表示;單向關(guān)聯(lián)從一個(gè)類(對(duì)象)可以訪問(wèn)到另一個(gè),反過(guò)來(lái)卻不行,如學(xué)生與課程,被關(guān)聯(lián)的對(duì)象不知道誰(shuí)與自己關(guān)聯(lián),但關(guān)聯(lián)對(duì)象知道自己與誰(shuí)有關(guān)聯(lián)。單向關(guān)聯(lián)用帶箭頭的實(shí)線表示,箭頭指向被關(guān)聯(lián)者。

      聚合和組合都屬于整體和部分的關(guān)系,是一種特殊的關(guān)聯(lián)關(guān)系,在組合關(guān)系中個(gè)體唯一屬于一個(gè)整體,部分和整體具有相同的生命周期。在聚合關(guān)系中個(gè)體可以屬于多個(gè)整體[2]。組合關(guān)系用一端有實(shí)心菱形的實(shí)線表示,其中實(shí)心菱形靠近表示整體的類。聚合關(guān)系用一端有空心菱形的實(shí)線表示,其中空心菱形靠近表示整體的類。

      泛化關(guān)系又稱繼承關(guān)系,表示一般與特殊的關(guān)系,存在于子類與父類之間。用一端有三角箭頭的實(shí)線表示,其中箭頭指向父類。例如,喜鵲是鳥(niǎo)類的一種,既有喜鵲的特性也有鳥(niǎo)的共性。

      實(shí)現(xiàn)關(guān)系將兩種模型元素連接起來(lái),其中一個(gè)模型元素只具有行為的定義,而行為的具體實(shí)現(xiàn)則是由另一個(gè)模型元素給出。如類和接口之間就是實(shí)現(xiàn)關(guān)系。接口可以看成是一種特殊的類,描述了一系列的方法,為一個(gè)類或組件規(guī)定了其必須提供的服務(wù)。接口沒(méi)有屬性,只有聲明的操作方法(對(duì)于方法沒(méi)有實(shí)現(xiàn)部分),而由實(shí)現(xiàn)類具體定義實(shí)現(xiàn)部分[2]。實(shí)現(xiàn)關(guān)系用一端有三角箭頭的虛線表示,箭頭指向接口。

      依賴關(guān)系描述兩個(gè)類之間的使用關(guān)系,一個(gè)類的實(shí)現(xiàn)需要另一個(gè)類的協(xié)助,其中一個(gè)類是獨(dú)立的,另一個(gè)類是非獨(dú)立的,它依賴于獨(dú)立的類。依賴關(guān)系用帶箭頭的虛線表示,箭頭指向被依賴的類[4]。

      2? 將類圖轉(zhuǎn)換成關(guān)系數(shù)據(jù)庫(kù)中的表

      創(chuàng)建類圖并將類圖映射成關(guān)系數(shù)據(jù)庫(kù)中的表操作步驟如下:

      第一步:在Logical View邏輯視圖中創(chuàng)建一個(gè)包(右擊Logical View,選擇New→package),本例中將包取名為class,包其實(shí)就是文件夾。在class包中創(chuàng)建六

      個(gè)類,分別是User(用戶類)、Course(課程類)、Student(學(xué)生類)、StudentList(學(xué)生名冊(cè)類)、Teacher(教師類)、CourseTask(教學(xué)任務(wù)類),這些類必須在一個(gè)包中,否則不能映射成表。右鍵單擊Logical View,在彈出的快捷菜單中選擇New Class Diagram,利用工具欄在工作窗口中創(chuàng)建的類圖如圖1所示。

      圖1? 選課系統(tǒng)的類圖

      在圖1所示的類圖中,User類有兩個(gè)子類Student和Teacher,這兩個(gè)子類(Student和Teacher)與CourseTask類之間有關(guān)聯(lián)關(guān)系,在Student與CourseTask之間的關(guān)聯(lián)關(guān)系中StudentList是關(guān)聯(lián)類,CourseTask類與Course類之間是聚合關(guān)系。

      第二步:設(shè)置每個(gè)類的持久性。打開(kāi)類的specification(規(guī)格說(shuō)明),在Detail頁(yè)選中persisent(持久性)。

      第三步:設(shè)置對(duì)象的標(biāo)識(shí)。比如選擇一個(gè)Course類,按鼠標(biāo)右鍵單擊其屬性CourseID,在菜單項(xiàng)Data Modeler下勾選Part of Object Identity,當(dāng)Course類映射成表時(shí),就會(huì)把屬性CourseID作為其關(guān)鍵屬性。設(shè)置對(duì)象的標(biāo)識(shí)相當(dāng)于設(shè)置了類的關(guān)鍵屬性。

      User類有兩個(gè)屬性UserID和password,如果不設(shè)置User類的對(duì)象標(biāo)識(shí),那么當(dāng)User類的子類Student映射成表的時(shí)候,把User_ID(類名_ID)作為Student表的屬性,這是從其父類User類繼承來(lái)的屬性。如果對(duì)User類的屬性UserID設(shè)置了對(duì)象標(biāo)識(shí),那么從父類User類繼承來(lái)的就是UserID這個(gè)屬性,所以應(yīng)該對(duì)類的關(guān)鍵屬性設(shè)置對(duì)象標(biāo)識(shí)。

      第四步:選擇類包c(diǎn)lass,單擊右鍵在彈出的菜單中選擇Data Modeler→Transform to Data Model…,在彈出的對(duì)話框中,填寫(xiě)要轉(zhuǎn)換的模式名為School,其他信息可不填,按確定鍵后在Logical View中自動(dòng)生成schemas包,School子包就放在schemas包里,展開(kāi)School包可看到每個(gè)類映射成一張關(guān)系表。右擊School包里的表,打開(kāi)specification中的columns頁(yè),可看到每個(gè)類映射成的表中所有的屬性。

      3? 類中屬性的映射策略

      若要將圖1所示的類圖映射成關(guān)系數(shù)據(jù)庫(kù)中的表,就需要分析每個(gè)表都有哪些屬性,為了方便分析,每個(gè)類只取了幾個(gè)主要屬性[5]。

      屬性的映射策略取決于兩個(gè)因素:類的可見(jiàn)性以及類與類之間的關(guān)系??梢?jiàn)性表示一個(gè)操作或?qū)傩允欠衲鼙涣硪粋€(gè)操作所訪問(wèn)。類的可見(jiàn)性有四種:public(公共的)、private(私有的)、protected(受保護(hù)的)、implementation(實(shí)現(xiàn))[6]。公共的屬性和方法對(duì)其他模型元素都是可訪問(wèn)的。受保護(hù)的屬性和方法只對(duì)類本身、它的子類或友元是可看見(jiàn)的,受保護(hù)的屬性和方法不被外部類使用。保護(hù)可見(jiàn)性是默認(rèn)的可見(jiàn)性。私有的屬性和方法只對(duì)類本身和類的友元是可見(jiàn)的。實(shí)現(xiàn)的屬性和方法只在類本身的內(nèi)部是可看見(jiàn)的。實(shí)現(xiàn)可見(jiàn)性最有限制性。

      類與類之間的關(guān)系有關(guān)聯(lián)、泛化、實(shí)現(xiàn)、依賴。這四種關(guān)系的映射策略如下。

      3.1? 關(guān)聯(lián)關(guān)系的映射

      兩個(gè)類如果存在雙向關(guān)聯(lián),一個(gè)類把另一個(gè)類的標(biāo)識(shí)屬性映射成自己的一個(gè)新屬性,聚合和組合關(guān)系映射時(shí)與一般的關(guān)聯(lián)關(guān)系的處理方式相同[7]。比如Student類和CourseTask類之間有雙向關(guān)聯(lián)關(guān)系,于是CourseTask類的標(biāo)識(shí)屬性TaskID映射成為Student類的屬性,與此同時(shí),Student類的標(biāo)識(shí)屬性StudentID映射成為CourseTask類的屬性,如圖2和圖3所示。

      兩個(gè)類如果存在單向關(guān)聯(lián),從一個(gè)類可以訪問(wèn)到另一個(gè),反過(guò)來(lái)卻不行。單向關(guān)聯(lián)中能被訪問(wèn)的類的標(biāo)識(shí)屬性映射成為可以訪問(wèn)它的那個(gè)類的一個(gè)屬性[8]。例如A類與B類存在單向關(guān)聯(lián),A類有屬性i,B類有屬性j;A類可以訪問(wèn)B類的屬性j,B類卻不可以訪問(wèn)A類的屬性。A類映射得到的表中有兩個(gè)屬性,一個(gè)是自身屬性i,另一個(gè)屬性是通過(guò)關(guān)聯(lián)關(guān)系得到B類的屬性j;然而B(niǎo)類卻不能訪問(wèn)A類的屬性,所以B類映射得到的表中只有自身的屬性j。

      3.2? 泛化關(guān)系的映射

      類之間的繼承關(guān)系存在于父類與子類之間,根據(jù)可見(jiàn)性來(lái)實(shí)現(xiàn)子類對(duì)父類的屬性繼承。子類可以繼承和訪問(wèn)父類的公共屬性和受保護(hù)的屬性,但是不能繼承和訪問(wèn)父類的私有屬性和實(shí)現(xiàn)屬性[9]。

      3.3? 實(shí)現(xiàn)關(guān)系的映射

      有實(shí)現(xiàn)關(guān)系的類在映射成表時(shí)不產(chǎn)生任何新屬性。

      3.4? 依賴關(guān)系的映射

      有依賴關(guān)系的類在映射成表時(shí)不產(chǎn)生任何新屬性。

      為了研究可見(jiàn)性的映射問(wèn)題,先把六個(gè)類的所有屬性都設(shè)為private私有的,來(lái)分析映射成表的策略。以Student類為例,發(fā)現(xiàn)它映射成Student表時(shí)有五個(gè)屬性,如圖2所示。按照UML中可見(jiàn)性的規(guī)則,子類Student無(wú)法繼承父類User的私有屬性和方法[10],可是Student表卻包含有其父類的私有屬性UserID。后來(lái)再把這六個(gè)類的部分屬性改為protected,映射得到的表與先前設(shè)為私有屬性映射得到的表進(jìn)行比較,發(fā)現(xiàn)并無(wú)區(qū)別。由此可見(jiàn)Rational Rose 7.0軟件沒(méi)有考慮到屬性可見(jiàn)性的映射問(wèn)題。

      在圖1所示的類圖中,Student類與CourseTask類有關(guān)聯(lián)關(guān)系,于是CourseTask類的標(biāo)識(shí)屬性TaskID映射成為Student表的一個(gè)屬性。Student類的UserID屬性是從父類User繼承來(lái)的,再加上它自身的3個(gè)屬性StudentID、StudentName、ClassName,于是Student表中一共擁有五個(gè)屬性,如圖2所示。

      再看CourseTack類,它與Student類、Teacher類都存在關(guān)聯(lián)關(guān)系,于是StudentID和TeacherID作為CourseTack表的屬性;CourseTack類與Course類之間有聚合關(guān)系,于是Course類的標(biāo)識(shí)屬性CourseID映射成為CourseTack表的一個(gè)屬性,CourseTack表中的UserID屬性是從父類User繼承來(lái)的,再加上它自身的屬性TaskID,于是CourseTack表中一共擁有五個(gè)屬性,如圖3所示。

      StudentList是關(guān)聯(lián)類,映射時(shí)只是把它自身的4個(gè)屬性映射成StudentList表的屬性,如圖4所示。

      綜合考慮可見(jiàn)性和類的關(guān)系的映射規(guī)則,將UserID、StudentID、TeacherID、TaskID、CourseID這些屬性設(shè)成Protected,這樣更符合可見(jiàn)性的映射規(guī)則,如圖5所示。

      4? 結(jié)? 論

      通過(guò)分析類圖轉(zhuǎn)換成數(shù)據(jù)庫(kù)中表的策略,發(fā)現(xiàn)它取決于兩個(gè)因素:類的可見(jiàn)性以及類與類之間的關(guān)系。與此同時(shí)還發(fā)現(xiàn)Rational Rose 7.0軟件在映射過(guò)程中當(dāng)屬性可見(jiàn)性不同時(shí)沒(méi)有區(qū)別對(duì)待。

      參考文獻(xiàn):

      [1] 楊弘平.UML2基礎(chǔ)、建模與設(shè)計(jì)教程 [M].北京:清華大學(xué)出版社,2015.

      [2] 刁成嘉.UML系統(tǒng)建模與分析設(shè)計(jì) [M].北京:機(jī)械工業(yè)出版社,2007.

      [3] 張晞.UML類圖與關(guān)系數(shù)據(jù)庫(kù)之間的映射策略 [J].廣東自動(dòng)化與信息工程,2001(1):32-35.

      [4] 劉超,張莉.可視化面向?qū)ο蠼<夹g(shù):標(biāo)準(zhǔn)建模語(yǔ)言UML教程 [M].北京:北京航空航天大學(xué)出版社,1999.

      [5] 張念春,楊壽保.UML模型向關(guān)系數(shù)據(jù)庫(kù)的映射方法初探 [J].計(jì)算機(jī)工程與應(yīng)用,2002(19):212-214.

      [6] 顧瑩瑩,高建華.從UML類圖到關(guān)系數(shù)據(jù)庫(kù)表的代碼生成方法 [J].計(jì)算機(jī)工程,2005(10):91-93.

      [7] 劉曉建,李戰(zhàn)懷.基于關(guān)系模型的UML類圖一致性檢驗(yàn) [J].計(jì)算機(jī)工程與應(yīng)用,2006(26):13-16+28.

      [8] 寇迎奇.基于形式化UML的關(guān)系數(shù)據(jù)庫(kù)實(shí)現(xiàn)策略 [D].北京:北京化工大學(xué),2007.

      [9] 張晞.UML類圖在關(guān)系數(shù)據(jù)庫(kù)中的實(shí)現(xiàn) [J].計(jì)算機(jī)應(yīng)用研究,2001(12):131-133.

      [10] 張虹,鄭會(huì)頌.UML中的類模式在關(guān)系數(shù)據(jù)庫(kù)中的映射及其實(shí)現(xiàn) [J].南京郵電學(xué)院學(xué)報(bào),2005(3):73-78.

      作者簡(jiǎn)介:李娟(1971—),女,漢族,湖北鄂州人,副教授,碩士,研究方向:軟件工程與建模;通訊作者:明德廷(1972—),男,漢族,湖北嘉魚(yú)人,副教授,碩士,研究方向:計(jì)算機(jī)軟件與應(yīng)用。

      猜你喜歡
      類圖關(guān)系數(shù)據(jù)庫(kù)
      關(guān)系數(shù)據(jù)庫(kù)在高爐數(shù)據(jù)采集系統(tǒng)中的應(yīng)用
      山東冶金(2022年2期)2022-08-08 01:51:30
      基于語(yǔ)義和結(jié)構(gòu)的UML類圖的檢索
      關(guān)系數(shù)據(jù)庫(kù)技術(shù)在計(jì)算機(jī)網(wǎng)絡(luò)設(shè)計(jì)中的應(yīng)用
      計(jì)算機(jī)網(wǎng)絡(luò)設(shè)計(jì)中關(guān)系數(shù)據(jù)庫(kù)技術(shù)的應(yīng)用
      UML類圖元模型基于描述邏輯的表示及驗(yàn)證
      基于索引結(jié)構(gòu)的關(guān)系數(shù)據(jù)庫(kù)關(guān)鍵詞檢索
      UML構(gòu)造型類圖到XMI的映射方法研究
      UML類圖的一種表示方法
      關(guān)于0類圖的一個(gè)注記
      一種基于數(shù)據(jù)圖劃分的關(guān)系數(shù)據(jù)庫(kù)關(guān)鍵詞檢索方法
      七台河市| 绍兴市| 佛山市| 兰坪| 宾川县| 南汇区| 兴安县| 鹤峰县| 沁源县| SHOW| 天等县| 寿宁县| 石城县| 郯城县| 华安县| 香港| 琼结县| 通道| 三河市| 富川| 梅河口市| 彭泽县| 龙里县| 防城港市| 鲁山县| 晋江市| 福建省| 灵武市| 汉源县| 孙吴县| 新巴尔虎左旗| 通海县| 新蔡县| 通辽市| 古田县| 周口市| 寻乌县| 德安县| 湾仔区| 邢台市| 灵璧县|