版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
UML系統(tǒng)分析與設(shè)計(jì)SystemAnalysis&Design第十二章數(shù)據(jù)庫(kù)設(shè)計(jì)持久性數(shù)據(jù)庫(kù)層對(duì)象數(shù)據(jù)庫(kù)模型對(duì)象關(guān)系數(shù)據(jù)庫(kù)模型關(guān)系數(shù)據(jù)庫(kù)模型UML系統(tǒng)分析與設(shè)計(jì)第2版ZhenyanJi2數(shù)據(jù)庫(kù)設(shè)計(jì)在UML中,類(lèi)圖定義了應(yīng)用程序所需要的數(shù)據(jù)結(jié)構(gòu),用實(shí)體類(lèi)以及實(shí)體類(lèi)之間的關(guān)系來(lái)為數(shù)據(jù)庫(kù)中持久存在的數(shù)據(jù)結(jié)構(gòu)建模。因此,需要將實(shí)體類(lèi)映射為可以被數(shù)據(jù)庫(kù)識(shí)別的數(shù)據(jù)結(jié)構(gòu)。如何將實(shí)體類(lèi)、關(guān)聯(lián)關(guān)系、聚合關(guān)系、類(lèi)屬關(guān)系轉(zhuǎn)變?yōu)?種數(shù)據(jù)庫(kù)(面向?qū)ο笮?、?duì)象關(guān)系型、關(guān)系型數(shù)據(jù)庫(kù))模型中的數(shù)據(jù)結(jié)構(gòu)?UML系統(tǒng)分析與設(shè)計(jì)第2版ZhenyanJi3持久性數(shù)據(jù)庫(kù)層數(shù)據(jù)模型數(shù)據(jù)模型(DataModel)是以比原始的位和字節(jié)更易理解的方式描述數(shù)據(jù)庫(kù)結(jié)構(gòu)的抽象。通用的數(shù)據(jù)模型層分類(lèi)法認(rèn)可3種抽象。概念數(shù)據(jù)模型概念數(shù)據(jù)模型是面向用戶(hù)、面向現(xiàn)實(shí)世界的數(shù)據(jù)模型邏輯數(shù)據(jù)模型邏輯數(shù)據(jù)模型提供的模型反應(yīng)了數(shù)據(jù)庫(kù)管理系統(tǒng)DBMS的存儲(chǔ)結(jié)構(gòu),它是用戶(hù)從數(shù)據(jù)庫(kù)所看到的數(shù)據(jù)模型。物理數(shù)據(jù)模型物理數(shù)據(jù)模型定義了實(shí)際應(yīng)用中數(shù)據(jù)是如何存儲(chǔ)于持久存儲(chǔ)設(shè)備(如磁盤(pán))中的。UML系統(tǒng)分析與設(shè)計(jì)第2版ZhenyanJi4持久性數(shù)據(jù)庫(kù)層UML模型與持久數(shù)據(jù)庫(kù)層UML系統(tǒng)分析與設(shè)計(jì)第2版ZhenyanJi5對(duì)象數(shù)據(jù)庫(kù)模型ODB建模原語(yǔ)對(duì)象數(shù)據(jù)庫(kù)模型的基本建?;菍?duì)象和字面量。每個(gè)對(duì)象都有個(gè)對(duì)象標(biāo)識(shí)符,字面量沒(méi)有對(duì)象標(biāo)識(shí)符。ODB區(qū)分類(lèi)(Class)和類(lèi)型(Type),一個(gè)類(lèi)型可以有多個(gè)類(lèi)。例如,類(lèi)“Tiger”和類(lèi)“Lion”都實(shí)現(xiàn)了接口“Animal”,它們的類(lèi)型都是“Animal”。ODB類(lèi)可以有特性(Properties)和操作,特性可以是屬性(Attribute)或關(guān)系(Relationship),即連接該對(duì)象與其他對(duì)象的屬性。UML系統(tǒng)分析與設(shè)計(jì)第2版ZhenyanJi6對(duì)象數(shù)據(jù)庫(kù)模型ODB建模原語(yǔ)1.字面量和對(duì)象類(lèi)型字面量可以分為以下3種類(lèi)型:(1)原子字面量(AtomicLiterals)。(2)結(jié)構(gòu)化字面量(StructuredLiterals)。(3)集字面量(CollectionLiterals)。對(duì)象類(lèi)型可以分為以下3種類(lèi)型。(1)原子對(duì)象。(2)結(jié)構(gòu)化對(duì)象。(3)集(如set<Person>,Person是一個(gè)類(lèi))。UML系統(tǒng)分析與設(shè)計(jì)第2版ZhenyanJi7對(duì)象數(shù)據(jù)庫(kù)模型ODB建模原語(yǔ)2.關(guān)系對(duì)于關(guān)聯(lián)關(guān)系、聚合關(guān)系和類(lèi)屬關(guān)系這3種關(guān)系,ODB模型可直接支持關(guān)聯(lián)關(guān)系和類(lèi)屬關(guān)系,聚合關(guān)系則通過(guò)約束關(guān)聯(lián)來(lái)支持。UML系統(tǒng)分析與設(shè)計(jì)第2版ZhenyanJi8對(duì)象數(shù)據(jù)庫(kù)模型ODB建模原語(yǔ)3.ISA和EXTENDS繼承ODMG對(duì)象模型定義了兩種類(lèi)屬關(guān)系,即ISA關(guān)系和EXTENDS關(guān)系。其中,ISA關(guān)系對(duì)應(yīng)于早期的接口繼承(InterfaceInheritance),EXTENDS關(guān)系對(duì)應(yīng)于實(shí)現(xiàn)繼承(Implemen-tationInheritance)。UML系統(tǒng)分析與設(shè)計(jì)第2版ZhenyanJi9對(duì)象數(shù)據(jù)庫(kù)模型映射到ODB1.映射實(shí)體類(lèi)理論上,UML沒(méi)有禁止設(shè)計(jì)者通過(guò)定義新類(lèi)(在分析階段)和使用模板(在設(shè)計(jì)階段)來(lái)擴(kuò)充類(lèi)型系統(tǒng)。但在實(shí)踐中,為了避免UML中次要類(lèi)的激增,只有當(dāng)實(shí)現(xiàn)平臺(tái)支持可擴(kuò)充的類(lèi)型系統(tǒng)、內(nèi)建的結(jié)構(gòu)化類(lèi)型、集類(lèi)型時(shí),設(shè)計(jì)者才這樣做。UML系統(tǒng)分析與設(shè)計(jì)第2版ZhenyanJi10對(duì)象數(shù)據(jù)庫(kù)模型將實(shí)體類(lèi)映射到ODB設(shè)計(jì)UML系統(tǒng)分析與設(shè)計(jì)第2版ZhenyanJi11對(duì)象數(shù)據(jù)庫(kù)模型映射到ODB2.映射關(guān)聯(lián)在UML模型中,類(lèi)之間的關(guān)聯(lián)允許類(lèi)對(duì)象之間的導(dǎo)航,這正是對(duì)象數(shù)據(jù)庫(kù)所擅長(zhǎng)的,即由永久對(duì)象標(biāo)識(shí)符連接的對(duì)象之間的導(dǎo)航。在映射過(guò)程中,可對(duì)設(shè)計(jì)進(jìn)行優(yōu)化,將一些UML屬性或UML類(lèi)模擬為ODB接口,從而將這些接口用作ODB類(lèi)的屬性的類(lèi)型。UML系統(tǒng)分析與設(shè)計(jì)第2版ZhenyanJi12對(duì)象數(shù)據(jù)庫(kù)模型關(guān)聯(lián)的映射UML系統(tǒng)分析與設(shè)計(jì)第2版ZhenyanJi13對(duì)象數(shù)據(jù)庫(kù)模型映射到ODB3.映射聚合UML的聚合有兩種語(yǔ)義,即具有引用語(yǔ)義的聚合(Aggregation)和具有值語(yǔ)義的組合(Composition)。在數(shù)據(jù)庫(kù)中,聚合被模擬為關(guān)聯(lián)或嵌套屬性。如果要加入特別的聚合語(yǔ)義,則需通過(guò)過(guò)程的方式(在程序中)實(shí)現(xiàn),而不是通過(guò)聲明的方式(在數(shù)據(jù)結(jié)構(gòu)中)實(shí)現(xiàn)。UML系統(tǒng)分析與設(shè)計(jì)第2版ZhenyanJi14對(duì)象數(shù)據(jù)庫(kù)模型聚合關(guān)系和組合關(guān)系UML系統(tǒng)分析與設(shè)計(jì)第2版ZhenyanJi15對(duì)象數(shù)據(jù)庫(kù)模型映射到ODB4.映射類(lèi)屬?gòu)腢ML類(lèi)屬關(guān)系到ODB的ISA和EXTENDS關(guān)系的映射基本上是“一對(duì)一”的,接口繼承用ISA關(guān)系來(lái)模擬,類(lèi)繼承用EXTENDS關(guān)系來(lái)模擬。UML系統(tǒng)分析與設(shè)計(jì)第2版ZhenyanJi16對(duì)象數(shù)據(jù)庫(kù)模型類(lèi)屬關(guān)系的映射UML系統(tǒng)分析與設(shè)計(jì)第2版ZhenyanJi17對(duì)象關(guān)系數(shù)據(jù)庫(kù)模型對(duì)象關(guān)系數(shù)據(jù)庫(kù)(Object-RelationalDatabaseMode,ORDBM)合并了老式關(guān)系模型數(shù)據(jù)庫(kù)和新式對(duì)象模型數(shù)據(jù)庫(kù),使得對(duì)象關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)(Object-RelationalDatabaseManagementSystem,ORDBMS)既能處理關(guān)系數(shù)據(jù)結(jié)構(gòu)(關(guān)系表),又能處理對(duì)象數(shù)據(jù)結(jié)構(gòu)(對(duì)象表)。UML系統(tǒng)分析與設(shè)計(jì)第2版ZhenyanJi18對(duì)象關(guān)系數(shù)據(jù)庫(kù)模型ORDB建模原語(yǔ)ORDB建模原語(yǔ)由對(duì)象建模原語(yǔ)和關(guān)系建模原語(yǔ)組成。主要的對(duì)象建模原語(yǔ)是用戶(hù)定義的結(jié)構(gòu)化類(lèi)型(StructuredType),該類(lèi)型對(duì)應(yīng)于ODB的“Interface”概念和UML的“Class”概念。ORDB的存儲(chǔ)機(jī)制是表(Table),表的列代表了可以接受用戶(hù)定義的結(jié)構(gòu)化類(lèi)型的值。為了與常規(guī)的關(guān)系表相區(qū)別,在ORDBMS實(shí)現(xiàn)中將這樣的表稱(chēng)為對(duì)象表(ObjectTable)。UML系統(tǒng)分析與設(shè)計(jì)第2版ZhenyanJi19對(duì)象關(guān)系數(shù)據(jù)庫(kù)模型ORDB建模原語(yǔ)1.結(jié)構(gòu)化類(lèi)型ORDB表的列可以接受內(nèi)建類(lèi)型或用戶(hù)定義類(lèi)型的值,ORDB的內(nèi)建類(lèi)型的功能類(lèi)似于ODB的內(nèi)建類(lèi)型的功能。UML系統(tǒng)分析與設(shè)計(jì)第2版ZhenyanJi20對(duì)象關(guān)系數(shù)據(jù)庫(kù)模型ORDB建模原語(yǔ)2.對(duì)象表(ObjectTable)對(duì)象表是具有一個(gè)或多個(gè)列的行的集合。行是行類(lèi)型的實(shí)例,對(duì)象表中的每一行都是由一個(gè)OID唯一標(biāo)識(shí)的對(duì)象。行是可以插入表中或從表中刪除的數(shù)據(jù)的最小單位。為了快速區(qū)別對(duì)象類(lèi)型和對(duì)象表,建議結(jié)構(gòu)化后的類(lèi)型名使用后綴TY。UML系統(tǒng)分析與設(shè)計(jì)第2版ZhenyanJi21對(duì)象關(guān)系數(shù)據(jù)庫(kù)模型ORDB建模原語(yǔ)3.行類(lèi)型(RowType)行類(lèi)型允許表在沒(méi)有使用結(jié)構(gòu)化類(lèi)型或集類(lèi)型的情況下,具有相當(dāng)復(fù)雜的內(nèi)部結(jié)構(gòu)。行類(lèi)型是域的序列(即<域名><數(shù)據(jù)類(lèi)型>對(duì))。實(shí)際上,行類(lèi)型允許將一個(gè)表嵌入到另一個(gè)表中,且表中的列可以含有行值。從數(shù)據(jù)庫(kù)編程的角度來(lái)說(shuō),行類(lèi)型允許將完整的行存儲(chǔ)到變量中,允許將完整的行作為操作的輸入?yún)?shù)進(jìn)行傳遞,還允許將完整的行作為操作的輸出參數(shù)或返回值進(jìn)行返回。UML系統(tǒng)分析與設(shè)計(jì)第2版ZhenyanJi22對(duì)象關(guān)系數(shù)據(jù)庫(kù)模型ORDB建模原語(yǔ)4.引用類(lèi)型(ReferenceType)結(jié)構(gòu)化類(lèi)型可以用來(lái)定義引用類(lèi)型,用關(guān)鍵字“ref”來(lái)定義引用。例如,studref(StudentTY)就表示對(duì)象表中一個(gè)對(duì)結(jié)構(gòu)化類(lèi)型的引用。在SQL:1999中,引用類(lèi)型是有作用域的,即它們引用的表在編譯時(shí)是確定的。UML系統(tǒng)分析與設(shè)計(jì)第2版ZhenyanJi23對(duì)象關(guān)系數(shù)據(jù)庫(kù)模型ORDB建模原語(yǔ)5.OF和UNDER繼承SQL:1999允許為已存在類(lèi)型創(chuàng)建子類(lèi)型,目前,SQL:1999只支持單一的實(shí)現(xiàn)繼承。對(duì)應(yīng)于類(lèi)型層次結(jié)構(gòu),可創(chuàng)建表層次結(jié)構(gòu)。也就是說(shuō),為超類(lèi)型創(chuàng)建超表,為子類(lèi)型創(chuàng)建子表。但有時(shí)候,在表層次結(jié)構(gòu)中有可能忽略類(lèi)型層次結(jié)構(gòu)中的類(lèi)型UML系統(tǒng)分析與設(shè)計(jì)第2版ZhenyanJi24對(duì)象關(guān)系數(shù)據(jù)庫(kù)模型ORDB中的繼承UML系統(tǒng)分析與設(shè)計(jì)第2版ZhenyanJi25映射到ORDB1.映射實(shí)體類(lèi)(EntityClass)UML系統(tǒng)分析與設(shè)計(jì)第2版ZhenyanJi26對(duì)象關(guān)系數(shù)據(jù)庫(kù)模型映射到ORDB2.映射關(guān)聯(lián)(Association)UML系統(tǒng)分析與設(shè)計(jì)第2版ZhenyanJi27對(duì)象關(guān)系數(shù)據(jù)庫(kù)模型映射到ORDB3.映射聚合(Aggregation)UML系統(tǒng)分析與設(shè)計(jì)第2版ZhenyanJi28對(duì)象關(guān)系數(shù)據(jù)庫(kù)模型映射到ORDB4.映射類(lèi)屬(Generalization)UML系統(tǒng)分析與設(shè)計(jì)第2版ZhenyanJi29對(duì)象關(guān)系數(shù)據(jù)庫(kù)模型關(guān)系數(shù)據(jù)庫(kù)模型在過(guò)去的20年,關(guān)系數(shù)據(jù)庫(kù)模型(RelationalDatabaseModel)已經(jīng)基本占領(lǐng)了數(shù)據(jù)庫(kù)軟件市場(chǎng),關(guān)系數(shù)據(jù)庫(kù)模型已經(jīng)取代了分層數(shù)據(jù)庫(kù)(HierarchicalDatabase)和網(wǎng)絡(luò)數(shù)據(jù)庫(kù)(NetworkDatabase)模型。最后的關(guān)系數(shù)據(jù)庫(kù)模型標(biāo)準(zhǔn)是SQL92,它是1992年得到ANSI和ISO的批準(zhǔn)而發(fā)布的。市場(chǎng)上所有重要的RDBMS產(chǎn)品(包括Oracle、DB2、Sybase、Informix、SQLServer等)都遵守這一標(biāo)準(zhǔn),雖然其方式各不相同。UML系統(tǒng)分析與設(shè)計(jì)第2版ZhenyanJi30關(guān)系數(shù)據(jù)庫(kù)模型RDB建模原語(yǔ)1.列、域和規(guī)則關(guān)系數(shù)據(jù)庫(kù)將數(shù)據(jù)存儲(chǔ)在由行和列組成的表中。其中存儲(chǔ)在行列交叉點(diǎn)的數(shù)據(jù)值必須是不可分的、單一的值,也就是說(shuō),列具有原子域(數(shù)據(jù)類(lèi)型)。域定義了列可以接受的合法的值集,域可以是匿名的(如namevarchar(40))也可以是有名的(如nameName),域Name在用來(lái)定義列“name”之前已經(jīng)定義過(guò)了。UML系統(tǒng)分析與設(shè)計(jì)第2版ZhenyanJi31關(guān)系數(shù)據(jù)庫(kù)模型RDB建模原語(yǔ)2.關(guān)系表關(guān)系表是由它的固定列集定義的,列具有內(nèi)建的或用戶(hù)定義的類(lèi)型。表可以有任意多行,但沒(méi)有重復(fù)的行。特定行的列值可以是Null,Null值意味著“值目前不知道”或“值不適用”。由于RDB模型要求“沒(méi)有重復(fù)行”,因此每個(gè)表都有一個(gè)主鍵(PrimaryKey)。一個(gè)表可以有多個(gè)鍵,任意選擇這些鍵中的一個(gè)作為對(duì)用戶(hù)最重要的主鍵,其他的鍵則被稱(chēng)為備用鍵(AlternateKeys)。UML系統(tǒng)分析與設(shè)計(jì)第2版ZhenyanJi32RDB建模原語(yǔ)3.引用完整性(ReferentialIntegrity)RDB模型通過(guò)引用完整性約束來(lái)維護(hù)表之間的關(guān)系。這種表之間關(guān)系不是固定的行到行的連接,而是每當(dāng)用戶(hù)請(qǐng)求系統(tǒng)發(fā)現(xiàn)關(guān)系時(shí),RDB才去發(fā)現(xiàn)行到行的連接。這種發(fā)現(xiàn)是通過(guò)比較一個(gè)表的主鍵值與該表或另一個(gè)表的外鍵值來(lái)實(shí)現(xiàn)的。外鍵(ForeignKey)被定義為表中的列的集合,其值為Null,或者通過(guò)匹配同一個(gè)表中或另一個(gè)表中的主鍵值所得。主、外鍵的一致性被稱(chēng)作引用完整性,引用完整性中的主鍵和外鍵必須是基于同一個(gè)域定義的,但可以有不同的名字。UML系統(tǒng)分析與設(shè)計(jì)第2版ZhenyanJi33關(guān)系數(shù)據(jù)庫(kù)模型引用完整性UML系統(tǒng)分析與設(shè)計(jì)第2版ZhenyanJi34關(guān)系數(shù)據(jù)庫(kù)模型RDB建模原語(yǔ)4.范式(NormalForms)RDB設(shè)計(jì)中一個(gè)最重要、但同時(shí)最不容易被理解的概念就是規(guī)范化。關(guān)系表必須是范式(NormalForm,NF),范式被分為以下6種。第一范式。第二范式。第三范式。BC范式(Boyce-Codd范式)。第四范式。第五范式。UML系統(tǒng)分析與設(shè)計(jì)第2版ZhenyanJi35關(guān)系數(shù)據(jù)庫(kù)模型映射到RDB如同ODB和ORDB模型一樣,RDB設(shè)計(jì)也可以用UML衍型和其他擴(kuò)充機(jī)制來(lái)模擬。從UML類(lèi)模型到RDB模式設(shè)計(jì)的映射需考慮RDB模型的局限性,即在關(guān)系模式中表達(dá)類(lèi)的一些內(nèi)建的聲明式語(yǔ)義是不可能存在的,這樣的語(yǔ)義必須在數(shù)據(jù)庫(kù)程序中解決。1.映射實(shí)體類(lèi)(EntityClass)實(shí)體類(lèi)到關(guān)系表的映射必須遵循表的第一范式,列必須是原子的。UML系統(tǒng)分析與設(shè)計(jì)第2版ZhenyanJi36關(guān)系數(shù)據(jù)庫(kù)模型映射實(shí)體類(lèi)UML系統(tǒng)分析與設(shè)計(jì)第2版ZhenyanJi37關(guān)系數(shù)據(jù)庫(kù)模型映射到RDB2.映射關(guān)聯(lián)(Association)將關(guān)聯(lián)映射到RDB的過(guò)程涉及了表之間引用完整性約束的使用。任何“一對(duì)一”或“一對(duì)多”的關(guān)聯(lián)都可以通過(guò)在一個(gè)表中插入一個(gè)外鍵來(lái)匹配另一個(gè)表中的主鍵來(lái)表達(dá)。對(duì)于“一對(duì)一”關(guān)聯(lián),可以將外鍵添加到其中任何一個(gè)表中,也可將兩個(gè)實(shí)體類(lèi)合并在一個(gè)表中(取決于想達(dá)到的規(guī)范化水平)。對(duì)于遞歸的“一對(duì)一”或“一對(duì)多”關(guān)聯(lián),外鍵和主鍵位于同一個(gè)表中。UML系統(tǒng)分析與設(shè)計(jì)第2版ZhenyanJi38關(guān)系數(shù)據(jù)庫(kù)模型映射關(guān)聯(lián)UML系統(tǒng)分析與設(shè)計(jì)第2版ZhenyanJi39關(guān)系數(shù)據(jù)庫(kù)模型映射到RDB3.映射聚合(Aggregation)關(guān)聯(lián)映射的主要原理也適用于聚合映射。對(duì)于強(qiáng)形式聚合——組合(具有引用語(yǔ)義的聚合被看作是弱形式的聚合,具有值語(yǔ)義的組合則被看作是強(qiáng)形式的聚合),應(yīng)該將子集和超集實(shí)體類(lèi)組合到一張表中。這對(duì)于“一對(duì)一”的聚合是可能的,但對(duì)于“一對(duì)多”的聚合,子集類(lèi)(無(wú)論是強(qiáng)形式聚合還是弱形式聚合)則必須被模擬為一個(gè)單獨(dú)的表(用一個(gè)外鍵將它和它的超集類(lèi)的表連接起來(lái))。UML系統(tǒng)分析與設(shè)計(jì)第2版ZhenyanJi40關(guān)系數(shù)據(jù)庫(kù)模型映射聚合UML系統(tǒng)分析與設(shè)計(jì)第2版ZhenyanJi41關(guān)系數(shù)據(jù)庫(kù)模型映射到RDB4.映射類(lèi)屬(Generalization)類(lèi)屬關(guān)系到RDB的映射有多種方式。不過(guò),用RDB數(shù)據(jù)結(jié)構(gòu)表達(dá)類(lèi)屬關(guān)系容易忽略類(lèi)屬關(guān)系的繼承、多態(tài)、代碼重用等。將類(lèi)屬關(guān)系的層次映射為RDB設(shè)計(jì)模型的方法有4種。(1)將每個(gè)類(lèi)映射到一個(gè)表。(2)將整個(gè)類(lèi)層次映射到一個(gè)超類(lèi)表。(3)將每個(gè)具體類(lèi)映射到一個(gè)表。(4)將每個(gè)不相交的具體類(lèi)映射到一個(gè)表。UML系統(tǒng)分析與設(shè)計(jì)第2版ZhenyanJi42關(guān)系數(shù)據(jù)庫(kù)模型類(lèi)屬關(guān)系UML系統(tǒng)分析與設(shè)計(jì)第2版ZhenyanJi43關(guān)系數(shù)據(jù)庫(kù)模型將每個(gè)類(lèi)映射到一個(gè)表UML系統(tǒng)分析與設(shè)計(jì)第2版ZhenyanJi44關(guān)系數(shù)據(jù)庫(kù)模型將整個(gè)類(lèi)層次映射到一個(gè)超類(lèi)表UML系統(tǒng)分析與設(shè)計(jì)第2版ZhenyanJi45關(guān)系數(shù)據(jù)庫(kù)模型將每個(gè)具體類(lèi)映射到一個(gè)表UML系統(tǒng)分析與設(shè)計(jì)第2版ZhenyanJi46關(guān)系數(shù)據(jù)庫(kù)模型將每個(gè)不相交的具體類(lèi)映射到一個(gè)表UML系統(tǒng)分析與設(shè)計(jì)第2版ZhenyanJi47關(guān)系數(shù)據(jù)庫(kù)模型映射類(lèi)屬UML系統(tǒng)分析與設(shè)計(jì)第2版ZhenyanJi48小結(jié)數(shù)據(jù)庫(kù)在軟件開(kāi)發(fā)中是非常重要的。一個(gè)糟糕的數(shù)據(jù)庫(kù)設(shè)計(jì)無(wú)法通過(guò)任何其他方法(包括好的應(yīng)用程序設(shè)計(jì))來(lái)矯正。本章對(duì)3個(gè)主要的數(shù)據(jù)庫(kù)模型——對(duì)象數(shù)據(jù)庫(kù)、對(duì)象關(guān)系數(shù)據(jù)庫(kù)、關(guān)系數(shù)據(jù)庫(kù)模型分別進(jìn)行了討論,講解并舉例說(shuō)明了如何將UML類(lèi)模型映射到這3種數(shù)據(jù)庫(kù)的邏輯模型。UML系統(tǒng)分析與設(shè)計(jì)第2版ZhenyanJi49UML系統(tǒng)分析與設(shè)計(jì)SystemAnalysis&Design冀振燕北京交通大學(xué)
第十三章圖書(shū)管理系統(tǒng)的分析與設(shè)計(jì)系統(tǒng)需求需求分析靜態(tài)結(jié)構(gòu)模型動(dòng)態(tài)行為模型物理模型UML系統(tǒng)分析與設(shè)計(jì)第2版ZhenyanJi51系統(tǒng)需求圖書(shū)館圖書(shū)管理系統(tǒng)的域描述如下:在圖書(shū)管理系統(tǒng)中,要為每個(gè)借閱者建立一個(gè)賬戶(hù),并給借閱者發(fā)放借閱卡(借閱卡可以提供借閱卡號(hào)、借閱者名),其中賬戶(hù)中存儲(chǔ)借閱者的個(gè)人信息、借閱信息以及預(yù)訂信息。持有借閱卡的借閱者可以借閱書(shū)刊、返還書(shū)刊、查詢(xún)書(shū)刊信息、預(yù)訂書(shū)刊并取消預(yù)訂,所有這些操作都是通過(guò)圖書(shū)管理員進(jìn)行的,也即借閱者不直接與系統(tǒng)交互,而是讓圖書(shū)管理員充當(dāng)借閱者的代理與系統(tǒng)交互。UML系統(tǒng)分析與設(shè)計(jì)第2版ZhenyanJi52系統(tǒng)需求在借閱書(shū)刊時(shí),需要輸入所借閱的書(shū)刊名、書(shū)刊的ISBN/ISSN號(hào),然后輸入借閱者的借閱卡號(hào)和借閱者名,完成后提交所填表格,系統(tǒng)驗(yàn)證借閱者是否有效(在系統(tǒng)中是否存在賬戶(hù)),若有效,借閱請(qǐng)求被接受,系統(tǒng)查詢(xún)數(shù)據(jù)庫(kù)系統(tǒng),看借閱者要求借閱的書(shū)刊是否存在,若存在,則借閱者可借出書(shū)刊,并在系統(tǒng)中建立存儲(chǔ)借閱記錄。借閱者還書(shū)后,刪除關(guān)于所還書(shū)刊的借閱記錄。UML系統(tǒng)分析與設(shè)計(jì)第2版ZhenyanJi53系統(tǒng)需求如果借閱者所借的書(shū)刊已被借出,則借閱者可以選擇預(yù)訂該書(shū)刊,一旦借閱者預(yù)訂的書(shū)刊可以獲得,就將書(shū)刊直接寄給預(yù)訂人(為了簡(jiǎn)化系統(tǒng),當(dāng)預(yù)訂書(shū)刊可獲得時(shí)就不通知借閱者了)。另外,為了簡(jiǎn)化系統(tǒng),暫不考慮書(shū)刊的最長(zhǎng)借閱期限,即假設(shè)借閱者可以無(wú)限期地保存所借閱的書(shū)刊。UML系統(tǒng)分析與設(shè)計(jì)第2版ZhenyanJi54系統(tǒng)需求對(duì)上述圖書(shū)管理系統(tǒng)的域描述進(jìn)行分析,可以獲得如下功能性需求。(1)借閱者持有借閱卡(借閱卡包含借閱者姓名和借閱卡號(hào))。(2)圖書(shū)管理員作為借閱者的代理借書(shū)。(3)圖書(shū)管理員作為借閱者的代理預(yù)訂書(shū)刊。(4)圖書(shū)管理員作為借閱者的代理取消預(yù)訂。(5)圖書(shū)管理員作為借閱者的代理還書(shū)。(6)圖書(shū)管理員可以創(chuàng)建新的借閱者賬戶(hù)。(7)圖書(shū)管理員可以修改借閱者的賬戶(hù)信息。UML系統(tǒng)分析與設(shè)計(jì)第2版ZhenyanJi55系統(tǒng)需求(8)圖書(shū)管理員可以刪除已存在的借閱者賬戶(hù)。(9)圖書(shū)管理員可以添加新書(shū)目。(10)圖書(shū)管理員可以修改書(shū)目信息。(11)圖書(shū)管理員可以刪除系統(tǒng)中的書(shū)目。(12)圖書(shū)管理員可以在系統(tǒng)中添加書(shū)刊信息(注意區(qū)分“書(shū)目”與“書(shū)刊”)。(13)圖書(shū)管理員可以編輯書(shū)刊信息。(14)圖書(shū)管理員可以刪除書(shū)刊信息。UML系統(tǒng)分析與設(shè)計(jì)第2版ZhenyanJi56需求分析識(shí)別參與者(1)BorrowerActor。描述:借閱者可以借閱、預(yù)訂、歸還物理書(shū)刊,還可以取消預(yù)訂。示例:持有借閱卡的任何人或組織。(2)Librarian。描述:圖書(shū)管理員維護(hù)系統(tǒng),他可以創(chuàng)建、修改、刪除借閱者的信息;可以添加、編輯、刪除書(shū)目信息,即維護(hù)書(shū)刊目錄;可以添加、編輯、刪除物理書(shū)刊信息。示例:圖書(shū)管理員。UML系統(tǒng)分析與設(shè)計(jì)第2版ZhenyanJi57需求分析識(shí)別用例(1)BorrowBook(借閱物理書(shū)刊)。本用例提供了借閱物理書(shū)刊的功能。(2)ReturnBook(返還物理書(shū)刊)。本用例提供了返還物理書(shū)刊的功能。(3)ReserveTitle(預(yù)訂書(shū)刊)。預(yù)訂書(shū)刊時(shí)一般針對(duì)書(shū)目,而非某個(gè)物理拷貝。本用例提供了預(yù)訂書(shū)刊的功能。(4)CancelReservation(取消預(yù)訂)。本用例提供了取消預(yù)訂書(shū)刊的功能。UML系統(tǒng)分析與設(shè)計(jì)第2版ZhenyanJi58需求分析識(shí)別用例(5)MaintainBorrowerInfo(維護(hù)借閱者信息)。本用例提供了創(chuàng)建、修改以及取消借閱者賬戶(hù)的功能。(6)MaintainTitleInfo(維護(hù)書(shū)目信息)。本用例提供了添加、修改以及刪除書(shū)目信息的功能。(7)MaintainBookInfo(維護(hù)物理書(shū)刊信息)。本用例提供了添加、修改以及刪除物理書(shū)刊信息的功能。(8)LogIn(登錄)。本用例描述了用戶(hù)如何登錄進(jìn)入該管理系統(tǒng)。UML系統(tǒng)分析與設(shè)計(jì)第2版ZhenyanJi59需求分析UML系統(tǒng)分析與設(shè)計(jì)第2版ZhenyanJi60系統(tǒng)用例圖需求分析圖書(shū)管理系統(tǒng)的用例事件流描述如下。1.借閱物理書(shū)刊(BorrowBook)1.1.前置條件(Pre-Conditions)在這個(gè)用例開(kāi)始前,Librarian必須登錄到系統(tǒng)中。1.2.后置條件(Post-Conditions)如果這個(gè)用例成功,在系統(tǒng)中建立并存儲(chǔ)借閱記錄,若必要還要?jiǎng)h除預(yù)訂記錄。反之,系統(tǒng)的狀態(tài)沒(méi)有變化。1.3.?dāng)U充點(diǎn)(ExtensionPoints)沒(méi)有。1.4.事件流1.4.1.基流(BasicFlow)當(dāng)借閱者從圖書(shū)館借閱物理書(shū)刊時(shí),用例啟動(dòng)。如果Librarian選擇“借書(shū)”,則執(zhí)行分支流S-1:借閱物理書(shū)刊。UML系統(tǒng)分析與設(shè)計(jì)第2版ZhenyanJi61需求分析如果所借的物理書(shū)刊是經(jīng)過(guò)預(yù)訂的,則執(zhí)行分支流S-2:通過(guò)預(yù)訂借閱物理書(shū)刊。1.4.2.分支流(Subflows)S-1:借閱物理書(shū)刊(1)提供書(shū)目、借閱者信息。(2)檢索書(shū)目(Title)(E-1)。(3)確定所借閱的物理書(shū)刊是否可以獲得(E-2),即所借的物理書(shū)刊是否都已借出。(4)檢索借閱者(E-3)。(5)圖書(shū)館將物理書(shū)刊借給借閱者。(6)創(chuàng)建借閱記錄。(7)存儲(chǔ)借閱記錄。UML系統(tǒng)分析與設(shè)計(jì)第2版ZhenyanJi62需求分析S-2:通過(guò)預(yù)訂借閱物理書(shū)刊(1)提供書(shū)目、借閱者信息。(2)檢索書(shū)目(Title)(E-1)。(3)檢索借閱者(E-3)。(4)確定該種類(lèi)書(shū)刊的物理拷貝是否可以獲得(E-2)。(5)將物理書(shū)刊發(fā)給借閱者。(6)創(chuàng)建借閱記錄。(7)存儲(chǔ)借閱記錄。(8)刪除預(yù)訂記錄。1.4.3.替代流(AlternativeFlow)E-1:該書(shū)目不存在,系統(tǒng)顯示提示信息,用例終止。E-2:物理書(shū)刊都已借出,系統(tǒng)顯示提示信息,用例終止。E-3:系統(tǒng)中不存在該借閱者,系統(tǒng)顯示提示信息,用例終止。UML系統(tǒng)分析與設(shè)計(jì)第2版ZhenyanJi63需求分析5.維護(hù)借閱者信息(MaintainBorrowerInfo)5.1.前置條件(Pre-Conditions)在這個(gè)用例開(kāi)始前,Librarian必須登錄到系統(tǒng)中。5.2.后置條件(Post-Conditions)如果這個(gè)用例成功,系統(tǒng)添加、修改或刪除借閱者信息。反之,系統(tǒng)的狀態(tài)沒(méi)有變化。5.3.?dāng)U充點(diǎn)(ExtensionPoints)沒(méi)有。5.4.事件流5.4.1.基流(BasicFlow)當(dāng)Librarian想維護(hù)借閱者信息時(shí),用例啟動(dòng)。UML系統(tǒng)分析與設(shè)計(jì)第2版ZhenyanJi64需求分析系統(tǒng)要求Librarian選擇所想執(zhí)行的活動(dòng)(即添加借閱者、刪除借閱者或修改借閱者)。如果所選的活動(dòng)是“添加借閱者”,則執(zhí)行分支流S-1:添加借閱者。如果所選的活動(dòng)是“刪除借閱者”,則執(zhí)行分支流S-2:刪除借閱者。如果所選的活動(dòng)是“修改借閱者”,則執(zhí)行分支流S-3:修改借閱者。5.4.2.分支流(Subflows)S-1:添加借閱者(1)提供借閱者信息,如姓名、地址、郵政編碼和身份證號(hào)碼等。(2)系統(tǒng)存儲(chǔ)借閱者信息(E-1)。S-2:刪除借閱者(1)提供借閱者信息。(2)查詢(xún)借閱者(E-2)。UML系統(tǒng)分析與設(shè)計(jì)第2版ZhenyanJi65需求分析(3)查詢(xún)借閱者的借閱記錄(E-3)。(4)從系統(tǒng)中刪除借閱者的信息,以及借閱者的預(yù)訂記錄。S-3:更改借閱者(1)提供借閱者的信息。(2)查詢(xún)并顯示借閱者的信息(E-2),修改相應(yīng)的信息。(3)更新并存儲(chǔ)系統(tǒng)中借閱者的信息。5.4.3.替代流(AlternativeFlow)E-1:若借閱者已存在,系統(tǒng)顯示提示信息,用例終止。E-2:若查詢(xún)不到借閱者,系統(tǒng)顯示提示信息,用例終止。E-3:若存在借閱記錄,系統(tǒng)顯示提示信息,用例終止。UML系統(tǒng)分析與設(shè)計(jì)第2版ZhenyanJi66靜態(tài)結(jié)構(gòu)模型定義系統(tǒng)對(duì)象(1)借閱者(Borrower)。借閱者是有身份的。例如,“王紅”和“劉新”是兩個(gè)身份不同的人,具有相同名字和不同身份證號(hào)碼的兩個(gè)人也是身份不同的。在這個(gè)系統(tǒng)中,借閱者有相關(guān)的行為,即借閱者可以借閱、返還、預(yù)訂書(shū)刊或取消預(yù)訂,所以借閱者應(yīng)該成為系統(tǒng)中的一個(gè)對(duì)象,類(lèi)名為Borrower。(2)書(shū)目(Title)。書(shū)目可以通過(guò)不同的ISBN/ISSN號(hào)來(lái)區(qū)分。在這個(gè)系統(tǒng)中,書(shū)目也有相關(guān)的行為,書(shū)目可以被預(yù)訂或被取消預(yù)訂,所以,書(shū)目也是系統(tǒng)中的一個(gè)對(duì)象,類(lèi)名為T(mén)itle。UML系統(tǒng)分析與設(shè)計(jì)第2版ZhenyanJi67靜態(tài)結(jié)構(gòu)模型定義系統(tǒng)對(duì)象(3)物理書(shū)刊(Book)。物理書(shū)刊在圖書(shū)館中通過(guò)獨(dú)一無(wú)二的索引號(hào)來(lái)區(qū)分,因此不同的物理書(shū)刊不會(huì)被混淆。在這個(gè)系統(tǒng)中,物理書(shū)刊也有相關(guān)的行為,物理書(shū)刊可以被借閱或被返還,所以,物理書(shū)刊也是系統(tǒng)中的一個(gè)對(duì)象,類(lèi)名為Book。(4)借閱記錄(Loan)。借閱記錄有身份,借閱記錄可以彼此區(qū)分,而不會(huì)被混淆。例如,同一個(gè)人關(guān)于不同書(shū)刊的借閱記錄是不同的。在這個(gè)系統(tǒng)中,借閱記錄也有相關(guān)的行為,它可以被建立或刪除,因此,借閱記錄也是系統(tǒng)中的一個(gè)對(duì)象,類(lèi)名為L(zhǎng)oan。UML系統(tǒng)分析與設(shè)計(jì)第2版ZhenyanJi68靜態(tài)結(jié)構(gòu)模型定義系統(tǒng)對(duì)象(5)預(yù)訂記錄(Reservation)。預(yù)訂記錄也有身份,預(yù)訂記錄可以被此區(qū)別,不會(huì)被混淆。例如,借閱者相同但書(shū)目不同的預(yù)訂記錄是不同的,書(shū)目相同但借閱者不同的預(yù)訂記錄也是不同的。在這個(gè)系統(tǒng)中,借閱記錄也有相關(guān)的行為,它可以被建立或刪除,因此,借閱記錄也是系統(tǒng)中的一個(gè)對(duì)象,類(lèi)名為Reservation。從上述分析可知,系統(tǒng)至少含有5個(gè)重要的類(lèi),即類(lèi)Borrower、類(lèi)Book、類(lèi)Title、類(lèi)Loan和類(lèi)Reservation。上述5個(gè)類(lèi)都是實(shí)體類(lèi),都是持久性的,都需要存儲(chǔ)在數(shù)據(jù)庫(kù)中。UML系統(tǒng)分析與設(shè)計(jì)第2版ZhenyanJi69靜態(tài)結(jié)構(gòu)模型定義系統(tǒng)對(duì)象由于上述5個(gè)類(lèi)都是持久性類(lèi),因此還可以抽象出一個(gè)代表持久性的父類(lèi),以實(shí)現(xiàn)面向?qū)ο髷?shù)據(jù)庫(kù)文件的讀、寫(xiě)、存儲(chǔ)、檢索、刪除、更新等操作。(6)類(lèi)Persistent。類(lèi)Persistent是類(lèi)Borrower、類(lèi)Title、類(lèi)Book、類(lèi)Loan、類(lèi)Reservation的父類(lèi)。類(lèi)Persistent為商業(yè)對(duì)象的持久存儲(chǔ)提供了支持,它的子類(lèi)必須能夠?qū)崿F(xiàn)從數(shù)據(jù)庫(kù)文件中讀、寫(xiě)對(duì)象屬性的操作。(7)類(lèi)OID。類(lèi)OID實(shí)現(xiàn)了對(duì)象ID。UML系統(tǒng)分析與設(shè)計(jì)第2版ZhenyanJi70靜態(tài)結(jié)構(gòu)模型(1)類(lèi)Persistent的屬性和操作。類(lèi)Persistent支持對(duì)象的持久存儲(chǔ)。類(lèi)Persistent具有將對(duì)象寫(xiě)入數(shù)據(jù)庫(kù)文件的方法“write()”和從數(shù)據(jù)庫(kù)文件中讀出對(duì)象的方法“read()”,類(lèi)Persistent還提供了通過(guò)OID檢索對(duì)象,獲得持久對(duì)象的OID,以及存儲(chǔ)、刪除、更新對(duì)象的方法。類(lèi)Persistent的子類(lèi)繼承了類(lèi)Persistent的方法,并實(shí)現(xiàn)了該類(lèi)的“write()”和“read()”方法,覆蓋了父類(lèi)Persistent的“write()”和“read()”方法,從而實(shí)現(xiàn)了將特定子類(lèi)對(duì)象的屬性寫(xiě)入數(shù)據(jù)庫(kù)文件,或者從數(shù)據(jù)庫(kù)文件中讀出特定子類(lèi)對(duì)象的屬性。UML系統(tǒng)分析與設(shè)計(jì)第2版ZhenyanJi71靜態(tài)結(jié)構(gòu)模型(2)類(lèi)OID的屬性和操作。類(lèi)OID實(shí)現(xiàn)了對(duì)象ID,類(lèi)OID的對(duì)象可用來(lái)引用系統(tǒng)中的持久對(duì)象,使得從數(shù)據(jù)庫(kù)文件中引用和檢索對(duì)象變得容易。對(duì)象ID由所引用的類(lèi)的類(lèi)名和一個(gè)獨(dú)一無(wú)二的idNumber號(hào)組成。通過(guò)將OID傳遞給類(lèi)Persistent的方法getObject(),可以從數(shù)據(jù)庫(kù)文件中讀出對(duì)象,并將對(duì)象返回給調(diào)用者。UML系統(tǒng)分析與設(shè)計(jì)第2版ZhenyanJi72靜態(tài)結(jié)構(gòu)模型(3)類(lèi)Borrower的屬性和操作。類(lèi)Borrower描述了物理借閱者(可以是人,也可以是公司或另一個(gè)圖書(shū)館等)的信息。借閱者的信息包括姓名、地址、郵政區(qū)號(hào)、身份證號(hào)碼和電話號(hào)碼。類(lèi)Borrower與參與者BorrowerActor是不同的,參與者BorrowerActor代表了系統(tǒng)外的物理借閱者,而類(lèi)Borrower則代表了系統(tǒng)中存儲(chǔ)的物理借閱者的信息,即代表了物理借閱者在系統(tǒng)中的賬戶(hù)。類(lèi)Borrower的所有對(duì)象都是持久的,因?yàn)轭?lèi)Borrower繼承了類(lèi)Persistent,并實(shí)現(xiàn)了讀寫(xiě)操作。UML系統(tǒng)分析與設(shè)計(jì)第2版ZhenyanJi73靜態(tài)結(jié)構(gòu)模型(4)類(lèi)Title的屬性和操作。類(lèi)Title描述了書(shū)目信息。對(duì)于每種書(shū)目(Title對(duì)象)來(lái)說(shuō),圖書(shū)館通常擁有多個(gè)物理拷貝(Book對(duì)象)。類(lèi)Title封裝了書(shū)刊名、作者、ISBN/ISSN號(hào)等信息,它可以沒(méi)有預(yù)訂記錄或有多個(gè)預(yù)訂記錄(Reservation對(duì)象)。類(lèi)Title繼承了類(lèi)Persistent,并實(shí)現(xiàn)了讀寫(xiě)操作,所以類(lèi)Title的所有對(duì)象都是持久的。UML系統(tǒng)分析與設(shè)計(jì)第2版ZhenyanJi74靜態(tài)結(jié)構(gòu)模型(5)類(lèi)Book的屬性和操作。類(lèi)Book代表可以借閱的物理書(shū)刊。類(lèi)Book的對(duì)象有兩個(gè)狀態(tài),即“已借出”或“未借出”。類(lèi)Book的對(duì)象總是與一個(gè)Title對(duì)象對(duì)應(yīng)。之所以區(qū)分類(lèi)Book和類(lèi)Title,是因?yàn)榻栝喺哳A(yù)訂書(shū)刊時(shí)只是預(yù)訂了某種書(shū)刊,而不是這種書(shū)刊的特定物理拷貝,圖書(shū)館對(duì)同一種書(shū)刊通常保存幾本物理拷貝(每本拷貝都可以被一個(gè)借閱者借出)。每個(gè)物理書(shū)刊都有一個(gè)獨(dú)一無(wú)二的id號(hào),這個(gè)id號(hào)被標(biāo)記在書(shū)上,用來(lái)唯一地標(biāo)識(shí)圖書(shū)館中的物理書(shū)刊,且同一種類(lèi)的不同物理書(shū)刊拷貝可通過(guò)id號(hào)來(lái)區(qū)分。類(lèi)Book繼承了類(lèi)Persistent并實(shí)現(xiàn)了讀寫(xiě)操作,所以類(lèi)Book的所有對(duì)象都是持久的。UML系統(tǒng)分析與設(shè)計(jì)第2版ZhenyanJi75靜態(tài)結(jié)構(gòu)模型(6)類(lèi)Loan的屬性和操作。類(lèi)Loan描述了借閱者從圖書(shū)館借閱物理書(shū)刊的借閱記錄。一個(gè)Loan對(duì)象對(duì)應(yīng)著一個(gè)借閱者(Borrower對(duì)象)和一個(gè)物理書(shū)刊(Book對(duì)象)。Loan對(duì)象的存在表示借閱者(Borrower對(duì)象)借閱了借閱記錄(Loan對(duì)象)中記錄的物理書(shū)刊(Book對(duì)象)。當(dāng)物理書(shū)刊(Book對(duì)象)被還回時(shí),要?jiǎng)h除借閱記錄(Loan對(duì)象)。類(lèi)Loan繼承了類(lèi)Persistent并實(shí)現(xiàn)了讀寫(xiě)操作,所以類(lèi)Loan的所有對(duì)象都是持久的。UML系統(tǒng)分析與設(shè)計(jì)第2版ZhenyanJi76靜態(tài)結(jié)構(gòu)模型(7)類(lèi)Reservation的屬性和操作。如果某書(shū)目(Title對(duì)象)的所有可借物理拷貝(Book對(duì)象)都已借出,則需要該書(shū)目的借閱者就需要預(yù)訂,當(dāng)該書(shū)目的某個(gè)物理拷貝(Book對(duì)象)被還回時(shí),預(yù)訂該書(shū)目(Title對(duì)象)的借閱者就可以?xún)?yōu)先借閱該物理拷貝(Book對(duì)象)。一種書(shū)刊(Title對(duì)象)可以被不同的借閱者(Borrower對(duì)象)預(yù)訂。當(dāng)預(yù)訂生效時(shí),系統(tǒng)要保存預(yù)訂記錄。類(lèi)Reservation就是描述預(yù)訂記錄的類(lèi)。當(dāng)預(yù)訂的借閱者獲得書(shū)刊物理拷貝時(shí)(Book對(duì)象),預(yù)訂記錄(Reservation對(duì)象)要被刪除。類(lèi)Reservation繼承了類(lèi)Persistent并實(shí)現(xiàn)了讀寫(xiě)操作,所以類(lèi)Reservation的所有對(duì)象都是持久的。UML系統(tǒng)分析與設(shè)計(jì)第2版ZhenyanJi77靜態(tài)結(jié)構(gòu)模型定義用戶(hù)界面類(lèi)(1)類(lèi)MainWindow。界面類(lèi)MainWindow是系統(tǒng)的主界面,系統(tǒng)的主界面具有菜單和菜單項(xiàng),當(dāng)用戶(hù)選擇不同的菜單項(xiàng)時(shí),系統(tǒng)可以執(zhí)行不同的操作。當(dāng)程序退出時(shí),主界面窗口關(guān)閉。(2)類(lèi)BorrowerDialog。界面類(lèi)BorrowerDialog是進(jìn)行操作“添加借閱者”、“修改借閱者”或“刪除借閱者”時(shí)所需的對(duì)話框。UML系統(tǒng)分析與設(shè)計(jì)第2版ZhenyanJi78靜態(tài)結(jié)構(gòu)模型定義用戶(hù)界面類(lèi)(3)類(lèi)FindBwrDialog。界面類(lèi)FindBwrDialog是根據(jù)借閱者ID號(hào)查找借閱者的對(duì)話框。當(dāng)主窗口中的菜單項(xiàng)“刪除借閱者”或“修改借閱者”被選擇時(shí),該對(duì)話框彈出,圖書(shū)管理員輸入借閱者ID,單擊“OK”按鈕,則系統(tǒng)查詢(xún)數(shù)據(jù)庫(kù)中具有指定ID號(hào)的借閱者信息。(4)類(lèi)TitleDialog。界面類(lèi)TitleDialog是進(jìn)行操作“添加書(shū)目”、“修改書(shū)目”或“刪除書(shū)目”時(shí)所需的對(duì)話框。UML系統(tǒng)分析與設(shè)計(jì)第2版ZhenyanJi79靜態(tài)結(jié)構(gòu)模型定義用戶(hù)界面類(lèi)(5)類(lèi)FindTDialog。界面類(lèi)FindTDialog是根據(jù)書(shū)目的ISBN/ISSN信息來(lái)查找相應(yīng)書(shū)目的對(duì)話框。當(dāng)主窗口中的菜單項(xiàng)“刪除書(shū)目”或“修改書(shū)目”被選擇時(shí),該對(duì)話框彈出,圖書(shū)管理員輸入書(shū)目的ISBN/ISSN信息,單擊“OK”按鈕,系統(tǒng)將查詢(xún)數(shù)據(jù)庫(kù)中具有指定ISBN/ISSN號(hào)的Title信息。(6)類(lèi)BorrowDialog。界面類(lèi)BorrowDialog是進(jìn)行“借閱”操作時(shí)所需的對(duì)話框。當(dāng)主窗口中的菜單項(xiàng)“借閱”被選擇時(shí),該對(duì)話框彈出,圖書(shū)管理員輸入書(shū)刊名、書(shū)刊的ISBN/ISSN信息和借閱者信息,然后單擊“OK”按鈕,借閱動(dòng)作被確認(rèn),系統(tǒng)創(chuàng)建并保存借閱記錄。UML系統(tǒng)分析與設(shè)計(jì)第2版ZhenyanJi80靜態(tài)結(jié)構(gòu)模型定義用戶(hù)界面類(lèi)(7)類(lèi)ReturnDialog。界面類(lèi)ReturnDialog是進(jìn)行“還書(shū)”操作時(shí)所需的對(duì)話框。(8)類(lèi)RsvDialog。界面類(lèi)RsvDialog是進(jìn)行操作“預(yù)訂”或“取消預(yù)訂”時(shí)所需的對(duì)話框。(9)類(lèi)MessageWindow。界面類(lèi)MessageWindow是用來(lái)顯示提示信息的窗口。(10)類(lèi)LoginDialog。界面類(lèi)LoginDialog是用來(lái)輸入用戶(hù)名和密碼的對(duì)話框。UML系統(tǒng)分析與設(shè)計(jì)第2版ZhenyanJi81靜態(tài)結(jié)構(gòu)模型系統(tǒng)包圖UML系統(tǒng)分析與設(shè)計(jì)第2版ZhenyanJi82靜態(tài)結(jié)構(gòu)模型用戶(hù)界面類(lèi)的類(lèi)圖UML系統(tǒng)分析與設(shè)計(jì)第2版ZhenyanJi83靜態(tài)結(jié)構(gòu)模型實(shí)體類(lèi)的類(lèi)圖UML系統(tǒng)分析與設(shè)計(jì)第2版ZhenyanJi84動(dòng)態(tài)行為模型建立交互作用圖添加借閱者“添加借閱者”的過(guò)程是,圖書(shū)管理員首先選擇菜單項(xiàng)“添加借閱者”,對(duì)話框彈出,圖書(shū)管理員輸入借閱者信息,然后提交,系統(tǒng)根據(jù)借閱者ID號(hào)查詢(xún)數(shù)據(jù)庫(kù),看數(shù)據(jù)庫(kù)中是否已存在借閱者,若不存在,創(chuàng)建借閱者賬戶(hù),并存儲(chǔ)借閱者信息。UML系統(tǒng)分析與設(shè)計(jì)第2版ZhenyanJi85“添加借閱者”順序圖UML系統(tǒng)分析與設(shè)計(jì)第2版ZhenyanJi86動(dòng)態(tài)行為模型建立交互作用圖(2)刪除借閱者?!皠h除借閱者”的過(guò)程是,圖書(shū)管理員首先選擇菜單項(xiàng)“刪除借閱者”,查詢(xún)對(duì)話框彈出,然后輸入待刪除的借閱者ID號(hào),系統(tǒng)查詢(xún)數(shù)據(jù)庫(kù),顯示借閱者信息(若借閱者信息不存在,顯示提示信息,結(jié)束刪除動(dòng)作),按下刪除按鈕,系統(tǒng)確定是否存在與該借閱者相關(guān)的借閱記錄(若有,給出提示信息,結(jié)束刪除動(dòng)作;若沒(méi)有,查詢(xún)是否存在與該借閱者相關(guān)的預(yù)訂記錄,若存在,刪除預(yù)訂記錄),最后從系統(tǒng)中刪除借閱者。UML系統(tǒng)分析與設(shè)計(jì)第2版ZhenyanJi87“刪除借閱者”順序圖UML系統(tǒng)分析與設(shè)計(jì)第2版ZhenyanJi88動(dòng)態(tài)行為模型建立交互作用圖(3)添加書(shū)目?!疤砑訒?shū)目”的過(guò)程是,圖書(shū)管理員首先選擇菜單項(xiàng)“添加書(shū)目”,對(duì)話框彈出,然后輸入書(shū)刊名、ISBN/ISSN號(hào)、作者等信息,提交信息,系統(tǒng)根據(jù)ISBN/ISSN號(hào)查詢(xún)書(shū)種信息是否已存在,若存在,顯示提示信息,終止操作;若不存在,創(chuàng)建書(shū)目,并存儲(chǔ)書(shū)目信息。UML系統(tǒng)分析與設(shè)計(jì)第2版ZhenyanJi89“添加書(shū)目”順序圖UML系統(tǒng)分析與設(shè)計(jì)第2版ZhenyanJi90動(dòng)態(tài)行為模型建立交互作用圖(4)刪除書(shū)目?!皠h除書(shū)目”的過(guò)程是,圖書(shū)管理員首先選擇菜單項(xiàng)“刪除書(shū)目”,對(duì)話框彈出,然后輸入書(shū)刊的ISBN/ISSN號(hào),提交信息。系統(tǒng)查詢(xún)數(shù)據(jù)庫(kù),顯示書(shū)目信息(若書(shū)目信息不存在,給出提示信息,結(jié)束刪除動(dòng)作)。查詢(xún)物理書(shū)刊是否有借出,若有,給出提示信息,結(jié)束刪除動(dòng)作;若沒(méi)有,刪除物理書(shū)刊信息。查詢(xún)是否有預(yù)訂記錄,若有,刪除預(yù)訂記錄并通知借閱者;若沒(méi)有,確認(rèn)之后刪除書(shū)目。UML系統(tǒng)分析與設(shè)計(jì)第2版ZhenyanJi91“刪除書(shū)目”順序圖UML系統(tǒng)分析與設(shè)計(jì)第2版ZhenyanJi92動(dòng)態(tài)行為模型建立交互作用圖(5)添加物理書(shū)刊?!疤砑游锢頃?shū)刊”的過(guò)程是,圖書(shū)管理員首先選擇菜單項(xiàng)“添加物理書(shū)刊”,對(duì)話框彈出,然后輸入書(shū)刊的ISBN/ISSN號(hào),提交信息。系統(tǒng)查詢(xún)數(shù)據(jù)庫(kù),顯示書(shū)刊信息,圖書(shū)管理員添加物理書(shū)刊,單擊按鈕確認(rèn)添加,系統(tǒng)創(chuàng)建并存儲(chǔ)物理書(shū)刊對(duì)象。最后將物理書(shū)刊添加到書(shū)目中,更新書(shū)目信息。UML系統(tǒng)分析與設(shè)計(jì)第2版ZhenyanJi93“添加物理書(shū)刊”順序圖UML系統(tǒng)分析與設(shè)計(jì)第2版ZhenyanJi94動(dòng)態(tài)行為模型建立交互作用圖(6)刪除物理書(shū)刊?!皠h除物理書(shū)刊”的過(guò)程是,圖書(shū)管理員首先選擇菜單項(xiàng)“刪除物理書(shū)刊”,對(duì)話框彈出,然后輸入書(shū)刊的ISBN/ISSN號(hào)并提交。系統(tǒng)查詢(xún)數(shù)據(jù)庫(kù),顯示書(shū)刊信息,圖書(shū)管理員從物理書(shū)刊列表中刪除物理書(shū)刊,單擊“確認(rèn)”按鈕刪除,系統(tǒng)刪除物理書(shū)刊對(duì)象,并從書(shū)目信息中刪除物理書(shū)刊,最后更新書(shū)目信息。UML系統(tǒng)分析與設(shè)計(jì)第2版ZhenyanJi95“刪除物理書(shū)刊”順序圖UML系統(tǒng)分析與設(shè)計(jì)第2版ZhenyanJi96動(dòng)態(tài)行為模型建立交互作用圖(7)預(yù)訂書(shū)刊?!邦A(yù)訂書(shū)刊”的過(guò)程是,圖書(shū)管理員首先選擇菜單項(xiàng)“預(yù)訂書(shū)刊”,對(duì)話框彈出,然后輸入書(shū)刊和借閱者的信息并提交。系統(tǒng)查詢(xún)數(shù)據(jù)庫(kù),確定該書(shū)目是否存在,若存在,確定借閱者是否有效;若不存在,則顯示提示信息,圖書(shū)管理員重新輸入書(shū)刊信息或終止預(yù)訂操作。若借閱者有效,創(chuàng)建并存儲(chǔ)預(yù)訂記錄,并將預(yù)訂記錄添加到相應(yīng)的借閱者和書(shū)目信息中;若借閱者無(wú)效,則顯示提示信息,圖書(shū)管理員重新輸入借閱者信息或終止預(yù)訂操作。UML系統(tǒng)分析與設(shè)計(jì)第2版ZhenyanJi97“預(yù)定圖書(shū)”順序圖UML系統(tǒng)分析與設(shè)計(jì)第2版ZhenyanJi98動(dòng)態(tài)行為模型建立交互作用圖(8)取消預(yù)訂?!叭∠A(yù)訂”的過(guò)程是,圖書(shū)管理員首先選擇菜單項(xiàng)“取消預(yù)訂”,對(duì)話框彈出,然后輸入書(shū)刊和借閱者的信息并提交。系統(tǒng)查詢(xún)數(shù)據(jù)庫(kù),確定該書(shū)目是否存在,若存在(若不存在,則顯示提示信息,圖書(shū)管理員重新輸入書(shū)刊信息或終止“取消預(yù)訂”操作),確定借閱者是否有效,若有效(若無(wú)效,則顯示提示信息,圖書(shū)管理員重新輸入借閱者信息或終止“取消預(yù)訂”操作),確定預(yù)訂記錄是否存在,若存在(若不存在,則顯示提示信息,
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 校園安全與風(fēng)險(xiǎn)管理方案計(jì)劃
- 幼兒園中班教案《貓》
- 陜西省高考語(yǔ)文模擬分類(lèi)匯編文學(xué)類(lèi)文本專(zhuān)題我對(duì)黑暗的柔情
- 無(wú)線入侵式電燈課程設(shè)計(jì)
- 春節(jié)風(fēng)俗隨筆
- 特殊時(shí)期短暫課程設(shè)計(jì)
- 液壓鉆鏜床課程設(shè)計(jì)
- 文明禮儀廣播稿范文300字(17篇)
- 2024年度汽車(chē)后市場(chǎng)廣告代理承包居間服務(wù)合同3篇
- 怎么寫(xiě)公司效率總結(jié)范文
- 部編版八年級(jí)語(yǔ)文下冊(cè)《燈籠》評(píng)課稿
- 紅棉研學(xué)100題(訓(xùn)練題)
- 論群團(tuán)組織在助推企業(yè)發(fā)展的作用發(fā)揮
- 催化材料智慧樹(shù)知到答案章節(jié)測(cè)試2023年南開(kāi)大學(xué)
- 牙隱裂牙隱裂
- 辦公樓裝飾裝修改造工程施工組織設(shè)計(jì)方案
- 三色鴿食品廠降壓變電所的電氣設(shè)計(jì)
- GB/T 9944-2015不銹鋼絲繩
- GB/T 6680-2003液體化工產(chǎn)品采樣通則
- GA/T 1567-2019城市道路交通隔離欄設(shè)置指南
- 中興通訊學(xué)院
評(píng)論
0/150
提交評(píng)論