曝光臺(tái) 注意防騙
網(wǎng)曝天貓店富美金盛家居專營(yíng)店坑蒙拐騙欺詐消費(fèi)者
個(gè)示意圖以不同的形式提供給不同的聽眾。
步驟2是將你的對(duì)象類型組織到類型層次中。
3. 尋找關(guān)系
既然已經(jīng)命名了對(duì)象類型,靜態(tài)信息建模的下一步工作是確定對(duì)象類型之間的關(guān)系。
我們最好從幾個(gè)英語句子開始:
• A customer books one or more holidays(一個(gè)客戶可以預(yù)訂一個(gè)或多個(gè)假期)
• Each holiday involves one or more travelers(每個(gè)假期包含一個(gè)或多個(gè)旅游者)
• Each holiday involves zero or more journeys(每個(gè)假期包含零個(gè)或多個(gè)旅行)
• Each holiday involves one or more accommodation-bookings(每個(gè)假期包含一個(gè)或多個(gè)食
宿預(yù)訂)
• Each accommodation-booking is at one hotel(每個(gè)食宿預(yù)訂是位于一個(gè)旅館的)
這些關(guān)系( U M L將之稱為關(guān)聯(lián))可以用示意圖來表示(如圖4 - 2所示)。我們可以通過多種
不同的表示法描述這些對(duì)象關(guān)系,每種方法各具特色。在本章中,我們將使用U M L表示法,因
為它已經(jīng)被I T界廣泛接受,雖然我發(fā)現(xiàn)有時(shí)與用戶交流時(shí),最好使用更加自然的方式,例如:
采用比較通俗的方式說明某個(gè)關(guān)系是一對(duì)多的。就我個(gè)人而言,我喜歡將示意圖做得盡量簡(jiǎn)單
和直接,將主要精力集中于關(guān)鍵的信息,而將細(xì)節(jié)
留給文本文檔,因?yàn)樗鼈儽仁疽鈭D更易于維護(hù)。無
論如何,細(xì)化到哪種程度比較合適取決于項(xiàng)目本身:
如果你只有三個(gè)月的時(shí)間建立We b站點(diǎn),就無法為
數(shù)據(jù)模型中的所有對(duì)象類型構(gòu)造詳細(xì)的定義,即使
你通過艱苦的努力完成了,也沒有人有時(shí)間讀它們,
更不用說不斷更新了。
對(duì)于每種關(guān)系,必須掌握以下基本點(diǎn):
關(guān)系中的元組數(shù)說明了它能夠包含的每種對(duì)象
的數(shù)目:
• 最常見的是一對(duì)多關(guān)系:一章可以有多個(gè)段
落,一個(gè)人可以參加多個(gè)假期,一本書可以有
多個(gè)版本,一個(gè)訂單可以包含多個(gè)訂購(gòu)項(xiàng)。在
上面的示意圖中,我們將大多數(shù)一對(duì)多關(guān)系標(biāo)
記為一端只有一個(gè)對(duì)象( 1 . . 1意味著至少一個(gè),
至多一個(gè)),另一端可以有0至n個(gè)對(duì)象。在有
些情況下,使用“ 1 . . n”更有意義;例如:如
果一個(gè)旅游勝地沒有旅館,就不能稱之為旅游勝地,因此在旅館一端使用“ 1 . . n”表示。
第4章數(shù)據(jù)建模與XML使用85 下載
圖4-2
客戶
假期旅游者
旅行游覽
公司旅館
旅游勝地
• 另外還有多對(duì)多關(guān)系:一個(gè)作者可以寫幾本書,而且一本書也可以有幾個(gè)作者。在上面的
示意圖中也存在這種關(guān)系:幾個(gè)旅游者可以在同一假期中一起旅游,而且每個(gè)旅游者也可
以參加幾個(gè)假期(企業(yè)旅游公司可能要跟蹤這種情況)。對(duì)于多對(duì)多關(guān)系,通常要將每一
對(duì)作為一個(gè)對(duì)象來命名:我們將由一個(gè)假期和一個(gè)旅館組成的對(duì)稱為一次游覽( v i s i t)。之
所以采用這種方式,是因?yàn)樗沟媚隳軌蛴械胤椒胖脤儆谶@種關(guān)系而不是任何一個(gè)對(duì)象的
特性,例如:每個(gè)游覽都有與它相關(guān)的日期和房間號(hào)。
• 一對(duì)一關(guān)系不太常見:這種關(guān)系的例子有人和工作的關(guān)系,一個(gè)人在任何時(shí)刻只能有一份
工作,工作只能由一個(gè)人完成。
在為最終的X M L表示建立信息模型的過程中,有一類關(guān)系特別重要——包含關(guān)系。它總是
一對(duì)多或一對(duì)一的。包含關(guān)系的確切構(gòu)成沒有一定之規(guī),不過我們可以從英語的句法中得到啟
迪:章包含段落;旅游勝地包含旅館;旅館包含旅游者。U M L定義了兩種形式的包含:聚合
(a g g r e g a t i o n)和構(gòu)成( c o m p o s i t i o n),聚合是相對(duì)松散的對(duì)象組合,它使得一組事物能夠暫時(shí)
被視作一個(gè)整體(例如:一個(gè)旅行團(tuán),某個(gè)人可能在不同的時(shí)刻屬于不同的旅行團(tuán));構(gòu)成是
一種更強(qiáng)的關(guān)系,其中的各個(gè)組成部分不能獨(dú)立存在(例如:旅館中的房間不能獨(dú)立于旅館而
單獨(dú)存在)。在U M L中,聚合關(guān)系的聚合端用菱形表示。
我們還可以延伸聚合的概念:一個(gè)假期包含幾次飛行;一個(gè)時(shí)間安排包含多個(gè)事件;一個(gè)
電話服務(wù)包含幾個(gè)產(chǎn)品。但是此時(shí)我們需要格外謹(jǐn)慎,因?yàn)槲覀兒苋菀缀雎砸粋(gè)事實(shí)—這些
關(guān)系實(shí)際上是多對(duì)多的關(guān)系,我們有時(shí)會(huì)將它們誤認(rèn)為是一對(duì)多的。例如,許多時(shí)間安排能夠
包含相同的事件。雖然概念可以擴(kuò)展,但是最好確保每個(gè)對(duì)象“僅包含在”另一個(gè)對(duì)象中:這
與我們對(duì)“包含”一詞的直觀理解相吻合,而且也符合X M L的數(shù)據(jù)模型,雖然X M L的數(shù)據(jù)模型
能夠表達(dá)任意鏈接,但是它主要用于說明層次型結(jié)構(gòu)。為了明確這一點(diǎn),每當(dāng)你在關(guān)系圖中看
到菱形時(shí),在X M L中應(yīng)該將它模型化為包含的元素和重復(fù)的子元素,因此對(duì)于我們的例子,可
以有以下X M L結(jié)構(gòu):
程序清單4 - 1
86使用XML 高級(jí)編程
下載
為關(guān)系尋找合適的名稱通常是非常棘手的:這可不是英語語言所擅長(zhǎng)的。最終你常常會(huì)使
用i n c l u d e(包含)、u s e(使用)或h a s(有)等不確定的名稱。更糟糕的是,根據(jù)你看待關(guān)系的
角度,關(guān)系一般會(huì)有不同的名稱。在描述關(guān)系時(shí),最好使用完整的短語,例如: hotel is-locatedin
resort(旅館位于旅游勝地中),person is-an-author-of book(人是書的作者)。幸運(yùn)的是,我
們不必將關(guān)系的名稱作為X M L標(biāo)記:它們僅僅出現(xiàn)在系統(tǒng)文檔中。因此,我們無需在示意圖中
標(biāo)明關(guān)系的名稱。
在第3步的結(jié)尾,我們已經(jīng)定義了模型中對(duì)象類型之間現(xiàn)有的關(guān)系。
4. 定義特性
對(duì)象類型和關(guān)系構(gòu)成了靜態(tài)信息模型的骨架;特性的作用是在骨架上增加血肉。特性是與
對(duì)象相關(guān)聯(lián)的值。一個(gè)人有身高、體重、國(guó)籍和職業(yè);一個(gè)旅館有若干房間、一個(gè)被評(píng)定的星
級(jí)和一個(gè)價(jià)目表。
在對(duì)象的特性列表中,不需要再次包含關(guān)系:如果我們已經(jīng)建立了旅館與旅游勝地的關(guān)系,
就不必將“位置”作為旅館的特性。
對(duì)于特性,最重要的是數(shù)據(jù)類型。是否要在固定范圍內(nèi)取值,它是數(shù)字嗎,它的單位是什
么?它是可選的還是必需的,是否有缺省值?
中國(guó)航空網(wǎng) www.k6050.com
航空翻譯 www.aviation.cn
本文鏈接地址:
XML高級(jí)編程上(36)