国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

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

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

李娟 明德廷 王興宇

DOI:10.19850/j.cnki.2096-4706.2024.01.023

收稿日期:2023-05-11

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

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

中圖分類號:TP39? 文獻標識碼:A? 文章編號: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è)計過程中,通常用類圖描述軟件系統(tǒng)的數(shù)據(jù)模型,它是建立數(shù)據(jù)庫的基礎(chǔ)。在研究類圖映射成關(guān)系數(shù)據(jù)庫中的表的策略過程中,文章使用Rational Rose 7.0這款軟件;它是由IBM公司推出的一款可視化建模工具,提供了Data Modeler數(shù)據(jù)建模功能,可以將類圖映射成關(guān)系數(shù)據(jù)庫中的表。

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

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

1? 類圖的知識

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

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

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

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

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

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

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

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

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

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

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

在圖1所示的類圖中,User類有兩個子類Student和Teacher,這兩個子類(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è)置每個類的持久性。打開類的specification(規(guī)格說明),在Detail頁選中persisent(持久性)。

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

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

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

3? 類中屬性的映射策略

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

4? 結(jié)? 論

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

參考文獻:

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

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

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

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

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

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

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

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

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

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

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

猜你喜歡
類圖關(guān)系數(shù)據(jù)庫
關(guān)系數(shù)據(jù)庫在高爐數(shù)據(jù)采集系統(tǒng)中的應(yīng)用
山東冶金(2022年2期)2022-08-08 01:51:30
基于語義和結(jié)構(gòu)的UML類圖的檢索
關(guān)系數(shù)據(jù)庫技術(shù)在計算機網(wǎng)絡(luò)設(shè)計中的應(yīng)用
計算機網(wǎng)絡(luò)設(shè)計中關(guān)系數(shù)據(jù)庫技術(shù)的應(yīng)用
UML類圖元模型基于描述邏輯的表示及驗證
基于索引結(jié)構(gòu)的關(guān)系數(shù)據(jù)庫關(guān)鍵詞檢索
UML構(gòu)造型類圖到XMI的映射方法研究
UML類圖的一種表示方法
關(guān)于0類圖的一個注記
一種基于數(shù)據(jù)圖劃分的關(guān)系數(shù)據(jù)庫關(guān)鍵詞檢索方法
务川| 濮阳市| 邛崃市| 苍梧县| 额尔古纳市| 铜山县| 南江县| 邢台县| 来宾市| 黔东| 建始县| 昌宁县| 保亭| 浦江县| 溧阳市| 武强县| 泰来县| 宁德市| 都昌县| 集贤县| 邯郸县| 文化| 苗栗市| 图木舒克市| 卓尼县| 金乡县| 苏尼特右旗| 房山区| 焦作市| 泸西县| 沧州市| 乳山市| 尖扎县| 滁州市| 临夏县| 固安县| 池州市| 梅州市| 遵义县| 都匀市| 铜梁县|