999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

關于將類圖映射成關系表的策略研究

2024-04-14 21:18:56李娟明德廷王興宇
現代信息科技 2024年1期

李娟 明德廷 王興宇

DOI:10.19850/j.cnki.2096-4706.2024.01.023

收稿日期:2023-05-11

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

關鍵詞:可視化建模;類圖;關系數據庫

中圖分類號: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? 引? 言

在面向對象的分析與設計過程中,通常用類圖描述軟件系統的數據模型,它是建立數據庫的基礎。在研究類圖映射成關系數據庫中的表的策略過程中,文章使用Rational Rose 7.0這款軟件;它是由IBM公司推出的一款可視化建模工具,提供了Data Modeler數據建模功能,可以將類圖映射成關系數據庫中的表。

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

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

1? 類圖的知識

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

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

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

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

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

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

2? 將類圖轉換成關系數據庫中的表

創建類圖并將類圖映射成關系數據庫中的表操作步驟如下:

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

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

圖1? 選課系統的類圖

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

第二步:設置每個類的持久性。打開類的specification(規格說明),在Detail頁選中persisent(持久性)。

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

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

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

3? 類中屬性的映射策略

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

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

類與類之間的關系有關聯、泛化、實現、依賴。這四種關系的映射策略如下。

3.1? 關聯關系的映射

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

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

3.2? 泛化關系的映射

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

3.3? 實現關系的映射

有實現關系的類在映射成表時不產生任何新屬性。

3.4? 依賴關系的映射

有依賴關系的類在映射成表時不產生任何新屬性。

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

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

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

StudentList是關聯類,映射時只是把它自身的4個屬性映射成StudentList表的屬性,如圖4所示。

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

4? 結? 論

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

參考文獻:

[1] 楊弘平.UML2基礎、建模與設計教程 [M].北京:清華大學出版社,2015.

[2] 刁成嘉.UML系統建模與分析設計 [M].北京:機械工業出版社,2007.

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

[4] 劉超,張莉.可視化面向對象建模技術:標準建模語言UML教程 [M].北京:北京航空航天大學出版社,1999.

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

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

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

[8] 寇迎奇.基于形式化UML的關系數據庫實現策略 [D].北京:北京化工大學,2007.

[9] 張晞.UML類圖在關系數據庫中的實現 [J].計算機應用研究,2001(12):131-133.

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

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

主站蜘蛛池模板: 在线高清亚洲精品二区| 深爱婷婷激情网| 99热这里只有精品免费国产| 免费一级无码在线网站| 人妻精品全国免费视频| 国产精品太粉嫩高中在线观看| 99国产精品国产| 亚洲不卡网| 亚洲IV视频免费在线光看| 欧美色香蕉| 国产尤物jk自慰制服喷水| 91色综合综合热五月激情| 久久婷婷五月综合色一区二区| 亚洲成网777777国产精品| 国产鲁鲁视频在线观看| 久青草网站| 这里只有精品国产| 好久久免费视频高清| 亚洲美女一区| 狠狠ⅴ日韩v欧美v天堂| 国产成人av一区二区三区| 97在线公开视频| 亚洲av无码片一区二区三区| 国产在线视频自拍| 白丝美女办公室高潮喷水视频| 日韩在线欧美在线| 看你懂的巨臀中文字幕一区二区 | 91毛片网| 久久黄色影院| 国产丝袜啪啪| 91丝袜在线观看| 红杏AV在线无码| 性欧美精品xxxx| 永久在线精品免费视频观看| 狠狠v日韩v欧美v| 精品久久综合1区2区3区激情| 欧美精品黑人粗大| 国产亚洲精| 欧美午夜久久| 不卡无码h在线观看| 国产成人高清亚洲一区久久| 在线观看国产精品第一区免费| 久久精品人人做人人爽97| 成人午夜视频网站| 在线另类稀缺国产呦| 亚洲最猛黑人xxxx黑人猛交| 亚洲人成网站18禁动漫无码| 999在线免费视频| 欧美日韩一区二区三区在线视频| av免费在线观看美女叉开腿| 538国产视频| 毛片一级在线| 国产成年女人特黄特色大片免费| 亚洲天堂高清| 久久精品丝袜| 国内老司机精品视频在线播出| 色屁屁一区二区三区视频国产| 国产人人乐人人爱| 试看120秒男女啪啪免费| 美女免费黄网站| 国产视频一区二区在线观看| 国模粉嫩小泬视频在线观看| 久久这里只有精品23| 又粗又硬又大又爽免费视频播放| 九色视频在线免费观看| 婷婷激情亚洲| 国产精品视频a| 亚洲国产精品久久久久秋霞影院| 欧美日韩中文国产| 在线播放91| 国产亚洲精品无码专| 日本在线欧美在线| 国产色爱av资源综合区| 少妇极品熟妇人妻专区视频| 日韩欧美国产区| 亚洲日本韩在线观看| 亚洲无码日韩一区| 国产真实乱子伦视频播放| 国产精品污视频| 中国国产一级毛片| 国产女人18毛片水真多1| 思思99热精品在线|