




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
PowerDesigner基礎(chǔ)入門PowerDesignerUML建模簡(jiǎn)介引言
PowerDesigner支持UML1.3的所有圖包括用例圖、序列圖和類圖、活動(dòng)圖表和組件圖表等,并全面支持UML2.0。改進(jìn)了面向?qū)ο蠓治雠c設(shè)計(jì)(OOAD)分析方法并增強(qiáng)了與開發(fā)過程的集成。PowerDesigner能夠幫助您構(gòu)建適應(yīng)現(xiàn)代IT發(fā)展的傳統(tǒng)商務(wù)和電子商務(wù)系統(tǒng),使用Java等面向?qū)ο蟮恼Z言以及XML等新技術(shù),以物理或虛擬的方式與我們的數(shù)據(jù)庫技術(shù)合并。我們的目標(biāo)是根據(jù)您的需求,提供隨時(shí)隨地訪問信息、控制業(yè)務(wù)流程的能力,并通過計(jì)算機(jī)和最新技術(shù)賦予企業(yè)在當(dāng)今任何市場(chǎng)上先拔頭籌的競(jìng)爭(zhēng)優(yōu)勢(shì)。我們的分析方法和設(shè)計(jì)技術(shù)將會(huì)是多種多樣的,從業(yè)務(wù)流程建模,到UML面向?qū)ο蠓治龊驮O(shè)計(jì),以及傳統(tǒng)的關(guān)系建模等。本文將幫助您深入了解UML這項(xiàng)強(qiáng)大的技術(shù),它可以幫助您的企業(yè)創(chuàng)建出高效的傳統(tǒng)商務(wù)和電子商務(wù)系統(tǒng)。面向?qū)ο蟮姆治鲈谀鷾?zhǔn)備為企業(yè)作出系統(tǒng)和軟件投資前,必須首先了解企業(yè)的實(shí)際需求,明確所部署的技術(shù)將如何幫助您的企業(yè)獲取更大的成功。您可以使用UML,借助用例圖、序列圖和活動(dòng)圖來進(jìn)行分析。這些圖表將幫助您規(guī)劃系統(tǒng)的范圍、動(dòng)態(tài)性能、以及表現(xiàn)方式等。不必考慮實(shí)施細(xì)節(jié),您希望獲得的只是按照您的需求而表現(xiàn)的系統(tǒng)性能用例圖(TheUseCaseDiagram)UML用例圖提供了一個(gè)系統(tǒng)環(huán)境的建模方式。它能夠幫助您確定系統(tǒng)/應(yīng)用程序的外部和內(nèi)部元素以及系統(tǒng)范圍。作為圖形建模模式,它在您需要與所收集的系統(tǒng)需求進(jìn)行對(duì)話時(shí)也將有所幫助,對(duì)于研制成品的開發(fā)團(tuán)隊(duì)來說,更是有著舉足輕重的重要性。對(duì)于企業(yè)的所有者,或第一次接觸該軟件產(chǎn)品的用戶也有很大的幫助作用。用例圖能夠以可視化的方式,表達(dá)系統(tǒng)如何滿足所收集的業(yè)務(wù)規(guī)則,以及特定的用戶需求等信息。在項(xiàng)目后期,也能夠用到UML用例圖。您可以通過用例圖中定義的需求來協(xié)助測(cè)試項(xiàng)目的相關(guān)功能。您不僅可以驗(yàn)證系統(tǒng)性能是否無錯(cuò)誤(無崩潰或明顯的非邏輯響應(yīng)),還可以驗(yàn)證系統(tǒng)運(yùn)行時(shí)是否按照要求,執(zhí)行了指定命令。這樣,您可以測(cè)試系統(tǒng)是否完全滿足了要求,以確信成品可以投入生產(chǎn)——也就是說,它已完全滿足了用戶的需求。只有確保滿足了合理、實(shí)用的各項(xiàng)需求,才能確保IT項(xiàng)目的更大成功。序列圖(TheSequenceDiagram)您可以使用UML序列圖細(xì)化需求并對(duì)設(shè)計(jì)元素進(jìn)行鏈接。序列圖允許高層和低層對(duì)象間的交互文檔。該交互在角色(與用例圖中的角色相同)和類實(shí)例(運(yùn)行于計(jì)算機(jī)內(nèi)存中的技術(shù)對(duì)象和細(xì)節(jié)對(duì)象)之間顯示。通過序列圖,您可以按照系統(tǒng)特定方案中事件(消息)的精確順序來描述隨時(shí)間變化的系統(tǒng)行為。使用序列圖進(jìn)行用例分析并引導(dǎo)設(shè)計(jì):您可以決定將對(duì)用例圖所定義的管理任務(wù)負(fù)責(zé)的系統(tǒng)對(duì)象類型,并決定哪種對(duì)象將管理系統(tǒng)內(nèi)外的“會(huì)話”或通信。由于消息已從序列圖中抽出,您可以描述類和接口(我們最后要編譯和部署的代碼元素)所需的某些關(guān)鍵操作(方法)?;顒?dòng)圖(TheActivityDiagram)UML活動(dòng)圖設(shè)計(jì)用于幫助您了解系統(tǒng)中對(duì)象的動(dòng)態(tài)變化。用于描述某一特定類或一組類如何協(xié)同工作。與序列圖有所不同,活動(dòng)圖不是一系列與時(shí)間相關(guān)的通信,而是從一個(gè)任務(wù)到另一任務(wù)的控制轉(zhuǎn)移,同時(shí)指定誰(哪個(gè)對(duì)象)對(duì)發(fā)生的任務(wù)負(fù)責(zé)。UML活動(dòng)圖也是業(yè)務(wù)流程的技術(shù)視圖??蓪?duì)業(yè)務(wù)工作流進(jìn)行分析或在“業(yè)務(wù)流程建模”工作后可獲得活動(dòng)圖?;顒?dòng)圖還可幫助構(gòu)造系統(tǒng)內(nèi)元素的詳細(xì)動(dòng)態(tài)視圖(EJB如何互操作等)。通過分析推動(dòng)設(shè)計(jì)通過分析模型可捕獲獨(dú)立于實(shí)施細(xì)節(jié)之外的系統(tǒng)意向和預(yù)期行為,與使用的語言、部署的應(yīng)用程序服務(wù)器或使用的體系結(jié)構(gòu)都沒有關(guān)系。但是,設(shè)計(jì)階段開始后,一切都發(fā)生了變化。您必須進(jìn)入生產(chǎn)環(huán)境的細(xì)節(jié)并將軟件構(gòu)建至特定的體系結(jié)構(gòu)。設(shè)計(jì)是對(duì)系統(tǒng)的實(shí)施。如果設(shè)計(jì)是由分析得到的,您可以更加確信所編寫的系統(tǒng)行為的正確性,確認(rèn)所開發(fā)的成果將是一個(gè)按需求構(gòu)建的系統(tǒng)。您將獲得高度成功——讓用戶得到所需要的系統(tǒng)。您還可以直接利用分析得出的信息而無需在設(shè)計(jì)過程中重新生成,從而縮減開發(fā)時(shí)間,由于不必“重新復(fù)制”任何工作,因此減少了人為錯(cuò)誤。通過分析,我們可獲得什么呢?通過用例圖可以發(fā)現(xiàn)對(duì)象并促進(jìn)類和接口的創(chuàng)建。一個(gè)或更多類和接口可以實(shí)現(xiàn)一個(gè)角色,您可以在角色定義中直接創(chuàng)建類和接口。您還可以將角色鏈接到現(xiàn)有的類和接口,顯示如何使用一條代碼來滿足所分析的多個(gè)元素。通過序列圖可以發(fā)現(xiàn)方法并促進(jìn)類操作的創(chuàng)建。如果您需要向類發(fā)送消息,您可以調(diào)用該類的方法。序列圖中的消息可以用來自動(dòng)創(chuàng)建操作或鏈接到現(xiàn)有操作。您可以通過鏈接跟蹤方法的功能,包括將哪些作為輸入內(nèi)容和必須返回哪些內(nèi)容等等。設(shè)計(jì)所包含的內(nèi)容您已經(jīng)知道要構(gòu)建的內(nèi)容,現(xiàn)在您需要表述如何構(gòu)建。您需要確定業(yè)務(wù)邏輯所在的位置:可以置于應(yīng)用程序服務(wù)器的EJB等組件中,也可以置于使用VB或PowerBuilder等語言、作為客戶端應(yīng)用程序一部分的類或組件中,或者做為觸發(fā)器和過程內(nèi)置于關(guān)系數(shù)據(jù)庫中。您需要根據(jù)需求做出一些選擇,包括擴(kuò)展性、安全、性能和可訪問性等方面。UML類圖和組件圖將用于定義詳細(xì)的技術(shù)系統(tǒng)靜態(tài)結(jié)構(gòu)。類圖(TheClassDiagram)UML類圖、業(yè)務(wù)邏輯和所有支持結(jié)構(gòu)一同被用于定義全部的代碼結(jié)構(gòu)。既然類圖用來模擬開發(fā)中所維護(hù)的實(shí)際代碼,顯然它是Java或PowerBuilder等對(duì)象語言的概括性表述。您還可以使用UML類圖來概括XML中的復(fù)雜結(jié)構(gòu),令其更易于開發(fā)和理解。可以從UML類圖上生成代碼。還可以在開發(fā)過程中編輯該代碼以完善、測(cè)試和部署最終運(yùn)行的應(yīng)用程序。由于PowerDesigner在對(duì)象語言和UML類圖之間具有1:1的映射功能,您還可以實(shí)施反向工程代碼,讀取源文件并創(chuàng)建新的類圖。您可以更深入地理解現(xiàn)有系統(tǒng)并簡(jiǎn)化集成和維護(hù)工作。組件圖(TheComponentDiagram)UML組件圖將被用于在更大的黑匣視圖(BlackBoxView)中描述高級(jí)對(duì)象的定義和相關(guān)性。它仍然是一個(gè)設(shè)計(jì)模型,并且是代碼的直接概括。例如,一個(gè)EJB的組件標(biāo)識(shí)直接鏈接到實(shí)施所必需的一系列類和接口,并將生成所需代碼來推動(dòng)最終bean的開發(fā)。組件圖比組件體系結(jié)構(gòu)的代碼層視圖更容易理解和管理。還可以通過編寫組件接口的文檔來實(shí)現(xiàn)代碼的共享和反復(fù)使用,用戶無需(或很少)了解組件的實(shí)施細(xì)節(jié)即可在其他項(xiàng)目和系統(tǒng)中使用這些代碼。右擊CustomerEntityBean_CMP,選擇Create/UpdateClassDiagram,生成如下classdiagram:循環(huán)疊代工程世界不是一成不變的,您的IT項(xiàng)目也如此。在您了解需求,通過分析進(jìn)行了設(shè)計(jì),并構(gòu)建了系統(tǒng)的某些元素后,必然還會(huì)遇到新的變化,如要更新定義,又或者現(xiàn)有用例圖中存在某些需要改正的錯(cuò)誤,代碼在IDE和文本編輯器中被編輯以及數(shù)據(jù)庫被DBA優(yōu)化等。必須管理和掌握所有需要更改的細(xì)節(jié),以確保所構(gòu)建的系統(tǒng)能夠與業(yè)務(wù)需求保持一致。往返工程的一個(gè)方案是當(dāng)代碼在開發(fā)過程中被更改時(shí),需要在類圖中反映出來。具體細(xì)節(jié)如下:
1.創(chuàng)建類圖并將業(yè)務(wù)邏輯元素添加到模型中2.生成文件系統(tǒng)的應(yīng)用程序代碼3.在IDE或文本編輯器中編輯代碼4.編輯設(shè)計(jì),此時(shí)忽略在生成的代碼中所發(fā)生的更改5.對(duì)編輯內(nèi)容實(shí)施反向工程,直到與現(xiàn)有類圖一致6.將設(shè)計(jì)過程中完成的工作與開發(fā)時(shí)編輯的內(nèi)容同步(合并)7.生成新代碼,該代碼是設(shè)計(jì)代碼和開發(fā)人員更改代碼的總和當(dāng)對(duì)類圖進(jìn)行了修改以反映新的設(shè)計(jì)內(nèi)容時(shí),應(yīng)該使用同步/合并技術(shù)防止丟失開發(fā)人員的工作成果,同時(shí)允許設(shè)計(jì)人員接受或拒絕開發(fā)過程中所做的更改。這樣,PowerDesigner令I(lǐng)T能夠完全控制體系結(jié)構(gòu),這正是制勝的關(guān)鍵。PowerDesigner的功能并不是僅限于此!現(xiàn)在設(shè)計(jì)模型已被更新,您可以將這些更改鏈接到分析中。有可能您在分析中發(fā)現(xiàn)了新的需求,可以將這一更改反映到設(shè)計(jì)中并編寫代碼。使用PowerDesigner中領(lǐng)先的Compare/Merge技術(shù)(在SeptemberBlueprint中討論過),您可以在開發(fā)周期的所有模型和階段中獲得真正的往返同步。對(duì)象圖(ObjectDiagram)與類圖一樣,對(duì)象圖也是一個(gè)UML靜態(tài)結(jié)構(gòu)圖;它定義了系統(tǒng)在給定時(shí)刻具有的物理元素,而沒有具體考慮系統(tǒng)的動(dòng)態(tài)活動(dòng)。它與代碼一一對(duì)應(yīng),但與類圖不同,我們現(xiàn)在討論的是具體的分類器,而不是分類器定義。將對(duì)象圖描述為類實(shí)例圖可能最為合適。對(duì)象圖的主要用途是進(jìn)行分析。類圖中無法表示的類之間存在不確定的約束。我們將使用對(duì)象圖來記錄這些約束。而且,在我們查看所管理的具體類實(shí)例示例以闡明這些元素之間的交互作用關(guān)系時(shí),對(duì)象圖還允許我們定義具體的“Whatif”場(chǎng)景。以下內(nèi)容適用于OO建模的初學(xué)者:分類器是抽象的對(duì)象結(jié)構(gòu)定義。分類器可以告訴我們所管理的是什么類型的數(shù)據(jù)(屬性/成員表示數(shù)據(jù)元素)以及該分類器具有什么能力(操作/方法表示對(duì)象的行為)。實(shí)例是具體的分類器示例。假定定義一個(gè)名為Customer的類,該類具有Name屬性。類Customer的實(shí)例“JaneDoe”是姓名恰為“JaneDoe”的客戶。實(shí)例通常具有比分類器更豐富的含義,這是因?yàn)榉诸惼鞅硎灸撤N級(jí)別的概述。收集某個(gè)分類器的若干個(gè)實(shí)例或示例可能有助于您理解其用途并更好地使用它。因此,對(duì)象圖是類圖的具體形式,表示類實(shí)例樣本,并且顯示了鍵值和關(guān)系。例如,CustomerBean類具有以下客戶實(shí)例:該客戶的ID為52271,姓名為“JohnDoe”。該客戶實(shí)例與三個(gè)訂單實(shí)例(三份訂單)相關(guān),訂單編號(hào)分別為122047、122103和122399。協(xié)作圖(CollaborationDiagram)協(xié)作圖和序列圖非常相似。實(shí)際上,序列圖和協(xié)作圖可以有效地交替使用,并可以簡(jiǎn)便的相互轉(zhuǎn)換。其區(qū)別在于用戶閱讀和理解的方式不同。序列圖具有很好的層次性,并且圍繞時(shí)間構(gòu)造。協(xié)作圖則主要是圍繞對(duì)象結(jié)構(gòu)構(gòu)造。通過在圖中對(duì)消息進(jìn)行編號(hào)可以表示消息的順序。采用這種方式時(shí),即使圖的結(jié)構(gòu)不是基于時(shí)間的,也將保持定時(shí)關(guān)系。協(xié)作圖借助于系統(tǒng)中元素或?qū)ο笾g的交互作用,表示系統(tǒng)的動(dòng)態(tài)方面,即在一段時(shí)間內(nèi)的表現(xiàn)方式。它通過表示系統(tǒng)的靜態(tài)結(jié)構(gòu)來對(duì)類圖和對(duì)象圖進(jìn)行補(bǔ)充,但不是借助于基于結(jié)構(gòu)的關(guān)系,而是在系統(tǒng)對(duì)象之間傳遞交互作用“消息”。構(gòu)造協(xié)作圖時(shí)還可以在概念級(jí)測(cè)試靜態(tài)模型。在類圖中定義了類實(shí)例,這些類實(shí)例之間的交互作用定義了一個(gè)具體的使用方案以及將在這些元素之間發(fā)生的內(nèi)部通訊。我們還可以使用其他角色來表示系統(tǒng)的外部作用者和內(nèi)部使用者,如用例圖。例如,我們可以建立一個(gè)訂單輸入系統(tǒng),以供客戶和銷售代表使用。客戶通過創(chuàng)建新訂單與該系統(tǒng)交互作用。訂單對(duì)象與銷售對(duì)象之間進(jìn)行對(duì)話,該對(duì)話由鏈接消息表示,在此情況下,只有兩個(gè)消息:一個(gè)是來自O(shè)rders類的訂單請(qǐng)求,一個(gè)是來自Sales類的訂單確認(rèn)。對(duì)一個(gè)鏈接上的消息數(shù)量沒有限制。我們?cè)诖擞懻摰膶?duì)話以一個(gè)訂單請(qǐng)求開始,然后是對(duì)該訂單的確認(rèn)。適用性協(xié)作圖對(duì)于設(shè)計(jì)人員尤其重要,因?yàn)樗U明了對(duì)象的作用。您可以在序列圖之前構(gòu)造協(xié)作圖(如果您計(jì)劃構(gòu)造這兩個(gè)圖),但通常是在完成類圖之后構(gòu)造協(xié)作圖以說明從類中導(dǎo)出的對(duì)象之間的交互作用??梢允褂靡粋€(gè)或多個(gè)協(xié)作圖來實(shí)現(xiàn)一個(gè)用例,或者將復(fù)雜行為分割成多個(gè)邏輯子行為。狀態(tài)圖(StatechartDiagram)狀態(tài)圖(也稱為狀態(tài)機(jī))描述了特定類或組件在其整個(gè)生命周期中不斷變化時(shí)的行為。該圖顯示是什么觸發(fā)了從一種狀態(tài)向另一種狀態(tài)的轉(zhuǎn)換,以及在該類上調(diào)用哪些操作以提供該狀態(tài)的行為或觸發(fā)這種轉(zhuǎn)換。例如,訂單在被創(chuàng)建時(shí)處于初始狀態(tài)。在客戶確認(rèn)訂單正確后,訂單將進(jìn)入確認(rèn)狀態(tài)。在發(fā)貨以后,訂單需要從確認(rèn)狀態(tài)進(jìn)入發(fā)貨狀態(tài)。因此,每當(dāng)一個(gè)類在其生命周期的不同階段具有不同的可用選項(xiàng)(不同的有效行為)時(shí),您都可以使用狀態(tài)圖來將這些規(guī)則和條件建模。生命周期中的每個(gè)階段都是該對(duì)象的一種狀態(tài),而每個(gè)改變狀態(tài)的觸發(fā)器都代表從一種狀態(tài)到另一種狀態(tài)的轉(zhuǎn)換??梢愿鶕?jù)需要從某個(gè)狀態(tài)轉(zhuǎn)換到任意多個(gè)其它狀態(tài),也可以從其它多個(gè)狀態(tài)進(jìn)入某個(gè)狀態(tài)。子狀態(tài)圖若要保持狀態(tài)圖簡(jiǎn)單和易讀,您可能發(fā)現(xiàn)所定義的一個(gè)或多個(gè)狀態(tài)實(shí)際上涉及到更為復(fù)雜的行為,以至于它本身就可以定義為一個(gè)狀態(tài)圖。此時(shí),與向主圖中添加大量復(fù)雜細(xì)節(jié)的做法相比,更好的做法是將這個(gè)單獨(dú)的狀態(tài)分解為多個(gè)子狀態(tài),進(jìn)而組成一個(gè)輔助圖,以定義父狀態(tài)的更為復(fù)雜的內(nèi)部行為。部署圖(DeploymentDiagram)部署圖可以幫助我們確定所有代碼元素在服務(wù)器、工作站和數(shù)據(jù)庫中的存放位置。有的節(jié)點(diǎn)需要依賴硬件或軟件框來運(yùn)行部分業(yè)務(wù)邏輯。這些節(jié)點(diǎn)交互作用以演示我們開發(fā)的多個(gè)計(jì)算機(jī)和系統(tǒng)是如何交互作用和集成的。節(jié)點(diǎn)中包含將部署到數(shù)據(jù)庫、應(yīng)用程序或Web服務(wù)器中的組件實(shí)例。部署圖用于將組件實(shí)際部署到服務(wù)器中。通過定義希望組件運(yùn)行的位置,我們可以快捷的映射、部署和管理分布在客戶端應(yīng)用程序和應(yīng)用程序服務(wù)器端組件之間的業(yè)務(wù)邏輯或數(shù)據(jù)庫端服務(wù)器邏輯。以下是要管理的物理體系結(jié)構(gòu)的1:1模型。例如,假定我們已決定實(shí)現(xiàn)兩個(gè)EnterpriseJavaBeans,并且在應(yīng)用程序服務(wù)器上運(yùn)行它們。下圖顯示了單個(gè)節(jié)點(diǎn)以及該節(jié)點(diǎn)內(nèi)的兩個(gè)組件(每個(gè)EJB一個(gè)組件)。我們可以看出EmployeeBean依賴于同一應(yīng)用程序服務(wù)器內(nèi)的CustomerBean。結(jié)論在我們借助用例圖、序列圖、活動(dòng)圖、類圖和組件圖完成基本UML建模時(shí),我們將需要其它一些工具來定義有關(guān)系統(tǒng)中某些特定元素的詳細(xì)信息。我們可能希望在對(duì)象圖中使用精確的示例來表示對(duì)象的結(jié)構(gòu),或者借助于狀態(tài)圖來更多地了解在其內(nèi)部具有多個(gè)復(fù)雜狀態(tài)的類的行為。我們需要使用協(xié)作圖從結(jié)構(gòu)角度而不是從時(shí)間角度來考察系統(tǒng)組件之間的交互作用。最后,還需要使用部署圖來顯示所有系統(tǒng)組件在運(yùn)行環(huán)境中的物理硬件或服務(wù)器中所處的位置,從而更詳盡的了解分布式體系結(jié)構(gòu)的使用方式。UML為我們提供了更加實(shí)用的圖表,以便完成對(duì)業(yè)務(wù)邏輯的技術(shù)分析、設(shè)計(jì)、開發(fā)、或部署。將這9種圖表與傳統(tǒng)的數(shù)據(jù)建模方法和新的業(yè)務(wù)流程建模方法相結(jié)合,我們可以在從高級(jí)需求到技術(shù)和數(shù)據(jù)需求,以及物理實(shí)現(xiàn)的各個(gè)方面來全面了解推動(dòng)軟件開發(fā)的所有因素SybasePowerDesigner是一個(gè)“一站式”的企業(yè)級(jí)建模及設(shè)計(jì)解決方案,它能幫助企業(yè)快速高效地進(jìn)行企業(yè)應(yīng)用系統(tǒng)構(gòu)建及再工程(Re-engineer)。IT專業(yè)人員可以利用它來有效開發(fā)各種解決方案,從定義業(yè)務(wù)需求到分析和設(shè)計(jì),以至集成所有現(xiàn)代RDBMS和Java?、.NET、PowerBuilder?和WebServices的開發(fā)等。PowerDesigner是結(jié)合了下列幾種標(biāo)準(zhǔn)建模技術(shù)的一款獨(dú)具特色的建模工具集:業(yè)務(wù)流程建模、通過UML進(jìn)行的應(yīng)用程序建模以及市場(chǎng)占有率第一的數(shù)據(jù)建模,這些建模技術(shù)都是由功能強(qiáng)大的元數(shù)據(jù)管理解決方案提供支持的.POWERDESIGNER通用特性需求管理:PowerDesigner可以把需求定義轉(zhuǎn)化成任意數(shù)量的分析及設(shè)計(jì)模型,并記錄需求及所有分析及設(shè)計(jì)模型的改動(dòng)歷史,保持對(duì)它們的跟蹤。Microsoft?Word?導(dǎo)入/導(dǎo)出功能使業(yè)務(wù)用戶能輕易處理流程工作。文檔生成:PowerDesigner提供了Wizard向?qū)f(xié)助建立多模型的RTF和HTML格式的文檔報(bào)表。項(xiàng)目團(tuán)隊(duì)中非建模成員同樣可以了解模型信息,增強(qiáng)整個(gè)團(tuán)隊(duì)的溝通。影響度分析:PowerDesigner模型之間采用了獨(dú)特的鏈接與同步技術(shù)進(jìn)行全面集成,支持企業(yè)級(jí)或項(xiàng)目級(jí)的全面影響度分析。從業(yè)務(wù)過程模型、UML面向?qū)ο竽P偷綌?shù)據(jù)模型都支持該技術(shù),大大提高了整個(gè)組織的應(yīng)變能力。數(shù)據(jù)映射:PowerDesigner提供了拖放方式的可視化映射工具,方便、快速及準(zhǔn)確地記錄數(shù)據(jù)依賴關(guān)系。在任何數(shù)據(jù)和數(shù)據(jù)模型、數(shù)據(jù)與UML面向?qū)ο竽P鸵约皵?shù)據(jù)與XML模型之間建立支持影響度分析的完整的映射定義、生成持久化代碼以及數(shù)據(jù)倉庫ETL文件。開放性支持:PowerDesigner支持所有主流開發(fā)平臺(tái):支持超過60種(版本)關(guān)系數(shù)據(jù)庫管理系統(tǒng),包括最新的Oracle?、IBM?、Microsoft、Sybase、NCRTeradata、MySQL等,支持各種主流應(yīng)用程序開發(fā)平臺(tái),如JavaJ2EE、Microsoft.NET?(C#和VB.NET)、WebServices和PowerBuilder?,支持所有主流應(yīng)用服務(wù)器和流程執(zhí)行語言,如ebXML和BPEL4WS等??勺远x:PowerDesigner支持從用戶界面到建模行為以及代碼生成的客戶化定制。支持用于模型驅(qū)動(dòng)開發(fā)的自定義轉(zhuǎn)換,包括:對(duì)UML配置文件的高級(jí)支持、可自定義菜單和工具欄、通過腳本語言實(shí)現(xiàn)自動(dòng)模型轉(zhuǎn)化、通過COMAPI和DDL實(shí)現(xiàn)訪問功能以及通過模板和腳本代碼生成器生成代碼。企業(yè)知識(shí)庫:PowerDesigner的企業(yè)知識(shí)庫是存儲(chǔ)在關(guān)系數(shù)據(jù)庫中的完全集成的設(shè)計(jì)時(shí)知識(shí)庫,具有高度的可擴(kuò)展性,便于遠(yuǎn)程用戶使用。該知識(shí)庫提供以下功能:基于角色的模型和子模型訪問控制,版本控制和配置管理、模型與版本的變更報(bào)告以及全面的知識(shí)庫搜索功能。PowerDesigner的知識(shí)庫還可以存儲(chǔ)和管理任何文檔,包括Microsoft?Office?和Project文件、圖像和其他類型的文檔。powerdesigner初學(xué)者必看PowerDesigner的模塊組成
PowerDesigner作為圖形化的數(shù)據(jù)庫模型設(shè)計(jì)工具軟件,其集成特性靈活,采取模塊化設(shè)計(jì),共由以下六個(gè)模塊組成:1、ProcessAnalyst:用于系統(tǒng)的需求分析,可用于設(shè)計(jì)和構(gòu)造數(shù)據(jù)流圖(DFD)和數(shù)據(jù)字典。它支持多種處理建模方法,用戶可以選擇適合自己應(yīng)用環(huán)境的建模方法來描述系統(tǒng)的數(shù)據(jù)及對(duì)數(shù)據(jù)的處理。2、DataArchitect:用于對(duì)概念層和物理層的交互式數(shù)據(jù)庫設(shè)計(jì)和構(gòu)造。使用DataArchitect可以很方便地設(shè)計(jì)數(shù)據(jù)庫的概念模型并對(duì)該DBMS自動(dòng)生成物理模型。該模塊還提供高質(zhì)量的文檔生成能力和逆向工程能力,可從現(xiàn)有的數(shù)據(jù)庫中得到其物理模型和概念模型,并生成相應(yīng)文檔。3、AppModeler:應(yīng)用建模工具,用于物理建模和應(yīng)用對(duì)象及數(shù)據(jù)組件的生成。4、MetaWorks:用于團(tuán)隊(duì)開發(fā)、信息共享和模型管理。5、WarehouseArchitect:用于數(shù)據(jù)倉庫和數(shù)據(jù)集的建模和實(shí)現(xiàn)。6、Viewer:用于以只讀的、圖形化方式訪問整個(gè)企業(yè)的模型信息。在本課程的學(xué)習(xí)中,只需要掌握ProcessAnalyst模塊和DataArchitect模塊的應(yīng)用,對(duì)其余模塊只做簡(jiǎn)單的了解。PowerDesigner的模型和對(duì)象特性PowerDesigner6.0的模型共有四種:1、PAM:由ProcessAnalyst模塊生成的處理分析模型。2、CDM:由DataArchitect模塊生成的概念模型。3、PDM:由DataArchitect模塊生成的物理模型。4、WAM:由WarehouseArchitect模塊生成的數(shù)據(jù)倉庫模型。PowerDesigner是將一個(gè)大型應(yīng)用程序分成若干項(xiàng)目,每個(gè)項(xiàng)目可以包括模型,每個(gè)模型還可以包括若干個(gè)子模型。PowerDesigner的對(duì)象特征PowerDesigner中的對(duì)象包括項(xiàng)目、模型、子模型以及它們的各自屬性。PowerDesigner通過對(duì)這些屬性的設(shè)置來描述其對(duì)象的特征,這些屬性稱之為對(duì)象的特性。一般情況下,對(duì)象的所有特性中只有名稱和代碼需要用戶設(shè)置。ProcessAnalyst概述ProcessAnalyst是在數(shù)據(jù)庫系統(tǒng)設(shè)計(jì)的需求分析階段中,用于設(shè)計(jì)信息系統(tǒng)處理分析模型PAM的模塊。PAM的主要組成部分是數(shù)據(jù)流圖(描述信息系統(tǒng)中所用到的基本數(shù)據(jù)及其處理分析過程),需求分析的目標(biāo):1、對(duì)要處理的對(duì)象進(jìn)行詳細(xì)的調(diào)查,了解用戶對(duì)數(shù)據(jù)庫的信息要求、處理要求和安全性完整性要求。2、收集支持系統(tǒng)目標(biāo)的數(shù)據(jù)并處理。3、對(duì)新系統(tǒng)各種方案和設(shè)想進(jìn)行研究、分析和比較,選擇優(yōu)化的處理模型。在設(shè)計(jì)新系統(tǒng)的處理模型主要包括:數(shù)據(jù)流圖、數(shù)據(jù)字典和處理邏輯表達(dá)工具等。本課程要求熟練使用PowerDesigner設(shè)計(jì)數(shù)據(jù)流圖。數(shù)據(jù)流圖是系統(tǒng)處理模型的主要組成部分,它只在模型上精確描述系統(tǒng)中數(shù)據(jù)和處理的關(guān)系,并詳細(xì)描述系統(tǒng)的功能、輸入、輸出、數(shù)據(jù)存儲(chǔ)等。而數(shù)據(jù)字典則是對(duì)數(shù)據(jù)的詳細(xì)描述,是各類數(shù)據(jù)屬性的清單。結(jié)構(gòu)化系統(tǒng)分析和設(shè)計(jì)技術(shù)(SADT):結(jié)構(gòu)化系統(tǒng)分析和設(shè)計(jì)技術(shù)是構(gòu)造數(shù)據(jù)流圖的理論基礎(chǔ),它是一種功能和數(shù)據(jù)的分析、分解的技術(shù)。SADT的中心問題是:將功能逐層分解為多個(gè)子功能,并在分解的同時(shí)進(jìn)行相應(yīng)的數(shù)據(jù)分析和分解。系統(tǒng)功能的分解及其分解細(xì)化程度取決于對(duì)系統(tǒng)功能的理解,因此對(duì)系統(tǒng)功能的理解程度不同可以導(dǎo)致功能分解的結(jié)果不同。要注意在功能分解的同時(shí)伴隨相應(yīng)數(shù)據(jù)的分析和分解。數(shù)據(jù)流程圖的設(shè)計(jì)采取自上而下的方法,首先將整個(gè)系統(tǒng)作為一個(gè)功能繪制頂層圖,然后逐級(jí)細(xì)化,分解為多層次的數(shù)據(jù)流圖。頂層圖可以采取固定的模式:過程/數(shù)據(jù)類分析法:過程和數(shù)據(jù)類關(guān)系:生成(Creat)、使用(Use)和無關(guān)系。ProcessAnalyst中過程與數(shù)據(jù)關(guān)系:創(chuàng)建(Creat)、插入(Insert)、更新(Update)、刪除(Delete)和無關(guān)系。U/C矩陣:建立一表,第一橫欄為過程名,第一豎欄為數(shù)據(jù)類名,內(nèi)部是過程與數(shù)據(jù)類關(guān)系。CIUD矩陣:如同U/C矩陣??捎糜诿枋鲞^程與數(shù)據(jù)項(xiàng)的關(guān)系,也可用于描述過程與數(shù)據(jù)存儲(chǔ)的關(guān)系。要確定過程與過程之間的關(guān)系應(yīng)先確定過程與數(shù)據(jù)類之間的關(guān)系。ProcessAnlyst的基本功能通過建立處理分析模型PAM幫助系統(tǒng)分析人員收集數(shù)據(jù)、編寫數(shù)據(jù)字典,并繪制數(shù)據(jù)流圖。具體還包含以下幾個(gè)方面:(1)建立功能模型(OMT)和數(shù)據(jù)流圖;(2)建立層次型的處理模型;(3)定制和打印模型文檔;(4)從概念數(shù)據(jù)模型(CDM)中引入數(shù)據(jù)項(xiàng);(5)應(yīng)用OLE技術(shù)鏈接和嵌入其他應(yīng)用中的對(duì)象。處理分析模型(PAM)簡(jiǎn)介PAM是對(duì)系統(tǒng)進(jìn)行功能分析的處理分析模型。它定義了各系統(tǒng)元素(包括數(shù)據(jù)和處理過程)的靜態(tài)組成,以簡(jiǎn)潔的符號(hào)表示系統(tǒng)各元素之間的動(dòng)態(tài)聯(lián)系,并描述系統(tǒng)對(duì)數(shù)據(jù)的轉(zhuǎn)換和處理功能。可以采用PAM建立樹狀的層次結(jié)構(gòu)模型。PAM的對(duì)象數(shù)據(jù)項(xiàng):對(duì)信息的最基本的描述元素外部實(shí)體:從系統(tǒng)中接受數(shù)據(jù)或者把數(shù)據(jù)傳送到系統(tǒng)的對(duì)象處理過程:數(shù)據(jù)的轉(zhuǎn)換處理數(shù)據(jù)流:在處理過程、外部實(shí)體和數(shù)據(jù)存儲(chǔ)間傳送數(shù)據(jù)的流數(shù)據(jù)存儲(chǔ):模型中存儲(chǔ)的要處理的數(shù)據(jù)DataArchitect概述
DataArchitect是一種數(shù)據(jù)庫設(shè)計(jì)工具,主要用于進(jìn)行概念數(shù)據(jù)模型(CDM)和物理數(shù)據(jù)模型(PDM)的設(shè)計(jì)及其相互轉(zhuǎn)換與維護(hù)。其中,概念數(shù)據(jù)模型就是E-R圖(實(shí)體-關(guān)系圖),將現(xiàn)實(shí)的應(yīng)用抽象為實(shí)體與實(shí)體之間的聯(lián)系。CDM的具體對(duì)象包括域(Domain)、數(shù)據(jù)項(xiàng)(DataItem)、實(shí)體(Entity)、實(shí)體屬性、和繼承鏈(inheritancelink)等。而物理數(shù)據(jù)模型則針對(duì)某中DBMS定義物理層次上的各類數(shù)據(jù)對(duì)象(包括表、域、列、參照、碼、索引、視圖、擴(kuò)展屬性和檢查參數(shù)等)。DataArchitect的功能用E-R圖為信息系統(tǒng)建模(CDM)。
在物理層次上建模:基于某一DBMS生成相應(yīng)的物理數(shù)據(jù)模型(PDM)。對(duì)物理數(shù)據(jù)模型維護(hù):定制PDM以滿足物理上和性能上的要求。為目標(biāo)DBMS生成一個(gè)數(shù)據(jù)庫創(chuàng)建腳本。生成完整性觸發(fā)器。定制和打印模型報(bào)告,生成CDM和PDM的設(shè)計(jì)文檔。從現(xiàn)有數(shù)據(jù)庫和應(yīng)用進(jìn)行逆向工程,對(duì)CDM和PDM進(jìn)行維護(hù)。為PDM的對(duì)象定義擴(kuò)展屬性。DataArchitect的概念數(shù)據(jù)模型CDMCDM的基本概念CDM:信息系統(tǒng)的概念設(shè)計(jì)工具,即實(shí)體-聯(lián)系圖(E-R圖),CDM就是以其自身方式來描述E-R圖。此時(shí)不考慮物理實(shí)現(xiàn)的細(xì)節(jié),只表示數(shù)據(jù)庫的整體邏輯結(jié)構(gòu),獨(dú)立于任何軟件和數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)。如下列職員和項(xiàng)目?jī)蓪?shí)體的E-R圖:(2)CDM的定義1、通過設(shè)置模型特性定義對(duì)CDM的某些特定要求,打開ModelOptions對(duì)話框,設(shè)置CDM選項(xiàng):1)Enforce:不允許屬性值偏離某些域(包括Datatype、check、rules)2)Defaultdatatype:域和屬性的缺省數(shù)據(jù)類型3)Dataitemunique:設(shè)置數(shù)據(jù)項(xiàng)是否有唯一碼4)Allowreuse:設(shè)置是否允許數(shù)據(jù)項(xiàng)作為多個(gè)實(shí)體的屬性5)Defaultaddoption:當(dāng)作為實(shí)體屬性加入數(shù)據(jù)項(xiàng)時(shí),指明是重用還是復(fù)制該數(shù)據(jù)項(xiàng)6)Relationuniquecode:設(shè)置聯(lián)系是否有唯一碼7)Confirmdelete:刪除整個(gè)數(shù)據(jù)對(duì)象還是只刪除其符號(hào)2、通過設(shè)置模型特性定義CDM的說明信息打開Modelproperties對(duì)話框,設(shè)置CDM說明信息:包括項(xiàng)目名和項(xiàng)目代碼、模型名和模型代碼、標(biāo)簽、設(shè)計(jì)人、版本號(hào)、創(chuàng)建時(shí)間、修改時(shí)間等。對(duì)模型的信息說明可增強(qiáng)模型的可讀性。(3)CDM的建立建立CDM的過程就是對(duì)信息系統(tǒng)進(jìn)行概念層次上的抽象和表達(dá)的過程,用CDM的各種對(duì)象來描述信息系統(tǒng)內(nèi)部的實(shí)體之間的關(guān)系。建立CDM的步驟:1)為CDM定義域(Domain):包括設(shè)置所建域的域名、數(shù)據(jù)類型、長(zhǎng)度、精度和擴(kuò)展選項(xiàng)等。2)定義數(shù)據(jù)項(xiàng):指定數(shù)據(jù)項(xiàng)名、代碼、選擇域(或指定數(shù)據(jù)類型、長(zhǎng)度、精度)等。3)定義實(shí)體:打開ListofEntities對(duì)話框建立相關(guān)實(shí)體4)定義實(shí)體屬性:包括設(shè)置實(shí)體名稱、代碼、規(guī)則等,并為所建立的實(shí)體引入相關(guān)的數(shù)據(jù)項(xiàng)。5)定義聯(lián)系:在相關(guān)實(shí)體之間建立聯(lián)系,同時(shí)設(shè)置所建聯(lián)系的屬性(包括聯(lián)系名、設(shè)置一對(duì)多、多對(duì)多等可選聯(lián)系等)。6)建立子模型:首先應(yīng)確定所建CDM應(yīng)劃分成幾個(gè)子模型,再對(duì)各子模型加入相應(yīng)的各個(gè)實(shí)體。7)定義繼承:使用繼承連接建立實(shí)體間繼承關(guān)系,并設(shè)置繼承屬性(包括繼承名稱、代碼、設(shè)置繼承方向等)。8)定義檢查參數(shù)并檢查所建立的CDM。(4)從PDM生成CDM從PDM生成CDM是逆向工程的一種,因此需要根據(jù)物理層次上的改動(dòng)對(duì)概念層次上的模型進(jìn)行相應(yīng)的修改。PDM和CDM中的對(duì)象之間的對(duì)應(yīng)關(guān)系如下表:PDM中的對(duì)象CDM中的對(duì)象表(Table)
實(shí)體(Entity)
表中的列(Tablecolumn)實(shí)體屬性(Entityattribute)主碼或外碼(PrimaryorForeignkey)標(biāo)識(shí)符
參照(Reference)一對(duì)多聯(lián)系
連接表(Jointable)多對(duì)多聯(lián)系DataArchitect的物理數(shù)據(jù)模型PDMPDM的基本概念PDM考慮了數(shù)據(jù)庫的物理實(shí)現(xiàn),包括軟件和數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)。PDM的對(duì)象:表(Table)、表中的列(Tablecolumn)、主碼和外碼(Primary&Foreignkey)、參照(Reference)、索引(Index)、視圖(View)等。PDM的功能:用圖形的形式表示數(shù)據(jù)的物理組織生成數(shù)據(jù)庫的創(chuàng)建和修改腳本定義完整性觸發(fā)器和約束生成擴(kuò)展屬性從已存在的數(shù)據(jù)庫進(jìn)行逆向工程(2)PDM的定義1、通過設(shè)置模型特性定義對(duì)CDM的某些特定要求打開ModelOptions對(duì)話框,設(shè)置PDM選項(xiàng):1)Enforce:不允許屬性值偏離某些域(包括Datatype、check、rules、Mandatory、Extended)2)Defaultdatatype:域和列的缺省數(shù)據(jù)類型3)Uniquecode:設(shè)置是否參照唯一碼4)Auto-migrateFK:設(shè)置是否自動(dòng)移除外碼5)Confirmdelete:刪除整個(gè)數(shù)據(jù)字典中相關(guān)聯(lián)的數(shù)據(jù)對(duì)象還是只刪除其符號(hào)2、通過設(shè)置模型特性定義PDM的說明信息打開Modelproperties對(duì)話框,設(shè)置PDM說明信息。(3)PDM的建立1)建立表(Table):包括設(shè)置所建域的域名、數(shù)據(jù)類型、長(zhǎng)度、精度和擴(kuò)展選項(xiàng)等。2)定義域:指定數(shù)據(jù)項(xiàng)名、代碼、選擇域(或指定數(shù)據(jù)類型、長(zhǎng)度、精度)等。3)定義列:打開ListofEntities對(duì)話框建立相關(guān)實(shí)體4)定義參照:包括設(shè)置實(shí)體名稱、代碼、規(guī)則等,并為所建立的實(shí)體引入相關(guān)的數(shù)據(jù)項(xiàng)。5)定義碼:在相關(guān)實(shí)體之間建立聯(lián)系,同時(shí)設(shè)置所建聯(lián)系的屬性(包括聯(lián)系名、設(shè)置一對(duì)多、多對(duì)多等可選聯(lián)系等)。6)定義索引:首先應(yīng)確定所建CDM應(yīng)劃分成幾個(gè)子模型,再對(duì)各子模型加入相應(yīng)的各個(gè)實(shí)體。7)定義視圖:使用繼承連接建立實(shí)體間繼承關(guān)系,并設(shè)置繼承屬性(包括繼承名稱、代碼、設(shè)置繼承方向等)。8)定義擴(kuò)展屬性:9)定義觸發(fā)器:10)PDM的檢查建立PAM模型的基本步驟(1)建立一個(gè)新的PAM模型框架。(2)輸入所建模型特性并為模型設(shè)置選項(xiàng)。打開“ProcessModelProperties”對(duì)話框,設(shè)置PAM模型特性(包括項(xiàng)目名稱、代碼、作者、日期、版本號(hào)和相關(guān)輔助說明等)。(3)對(duì)根處理模型建立相關(guān)對(duì)象:建立并定義處理過程:使用Process工具建立新的處理過程,編輯所建處理過程的名稱、代碼等特性。建立并定義外部實(shí)體:使用Externentity工具建立新的外部實(shí)體,并設(shè)置相關(guān)特性。在對(duì)象之間建立數(shù)據(jù)流:使用Flow工具聯(lián)系相關(guān)的對(duì)象,設(shè)置數(shù)據(jù)流特性。(4)分解根處理模型:對(duì)處理過程進(jìn)行分解:使用Decomposition工具選擇相關(guān)處理過程,出現(xiàn)處理的子處理窗口,在子處理窗口中建立新的對(duì)象,重新定義數(shù)據(jù)流。按需要建立相關(guān)的控制流:使用Flow工具在相關(guān)對(duì)象間建立數(shù)據(jù)流,編輯特性,將數(shù)據(jù)流類型改為控制流。按需要繼續(xù)對(duì)處理過程進(jìn)行分解,重復(fù)上述兩步。(5)建立數(shù)據(jù)項(xiàng)和域建立數(shù)據(jù)項(xiàng):打開數(shù)據(jù)項(xiàng)列表,加入項(xiàng)目相關(guān)的數(shù)據(jù)項(xiàng),并設(shè)置數(shù)據(jù)項(xiàng)的類型、長(zhǎng)度、精度等(或直接加入數(shù)據(jù)項(xiàng)所屬域)。建立域:打開域列表,加入項(xiàng)目相關(guān)的域,并設(shè)置域的類型、長(zhǎng)度、精度等。為數(shù)據(jù)項(xiàng)設(shè)置檢查參數(shù):對(duì)相關(guān)數(shù)據(jù)項(xiàng)規(guī)定數(shù)據(jù)有效范圍、單位等。(6)為數(shù)據(jù)流加入數(shù)據(jù)項(xiàng)直模型頂層開始為數(shù)據(jù)流加入相應(yīng)的數(shù)據(jù)項(xiàng):返回根處理,為相應(yīng)的數(shù)據(jù)流選擇相關(guān)的數(shù)據(jù)項(xiàng)。
做下一層分解,在子處理窗口中為數(shù)據(jù)流加入相關(guān)數(shù)據(jù)項(xiàng)。
(7)排序數(shù)據(jù)項(xiàng)
建立數(shù)據(jù)存儲(chǔ):使用Datastore工具建立數(shù)據(jù)存儲(chǔ),設(shè)置數(shù)據(jù)存儲(chǔ)特性(包括名稱、代碼等)。
建立對(duì)象創(chuàng)建流:使用Dataflow工具在處理過程與數(shù)據(jù)存儲(chǔ)間創(chuàng)建數(shù)據(jù)流,并設(shè)置數(shù)據(jù)流特性,將其數(shù)據(jù)流類型設(shè)置為"ObjectCreation"。
將數(shù)據(jù)項(xiàng)存儲(chǔ)到數(shù)據(jù)存儲(chǔ)中:打開"ModelOptions"對(duì)話框,在"Datastores"中選擇"Autofill"(使數(shù)據(jù)流中的數(shù)據(jù)項(xiàng)自動(dòng)存儲(chǔ)到數(shù)據(jù)存儲(chǔ)中);為對(duì)象創(chuàng)建流加入相關(guān)數(shù)據(jù)項(xiàng)。
把數(shù)據(jù)存儲(chǔ)與模型其它部分連接起來:使用"Flow"工具在數(shù)據(jù)存儲(chǔ)與其它相關(guān)對(duì)象間建立數(shù)據(jù)流,并為所建的數(shù)據(jù)流加入相關(guān)的數(shù)據(jù)項(xiàng)。
將最底層的處理過程通過其特性設(shè)置為最底層(選中"Lowestlevel")。
檢查模型:使用功能鍵F4執(zhí)行檢查。
(8)調(diào)整顯示
增加標(biāo)題框:在根處理模型中選擇Edit->AddTitle,加入標(biāo)題框,設(shè)置標(biāo)題屬性。
改變窗口顏色:選擇Window->WindowColor,改變顏色。
排列符號(hào)。
調(diào)整數(shù)據(jù)流顯示。
顯示相關(guān)文本:可以通過選擇File->DisplayPreference打開顯示參數(shù)設(shè)置對(duì)話框,選中contents以顯示數(shù)據(jù)項(xiàng)。PowerDesigner教程:概念數(shù)據(jù)模型目標(biāo):本小節(jié)主要介紹PowerDesigner中概念數(shù)據(jù)模型CDM的基本概念。一、概念數(shù)據(jù)模型概述數(shù)據(jù)模型是現(xiàn)實(shí)世界中數(shù)據(jù)特征的抽象。數(shù)據(jù)模型應(yīng)該滿足三個(gè)方面的要求:
1)能夠比較真實(shí)地模擬現(xiàn)實(shí)世界
2)容易為人所理解
3)便于計(jì)算機(jī)實(shí)現(xiàn)概念數(shù)據(jù)模型也稱信息模型,它以實(shí)體-聯(lián)系(Entity-RelationShip,簡(jiǎn)稱E-R)理論為基礎(chǔ),并對(duì)這一理論進(jìn)行了擴(kuò)充。它從用戶的觀點(diǎn)出發(fā)對(duì)信息進(jìn)行建模,主要用于數(shù)據(jù)庫的概念級(jí)設(shè)計(jì)。通常人們先將現(xiàn)實(shí)世界抽象為概念世界,然后再將概念世界轉(zhuǎn)為機(jī)器世界。換句話說,就是先將現(xiàn)實(shí)世界中的客觀對(duì)象抽象為實(shí)體(Entity)和聯(lián)系(Relationship),它并不依賴于具體的計(jì)算機(jī)系統(tǒng)或某個(gè)DBMS系統(tǒng),這種模型就是我們所說的CDM;然后再將CDM轉(zhuǎn)換為計(jì)算機(jī)上某個(gè)DBMS所支持的數(shù)據(jù)模型,這樣的模型就是物理數(shù)據(jù)模型,即PDM。
CDM是一組嚴(yán)格定義的模型元素的集合,這些模型元素精確地描述了系統(tǒng)的靜態(tài)特性、動(dòng)態(tài)特性以及完整性約束條件等,其中包括了數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)操作和完整性約束三部分。
1)數(shù)據(jù)結(jié)構(gòu)表達(dá)為實(shí)體和屬性;
2)數(shù)據(jù)操作表達(dá)為實(shí)體中的記錄的插入、刪除、修改、查詢等操作;
3)完整性約束表達(dá)為數(shù)據(jù)的自身完整性約束(如數(shù)據(jù)類型、檢查、規(guī)則等)和數(shù)據(jù)間的參照完整性約束(如聯(lián)系、繼承聯(lián)系等);二、實(shí)體、屬性及標(biāo)識(shí)符的定義實(shí)體(Entity),也稱為實(shí)例,對(duì)應(yīng)現(xiàn)實(shí)世界中可區(qū)別于其他對(duì)象的“事件”或“事物”。例如,學(xué)校中的每個(gè)學(xué)生,醫(yī)院中的每個(gè)手術(shù)。每個(gè)實(shí)體都有用來描述實(shí)體特征的一組性質(zhì),稱之為屬性,一個(gè)實(shí)體由若干個(gè)屬性來描述。如學(xué)生實(shí)體可由學(xué)號(hào)、姓名、性別、出生年月、所在系別、入學(xué)年份等屬性組成。實(shí)體集(EntitySet)是具體相同類型及相同性質(zhì)實(shí)體的集合。例如學(xué)校所有學(xué)生的集合可定義為“學(xué)生”實(shí)體集,“學(xué)生”實(shí)體集中的每個(gè)實(shí)體均具有學(xué)號(hào)、姓名、性別、出生年月、所在系別、入學(xué)年份等性質(zhì)。實(shí)體類型(EntityType)是實(shí)體集中每個(gè)實(shí)體所具有的共同性質(zhì)的集合,例如“患者”實(shí)體類型為:患者{門診號(hào),姓名,性別,年齡,身份證號(hào).............}。實(shí)體是實(shí)體類型的一個(gè)實(shí)例,在含義明確的情況下,實(shí)體、實(shí)體類型通常互換使用。實(shí)體類型中的每個(gè)實(shí)體包含唯一標(biāo)識(shí)它的一個(gè)或一組屬性,這些屬性稱為實(shí)體類型的標(biāo)識(shí)符(Identifier),如“學(xué)號(hào)”是學(xué)生實(shí)體類型的標(biāo)識(shí)符,“姓名”、“出生日期”、“信址”共同組成“公民”實(shí)體類型的標(biāo)識(shí)符。有些實(shí)體類型可以有幾組屬性充當(dāng)標(biāo)識(shí)符,選定其中一組屬性作為實(shí)體類型的主標(biāo)識(shí)符,其他的作為次標(biāo)識(shí)符。三、實(shí)體、屬性及標(biāo)識(shí)符的表達(dá)本小節(jié)主要介紹PowerDesigner概念數(shù)據(jù)模型以及實(shí)體、屬性創(chuàng)建。一、新建概念數(shù)據(jù)模型
1)選擇File-->New,彈出如圖所示對(duì)話框,選擇CDM模型(即概念數(shù)據(jù)模型)建立模型。
2)完成概念數(shù)據(jù)模型的創(chuàng)建。以下圖示,對(duì)當(dāng)前的工作空間進(jìn)行簡(jiǎn)單介紹。(以后再更詳細(xì)說明)
3)選擇新增的CDM模型,右擊,在彈出的菜單中選擇“Properties”屬性項(xiàng),彈出如圖所示對(duì)話框。在“General”標(biāo)簽里可以輸入所建模型的名稱、代碼、描述、創(chuàng)建者、版本以及默認(rèn)的圖表等等信息。在“Notes”標(biāo)簽里可以輸入相關(guān)描述及說明信息。當(dāng)然再有更多的標(biāo)簽,可以點(diǎn)擊"More>>"按鈕,這里就不再進(jìn)行詳細(xì)解釋。二、創(chuàng)建新實(shí)體
1)在CDM的圖形窗口中,單擊工具選項(xiàng)版上的Entity工具,再單擊圖形窗口的空白處,在單擊的位置就出現(xiàn)一個(gè)實(shí)體符號(hào)。點(diǎn)擊Pointer工具或右擊鼠標(biāo),釋放Entitiy工具。如圖所示
2)雙擊剛創(chuàng)建的實(shí)體符號(hào),打開下列圖標(biāo)窗口,在此窗口“General”標(biāo)簽中可以輸入實(shí)體的名稱、代碼、描述等信息。三、添加實(shí)體屬性
1)在上述窗口的“Attribute”選項(xiàng)標(biāo)簽上可以添加屬性,如下圖所示。注意:
數(shù)據(jù)項(xiàng)中的“添加屬性”和“重用已有數(shù)據(jù)項(xiàng)”這兩項(xiàng)功能與模型中DataItem的Uniquecode和Allowreuse選項(xiàng)有關(guān)。
P列表示該屬性是否為主標(biāo)識(shí)符;D列表示該屬性是否在圖形窗口中顯示;M列表示該屬性是否為強(qiáng)制的,即該列是否為空值。
如果一個(gè)實(shí)體屬性為強(qiáng)制的,那么,這個(gè)屬性在每條記錄中都必須被賦值,不能為空。2)在上圖所示窗口中,點(diǎn)擊插入屬性按鈕,彈出屬性對(duì)話框,如下圖所示。注意:這里涉及到域的概念,即一種標(biāo)準(zhǔn)的數(shù)據(jù)結(jié)構(gòu),它可應(yīng)用至數(shù)據(jù)項(xiàng)或?qū)嶓w的屬性上。在以下的教程中將另立章節(jié)詳細(xì)說明。目標(biāo):
本小節(jié)主要介紹屬性的標(biāo)準(zhǔn)檢查約束、如何定義屬性的附加檢查。一、定義屬性的標(biāo)準(zhǔn)檢查約束標(biāo)準(zhǔn)檢查約束是一組確保屬性有效的表達(dá)式。在實(shí)體屬性的特性窗口,打開如圖所示的檢查選項(xiàng)卡。
在這個(gè)選項(xiàng)卡可以定義屬性的標(biāo)準(zhǔn)檢查約束,窗口中每項(xiàng)的參數(shù)的含義,如下參數(shù)說明Minimum屬性可接受的最小數(shù)Maximum
屬性可接受的最大數(shù)Default屬性不賦值時(shí),系統(tǒng)提供的默認(rèn)值Unit單位,如公里、噸、元Format屬性的數(shù)據(jù)顯示格式Lowercase屬性的賦值全部變?yōu)樾懽帜窾ppercase屬性的賦值全部變?yōu)榇髮懽帜窩annotmodify該屬性一旦賦值不能再修改ListOfValues屬性賦值列表,除列表中的值,不能有其他的值Label屬性列表值的標(biāo)簽二、定義屬性的附加檢查當(dāng)Standardchecks或Rules不能滿足檢查的要求時(shí),可以在AdditionalChecks選項(xiàng)卡的Server子頁上,通過SQL語句中使用%MINMAX%、%LISTVAL%、%RULES%、%UPPER%、%LOWER%幾個(gè)變量來定義Standard和Rule,如圖所示
%MINMAX%、%LISTVAL%、%UPPER%、%LOWER%
在StandardCheck中定義的Minimum和Maximum、Listvalues、uppervalues、lowervalues
%RULES%
在Rules特性窗口Expression選項(xiàng)卡中定義的有效性規(guī)則表達(dá)式目標(biāo):
本小節(jié)主要介紹如何定義實(shí)體的主、次標(biāo)識(shí)符。一、標(biāo)識(shí)符
標(biāo)識(shí)符是實(shí)體中一個(gè)或多個(gè)屬性的集合,可用來唯一標(biāo)識(shí)實(shí)體中的一個(gè)實(shí)例。要強(qiáng)調(diào)的是,CDM中的標(biāo)識(shí)符等價(jià)于PDM中的主鍵或候選鍵。
每個(gè)實(shí)體都必須至少有一個(gè)標(biāo)識(shí)符。如果實(shí)體只有一個(gè)標(biāo)識(shí)符,則它為實(shí)體的主標(biāo)識(shí)符。如果實(shí)體有多個(gè)標(biāo)識(shí)符,則其中一個(gè)被指定為主標(biāo)識(shí)符,其余的標(biāo)識(shí)符就是次標(biāo)識(shí)符了。二、如果定義主、次標(biāo)識(shí)符1)選擇某個(gè)實(shí)體雙擊彈出實(shí)體的屬性對(duì)話框。在Identifiers選項(xiàng)卡上可以進(jìn)行實(shí)體標(biāo)識(shí)符的定義。如下圖所示
2)選擇第一行“主標(biāo)識(shí)符”,點(diǎn)擊屬性按鈕或雙擊第一行“主標(biāo)識(shí)符”,彈出屬性對(duì)話框,如圖所示3)選擇"Attributes"選項(xiàng)卡,再點(diǎn)擊“AddAttributes”工具,彈出如圖所示窗口,選擇某個(gè)屬性作為標(biāo)識(shí)符就行了。待續(xù)。目標(biāo):本小節(jié)主要介紹數(shù)據(jù)項(xiàng)、新增數(shù)據(jù)項(xiàng)、數(shù)據(jù)項(xiàng)的唯一性代碼選項(xiàng)和重用選項(xiàng)等。一、數(shù)據(jù)項(xiàng)數(shù)據(jù)項(xiàng)(DataItem)是信息存儲(chǔ)的最小單位,它可以附加在實(shí)體上作為實(shí)體的屬性。注意:模型中允許存在沒有附加至任何實(shí)體上的數(shù)據(jù)項(xiàng)。二、新建數(shù)據(jù)項(xiàng)1)使用“Model”--->DataItems菜單,在打開的窗口中顯示已有的數(shù)據(jù)項(xiàng)的列表,點(diǎn)擊“AddaRow”按鈕,創(chuàng)建一個(gè)新數(shù)據(jù)項(xiàng),如圖所示
2)當(dāng)然您可以繼續(xù)設(shè)置具體數(shù)據(jù)項(xiàng)的Code、DataType、Length等等信息。這里就不再詳細(xì)說明了。三、數(shù)據(jù)項(xiàng)的唯一性代碼選項(xiàng)和重用選項(xiàng)使用Tools--->ModelOptions->ModelSettings。在DataItem組框中定義數(shù)據(jù)項(xiàng)的唯一性代碼選項(xiàng)(UniqueCode)與重用選項(xiàng)(AllowReuse)。注意:如果選擇UniqueCode復(fù)選框,每個(gè)數(shù)據(jù)項(xiàng)在同一個(gè)命名空間有唯一的代碼,而選擇Allowreuse,一個(gè)數(shù)據(jù)項(xiàng)可以充當(dāng)多個(gè)實(shí)體的屬性。四、在實(shí)體中添加數(shù)據(jù)項(xiàng)
1)雙擊一個(gè)實(shí)體符號(hào),打開該實(shí)體的屬性窗口。
2)單擊Attributes選項(xiàng)卡,打開如下圖所示窗口注意:
AddaDataItem與ReuseaDataItem的區(qū)別在于
AddaDataItem情況下,選擇一個(gè)已經(jīng)存在的數(shù)據(jù)項(xiàng),系統(tǒng)會(huì)自動(dòng)復(fù)制所選擇的數(shù)據(jù)項(xiàng)。如果您設(shè)置了UniqueCode選項(xiàng),那系統(tǒng)在復(fù)制過程中,新數(shù)據(jù)項(xiàng)的Code會(huì)自動(dòng)生成一個(gè)唯一的號(hào)碼,否則與所選擇的數(shù)據(jù)項(xiàng)完全一致。
ReuseaDataItem情況下,只引用不新增,就是引用那些已經(jīng)存在的數(shù)據(jù)項(xiàng),作為新實(shí)體的數(shù)據(jù)項(xiàng)。目標(biāo):本小節(jié)主要介紹聯(lián)系的定義及使用。
一、
聯(lián)系
聯(lián)系(Relationship)是指實(shí)體集這間或?qū)嶓w集內(nèi)部實(shí)例之間的連接。
實(shí)體之間可以通過聯(lián)系來相互關(guān)聯(lián)。與實(shí)體和實(shí)體集對(duì)應(yīng),聯(lián)系也可以分為聯(lián)系和聯(lián)系集,聯(lián)系集是實(shí)體集之間的聯(lián)系,聯(lián)系是實(shí)體之間的聯(lián)系,聯(lián)系是具有方向性的。聯(lián)系和聯(lián)系集在含義明確的情況之下均可稱為聯(lián)系。
按照實(shí)體類型中實(shí)例之間的數(shù)量對(duì)應(yīng)關(guān)系,通??蓪⒙?lián)系分為4類,即一對(duì)一(ONE
TOONE)聯(lián)系、一對(duì)多(ONETOMANY)聯(lián)系、多對(duì)一(MANYTOONE)聯(lián)系和多對(duì)多聯(lián)系(MANYTOMANY)。
二、
建立聯(lián)系
在CDM工具選項(xiàng)板中除了公共的工具外,還包括如下圖所示的其它對(duì)象產(chǎn)生工具。
在圖形窗口中創(chuàng)建兩個(gè)實(shí)體后,單擊“實(shí)體間建立聯(lián)系”工具,單擊一個(gè)實(shí)體,在按下鼠標(biāo)左鍵的同時(shí)把光標(biāo)拖至別一個(gè)實(shí)體上并釋放鼠標(biāo)左鍵,這樣就在兩個(gè)實(shí)體間創(chuàng)建了聯(lián)系,右鍵單擊圖形窗口,釋放Relationship工具。如下圖所示三、
四種基本的聯(lián)系即一對(duì)一(ONE
TOONE)聯(lián)系、一對(duì)多(ONETOMANY)聯(lián)系、多對(duì)一(MANYTOONE)聯(lián)系和多對(duì)多聯(lián)系(MANYTOMANY)。如圖所示四、
其他幾類特殊聯(lián)系
除了4種基本的聯(lián)系之外,實(shí)體集與實(shí)體集之間還存在標(biāo)定聯(lián)系(IdentifyRelationship)、非標(biāo)定聯(lián)系(Non-IdentifyRelationShip)和遞歸聯(lián)系(RecursiveRelationship)。標(biāo)定聯(lián)系:每個(gè)實(shí)體類型都有自己的標(biāo)識(shí)符,如果兩個(gè)實(shí)體集之間發(fā)生聯(lián)系,其中一個(gè)實(shí)體類型的標(biāo)識(shí)符進(jìn)入另一個(gè)實(shí)體類型并與該實(shí)體類型中的標(biāo)識(shí)符共同組成其標(biāo)識(shí)符時(shí),這種聯(lián)系則稱為標(biāo)定聯(lián)系,也叫依賴聯(lián)系。反之稱為非標(biāo)定聯(lián)系,也叫非依賴聯(lián)系。
注意:
在非標(biāo)定聯(lián)系中,一個(gè)實(shí)體集中的部分實(shí)例依賴于另一個(gè)實(shí)例集中的實(shí)例,在這種依賴聯(lián)系中,每個(gè)實(shí)體必須至少有一個(gè)標(biāo)識(shí)符。而在標(biāo)定聯(lián)系中,一個(gè)實(shí)體集中的全部實(shí)例完全依賴于另個(gè)實(shí)體集中的實(shí)例,在這種依賴聯(lián)系中一個(gè)實(shí)體必須至少有一個(gè)標(biāo)識(shí)符,而另一個(gè)實(shí)體卻可以沒有自己的標(biāo)識(shí)符。沒有標(biāo)識(shí)符的實(shí)體用它所依賴的實(shí)體的標(biāo)識(shí)符作為自己的標(biāo)識(shí)符。
換句話來理解,在標(biāo)定聯(lián)系中,一個(gè)實(shí)體(選課)依賴一個(gè)實(shí)體(學(xué)生),那么(學(xué)生)實(shí)體必須至少有一個(gè)標(biāo)識(shí)符,而(選課)實(shí)體可以沒有自己的標(biāo)識(shí)符,沒有標(biāo)標(biāo)識(shí)符的實(shí)體可以用實(shí)體(學(xué)生)的標(biāo)識(shí)符作為自己的標(biāo)識(shí)符。
遞歸聯(lián)系:遞歸聯(lián)系是實(shí)體集內(nèi)部實(shí)例之間的一種聯(lián)系,通常形象地稱為自反聯(lián)系。同一實(shí)體類型中不同實(shí)體集之間的聯(lián)系也稱為遞歸聯(lián)系。
例如:在“職工”實(shí)體集中存在很多的職工,這些職工之間必須存在一種領(lǐng)導(dǎo)與被領(lǐng)導(dǎo)的關(guān)系。又如“學(xué)生”實(shí)體信中的實(shí)體包含“班長(zhǎng)”子實(shí)體集與“普通學(xué)生”子實(shí)體集,這兩個(gè)子實(shí)體集之間的聯(lián)系就是一種遞歸聯(lián)系。創(chuàng)建遞歸聯(lián)系時(shí),只需要單擊“實(shí)體間建立聯(lián)系”工具從實(shí)體的一部分拖至該實(shí)體的別一個(gè)部分即可。如圖五、
定義聯(lián)系的特性
在兩個(gè)實(shí)體間建立了聯(lián)系后,雙擊聯(lián)系線,打開聯(lián)系特性窗口,如圖所示。
六、
定義聯(lián)系的角色名
在聯(lián)系的兩個(gè)方向上各自包含有一個(gè)分組框,其中的參數(shù)只對(duì)這個(gè)方向起作用,RoleName為角色名,描述該方向聯(lián)系的作用,一般用一個(gè)動(dòng)詞或動(dòng)賓組表。
如:“學(xué)生to課目
”組框中應(yīng)該填寫“擁有”,而在“課目To學(xué)生”組框中填寫“屬于”。(在此只是舉例說明,可能有些用詞不太合理)。七、
定義聯(lián)系的強(qiáng)制性
Mandatory表洋這個(gè)方向聯(lián)系的強(qiáng)制關(guān)系。選中這個(gè)復(fù)選框,則在聯(lián)系線上產(chǎn)生一個(gè)聯(lián)系線垂直的豎線。不選擇這個(gè)復(fù)選框則表示聯(lián)系這個(gè)方向上是可選的,在聯(lián)系線上產(chǎn)生一個(gè)小圓圈。八、
有關(guān)聯(lián)系的基數(shù)
聯(lián)系具有方向性,每個(gè)方向上都有一個(gè)基數(shù)。
舉例,
“系”與“學(xué)生”兩個(gè)實(shí)體之間的聯(lián)系是一對(duì)多聯(lián)系,換句話說“學(xué)生”和“系”之間的聯(lián)系是多對(duì)一聯(lián)系。而且一個(gè)學(xué)生必須屬于一個(gè)系,并且只能屬于一個(gè)系,不能屬于零個(gè)系,所以從“學(xué)生”實(shí)體至“系”實(shí)體的基數(shù)為“1,1”,從聯(lián)系的另一方向考慮,一個(gè)系可以擁有多個(gè)學(xué)生,也可以沒有任何學(xué)生,即零個(gè)學(xué)生,所以該方向聯(lián)系的基數(shù)就為“0,n”,如圖所示
待續(xù)。PowerDesigner開發(fā)技巧與使用powerdesigner設(shè)計(jì)經(jīng)驗(yàn)本文檔不講述如何使用PowerDesigner,而是講述如何將PowerDesigner的特點(diǎn)結(jié)合數(shù)據(jù)庫設(shè)計(jì)的方法更好的設(shè)計(jì)一個(gè)數(shù)據(jù)庫系統(tǒng)。采用PowerDesigner設(shè)計(jì)數(shù)據(jù)庫
PowerDesigner作為數(shù)據(jù)庫建模和設(shè)計(jì)的CASE工具之一,在數(shù)據(jù)庫系統(tǒng)開發(fā)中發(fā)揮著重要作用。運(yùn)用PowerDesigner進(jìn)行數(shù)據(jù)庫設(shè)計(jì),不但給人直觀地理解模型,而且充分運(yùn)用數(shù)據(jù)庫的技術(shù),優(yōu)化數(shù)據(jù)庫的設(shè)計(jì)。PowerDesigner支持Sybase、Oracle、Informix、SQLServer等多種數(shù)據(jù)庫系統(tǒng),在應(yīng)用系統(tǒng)做數(shù)據(jù)庫遷移時(shí)不必維護(hù)多個(gè)數(shù)據(jù)庫腳本。對(duì)于采用結(jié)構(gòu)化分析(SA),E-R圖、數(shù)據(jù)流圖直至最后的數(shù)據(jù)庫物理圖都是系統(tǒng)設(shè)計(jì)時(shí)不可缺少的一個(gè)部分,當(dāng)數(shù)據(jù)庫物理圖完成后,應(yīng)該產(chǎn)生系統(tǒng)的數(shù)據(jù)字典。運(yùn)用PowerDesigner完全能夠完成這一設(shè)計(jì)流程。對(duì)于采用面向?qū)ο蟮姆治觯∣OA),由于數(shù)據(jù)庫采用的是RDBMS,因此存在對(duì)象和關(guān)系數(shù)據(jù)庫之間的映射,也需要進(jìn)行數(shù)據(jù)庫設(shè)計(jì)。兩種數(shù)據(jù)庫模型
PowerDesigner可以設(shè)計(jì)兩種數(shù)據(jù)庫模型圖:數(shù)據(jù)庫邏輯圖(即E-R圖或概念模型)和數(shù)據(jù)庫物理圖(物理模型),并且這兩種數(shù)據(jù)庫圖是互逆的。數(shù)據(jù)庫邏輯圖是對(duì)現(xiàn)實(shí)世界的一種抽象,體現(xiàn)實(shí)體之間的關(guān)系,可以有1對(duì)1、1對(duì)多、多對(duì)多等關(guān)系。特別說一點(diǎn),在擴(kuò)充E-R圖中有概括這種關(guān)系,體現(xiàn)類型之間的一種子集聯(lián)系,它定義了超類和子類。在PowerDesigner設(shè)計(jì)的E-R圖中,不具備這種關(guān)系,但在E-RWin設(shè)計(jì)的模型中支持這種關(guān)系,因此在用E-RWin圖設(shè)計(jì)的模型轉(zhuǎn)化為PowerDesigner的模型時(shí)注意這種關(guān)系。數(shù)據(jù)庫物理圖中是邏輯模型的物理實(shí)現(xiàn),體現(xiàn)了表間的參照關(guān)系。在物理模型中不可能存在多對(duì)多的關(guān)系。在邏輯圖向物理圖轉(zhuǎn)換時(shí),多對(duì)多的關(guān)系變成兩個(gè)1對(duì)多的關(guān)系。邏輯模型和物理模型有著緊密的聯(lián)系,也有本質(zhì)的區(qū)別。邏輯模型的設(shè)計(jì)遵循數(shù)據(jù)庫設(shè)計(jì)理論的第三范式(在一般的數(shù)據(jù)庫應(yīng)用達(dá)到第三范式即可),邏輯模型要求具有應(yīng)用系統(tǒng)所表達(dá)的所有信息并消除數(shù)據(jù)冗余。物理模型是在邏輯模型的基礎(chǔ)上,為了優(yōu)化應(yīng)用系統(tǒng)的性能而采用增加冗余,創(chuàng)建索引等數(shù)據(jù)庫技術(shù),它主要用非規(guī)范化的一些理論。在考慮設(shè)計(jì)的任何非規(guī)范化之前,數(shù)據(jù)庫應(yīng)先完全規(guī)范化,在沒有完全理解數(shù)據(jù)和用戶需求之前,不能進(jìn)行非規(guī)范化。否則導(dǎo)致數(shù)據(jù)的組織越來越混亂,應(yīng)用程序越來越復(fù)雜。因此邏輯模型和物理模型是相互矛盾又緊密聯(lián)系的,這點(diǎn)需要設(shè)計(jì)人員好好把握。PowerDesigner設(shè)計(jì)數(shù)據(jù)庫物理圖用PowerDesigner設(shè)計(jì)數(shù)據(jù)庫物理圖,包括多個(gè)對(duì)象,如表(Table)、字段(Column)、域(Domain)等。設(shè)計(jì)時(shí)主要在PowerDesigner的Dictionary和Database兩個(gè)菜單中。表(Table)表是數(shù)據(jù)存儲(chǔ)的一個(gè)邏輯對(duì)象,包括其它對(duì)象如字段(Column)、索引(Index)、觸發(fā)器(Trigger)、存儲(chǔ)過程(Procedure)等,表的優(yōu)化設(shè)計(jì)有分割等技術(shù),對(duì)于表的存儲(chǔ),如果訪問數(shù)據(jù)量大,訪問頻率高則可考慮將表放在不同的存儲(chǔ)(Storage)上。在設(shè)計(jì)表時(shí),應(yīng)該估算表的大小和增長(zhǎng)量,便于創(chuàng)建數(shù)據(jù)庫時(shí)分配數(shù)據(jù)庫空鍵,這樣減少了磁盤碎片的產(chǎn)生。在關(guān)系數(shù)據(jù)庫中設(shè)計(jì)主鍵時(shí),采用有意義的主鍵是致命的錯(cuò)誤。如果用戶決定改變字段的商業(yè)含義,則需要在所有使用到該信息的地方進(jìn)行修改。主鍵的作用應(yīng)是保持唯一性和作為外鍵使用。任何對(duì)主鍵的修改會(huì)導(dǎo)致巨大的數(shù)據(jù)庫維護(hù)工作量,顯然這是不合適宜的設(shè)計(jì)。就關(guān)系數(shù)據(jù)庫而言,設(shè)計(jì)主鍵策略采用的是代理主鍵的方法。設(shè)計(jì)主鍵時(shí)應(yīng)該避免“熱點(diǎn)”現(xiàn)象,但也需要分析具體的應(yīng)用系統(tǒng)的并發(fā)用戶而定。字段(Column)定義一個(gè)字段主要有字段名、字段類型及長(zhǎng)度、是否主外鍵、是否空、約束、默認(rèn)值、域等。變長(zhǎng)和定長(zhǎng)的數(shù)據(jù)類型在數(shù)據(jù)庫設(shè)計(jì)中討論比較多,作為一般原則,如果預(yù)期某列中的數(shù)據(jù)范圍變化很大,但變化并不頻繁,那末對(duì)這樣的列使用變長(zhǎng)數(shù)據(jù)類型最為適宜。決定行長(zhǎng)時(shí),既不能太浪費(fèi),又不能太吝惜??紤]到將來的需要,并且意識(shí)到,如果增加行長(zhǎng)而沒有改變一頁中容納的行數(shù),那末增加的空間就等于免費(fèi)使用。設(shè)計(jì)時(shí),字段盡量使用域,方便維護(hù)字段的類型。每個(gè)字段最好將默認(rèn)值加上,因?yàn)樵跀?shù)據(jù)庫查詢中,有NULL值會(huì)影響查詢的性能。通過CHECK約束可限制字段的取值。域(Domain)簡(jiǎn)單地說,是用戶自定義類型,但域還可以定義它的取值范圍或默認(rèn)值,采用域減少了維護(hù)字段類型的工作量,也減少數(shù)據(jù)的不一致性。參照(Reference)參照在數(shù)據(jù)庫設(shè)計(jì)中是一個(gè)比較復(fù)雜的問題,它是實(shí)現(xiàn)數(shù)據(jù)的完整性主要要素之一,詳細(xì)論述參考后面數(shù)據(jù)的約束。在PowerDesigner中,可對(duì)參照完整性進(jìn)行各項(xiàng)設(shè)置,參照的基數(shù)從0到n,對(duì)修改和刪除約束可分別設(shè)置為None、Restrict、Cascade、SetNull、SetDefault。由于INSERT包含在UPDATE操作中,因此沒有單獨(dú)的INSERT約束。約束的不同設(shè)置產(chǎn)生不同的效果,以修改為例(刪除相同):
None:父表修改,子表不影響。
Restrict:父表修改,如果子表存在,則出錯(cuò)。
Cascade:父表修改,如果子表存在,則相應(yīng)的修改。
SetNull:父表修改,如果子表存在,則相應(yīng)置空。
SetDefault:父表修改,如果子表存在,則相應(yīng)置默認(rèn)值。索引(Index)索引是優(yōu)化查詢時(shí)采用一種數(shù)據(jù)庫技術(shù),索引有簇索引、非簇索引、唯一索引等。設(shè)計(jì)索引時(shí),要注意索引寬度,盡量減少索引的寬度。索引的寬度不是由字段的多少?zèng)Q定的,而是由字段的長(zhǎng)度來決定。對(duì)于窄索引關(guān)鍵字,在每一索引頁上放置更多的關(guān)鍵字和指針,這樣就能花銷更少的I/O找到數(shù)據(jù)。對(duì)于復(fù)合索引,選擇首列相當(dāng)重要,否則可能不能利用該索引,當(dāng)利用復(fù)合索引查詢時(shí)。必須確保查詢從首列開始。索引還有一個(gè)填充因子(FillFactor),填充因子的大小視表的數(shù)據(jù)增長(zhǎng)量和主鍵定義的情況而定。觸發(fā)器和存儲(chǔ)過程(Trigger&&Procedure)觸發(fā)器在維護(hù)數(shù)據(jù)完整性起著重要作用,它比參照更具靈活性,也能實(shí)現(xiàn)三層結(jié)構(gòu)中數(shù)據(jù)層的業(yè)務(wù)規(guī)則。存儲(chǔ)過程是采用SQL及流程控制語句編寫的完成某種業(yè)務(wù)的腳本。存儲(chǔ)過程在數(shù)據(jù)處理上具有處理速度快、處理靈活等優(yōu)點(diǎn)。但是,存儲(chǔ)過程極大地增加了與數(shù)據(jù)庫之間的耦合,在數(shù)據(jù)庫遷移時(shí),需要重寫存儲(chǔ)過程,從而增加了版本維護(hù)的工作量。如果數(shù)據(jù)庫要求從遷移性考慮,應(yīng)盡量避免使用存儲(chǔ)過程或者觸發(fā)器。如果不人為修改PowerDesigner的觸發(fā)器,其遷移性PowerDesigner自動(dòng)解決。存儲(chǔ)(Storage)不同的數(shù)據(jù)庫中有不同的概念,Sybase稱為設(shè)備(Device),SQLServer稱為文件或文件組(File、FileGroup),而Oracle稱為表空間(TableSpace)。根據(jù)系統(tǒng)創(chuàng)建一個(gè)或多個(gè)存儲(chǔ),按一定的優(yōu)化規(guī)則存放。數(shù)據(jù)庫的劃分?jǐn)?shù)據(jù)庫的劃分以它的物理分布為原則,而不應(yīng)數(shù)據(jù)量、表類型等原則來劃分,數(shù)據(jù)庫的多少對(duì)數(shù)據(jù)庫的性能影響不大。對(duì)于訪問數(shù)據(jù)量大、訪問頻繁的表來說,I/O操作很容易形成嚴(yán)重的瓶頸,因此減少I/O操作和I/O操作阻塞是數(shù)據(jù)庫設(shè)計(jì)考慮的主要問題,解決方法將將表放在多個(gè)設(shè)備上,設(shè)備需創(chuàng)建在不同的物理驅(qū)動(dòng)器上,最好能用智能型或陣列。日志和數(shù)據(jù)分開存儲(chǔ)在不同設(shè)備上,如果索引多且占用空間大,也可以采用如此方式。數(shù)據(jù)庫數(shù)量少的維護(hù)成本比數(shù)量大少。因此數(shù)據(jù)庫劃分以物理分布為原則。在PowerDesigner提供計(jì)算數(shù)據(jù)庫或表的方法(ComputeDatabaseSize),可幫助設(shè)計(jì)者完成數(shù)據(jù)庫的劃分。數(shù)據(jù)庫的完整性數(shù)據(jù)庫完整性可通過存儲(chǔ)過程、聲明性參照完整性(DRI)、數(shù)據(jù)類型、約束、規(guī)則、默認(rèn)值,以及觸發(fā)器來實(shí)現(xiàn)。在數(shù)據(jù)庫內(nèi),這些功能各以特有的方式發(fā)揮作用。綜合利用這些完整性功能,可以使數(shù)據(jù)庫靈活,易于管理,而且很安全。數(shù)據(jù)完整性概念分為幾個(gè)方面?!舯碛蛲暾酝ㄟ^主鍵來強(qiáng)制表的域完整性?!粢猛暾岳脜⒄諄砑訌?qiáng)表之間的邏輯關(guān)系?!魯?shù)值域完整性任何輸入的數(shù)據(jù)在類型和范圍上必須與指定的數(shù)據(jù)類型相匹配,只有當(dāng)某列被說明允許NULL值,才允許向該列輸入NULL。數(shù)據(jù)庫的性能測(cè)試生成數(shù)據(jù)庫之后,應(yīng)進(jìn)行數(shù)據(jù)庫性能測(cè)試,以便優(yōu)化數(shù)據(jù)庫的設(shè)計(jì),因此需要生成測(cè)試數(shù)據(jù),由于是性能測(cè)試,數(shù)據(jù)的規(guī)范性要求不高。通過PowerDesigner可方便地生成測(cè)試數(shù)據(jù)(GenerateTestData),完成性能測(cè)試。數(shù)據(jù)的約束
O-O約束對(duì)父表的INSERT、UPDATE、DELETE操作沒有限制。
M-O約束對(duì)父表操作的約束:父表的INSERT操作,對(duì)M-O約束,父表中間的記錄可以沒有任何約束地添加到表中,因?yàn)檫@種約束中不一定必須有子女。父表的鍵值修改操作,只有在子表中其所有的子女對(duì)應(yīng)均做修改后,才能修改,即一般采用級(jí)聯(lián)更新的方法。父表的刪除,父親只有在其所有子女均被刪除或重新分配之后該父親才能被刪除。強(qiáng)制對(duì)可選(M-O)約束
O-M約束父表操作的約束:父表的INSERT操作,對(duì)O-M約束,一個(gè)父親只有當(dāng)至少當(dāng)它的一個(gè)、子女同時(shí)被加入或至少存在一個(gè)合法的子女時(shí),才能被加入。父表的鍵值修改操作,只有當(dāng)一個(gè)子女被創(chuàng)建或已經(jīng)有一名子女存在才行。父表的刪除,理論上刪除父親是沒有限制的,實(shí)際上,刪除主表記錄時(shí),不采用級(jí)聯(lián)刪除子表的方案,而采用將子表的外鍵置空??蛇x對(duì)強(qiáng)制(O-M)約束
M-M約束父表操作的約束:父表的INSERT操作,可能隨后需要生成子女,即在子表中創(chuàng)建新的行。也可能通過對(duì)子表的重新分配來實(shí)施完整行限制。父表的鍵值修改操作,只有在子表對(duì)應(yīng)的外鍵的值修改成新值時(shí)才能進(jìn)行。實(shí)際可能是先創(chuàng)建新的父表紀(jì)錄,接著修改子表所有對(duì)應(yīng)的紀(jì)錄,使其與父表的新紀(jì)錄關(guān)聯(lián),最后刪除原父表紀(jì)錄。父表的刪除,只有在子表中所有相關(guān)的行全部刪除或重新分配之后,才能刪除父表中的紀(jì)錄,一般對(duì)子表也進(jìn)行刪除操作。強(qiáng)制對(duì)強(qiáng)制(M-M)約束在四類約束:M-M、M-O、O-M、O-O。鍵值的修改可能會(huì)改變表之間的關(guān)系,而且可能違反一些約束。違反約束的操作是不允許的。具體的應(yīng)用必須根據(jù)實(shí)際的要求和商業(yè)規(guī)則進(jìn)行適當(dāng)?shù)倪x擇。但在設(shè)計(jì)和開發(fā)時(shí),必須考慮所分析的約束。物理圖的組織數(shù)據(jù)庫物理的組織以功能來組織為好,讓人很容易就明白該功能需要操作哪些表,數(shù)據(jù)是如何流向的,但是按此組織,可能有些參照建立比較亂,其實(shí)有些參照可以不必建立,如在寫入一個(gè)表時(shí),其數(shù)據(jù)的來源就是從另一個(gè)查詢得到的,可以保證數(shù)據(jù)的正確性,從功能劃分來組織物理圖,就可以不建立這個(gè)參照。數(shù)據(jù)庫的生成有了數(shù)據(jù)庫物理圖,在生成數(shù)據(jù)庫或數(shù)據(jù)庫腳本時(shí),應(yīng)注意如下的問題:參照完整性的實(shí)現(xiàn),可以采用聲明性參照實(shí)現(xiàn)或觸發(fā)器實(shí)現(xiàn),至于兩種實(shí)現(xiàn)的優(yōu)缺點(diǎn),前面已經(jīng)論述過,這里僅說一點(diǎn),如果采用觸發(fā)器實(shí)現(xiàn)需要在生成數(shù)據(jù)庫后再生成觸發(fā)器。當(dāng)參照含有級(jí)聯(lián)(Cascade)刪除或修改時(shí),其實(shí)現(xiàn)要分情況處理:
Sybase、SQLServer不支持聲明性級(jí)聯(lián)(Cascade)刪除或修改,只能通過觸發(fā)器(Trigger)來實(shí)現(xiàn)。
Oracle、Informix支持聲明性級(jí)聯(lián)(Cascade)刪除,但不支持級(jí)聯(lián)(Cascade)修改,也只能通過觸發(fā)器(Trigger)來實(shí)現(xiàn)。當(dāng)定義了用戶自定義類型時(shí),在生成數(shù)據(jù)庫時(shí),最好轉(zhuǎn)換成數(shù)據(jù)庫基本類型,對(duì)數(shù)據(jù)庫性能和遷移都有利。數(shù)據(jù)字典數(shù)據(jù)字典作為產(chǎn)品的一個(gè)歸檔文檔,它定義應(yīng)用系統(tǒng)數(shù)據(jù)庫的各個(gè)方面。數(shù)據(jù)庫物理模型建好后,就可以生成數(shù)據(jù)字典,數(shù)據(jù)字典的內(nèi)容和形式可以在PowerDesigner定義模板,依據(jù)模板生成數(shù)據(jù)字典,再處理一下文檔格式。在PowerDesigner用CreateReport生成數(shù)據(jù)字典。目前系統(tǒng)需要處理和優(yōu)化的地方主鍵的定義:由于對(duì)業(yè)務(wù)了解的深度不夠,某些表的主鍵建立存在一些問題,隨著業(yè)務(wù)的深入逐步完善。參照的建立:主鍵的定義不完善導(dǎo)致了參照建立的不完善,這也只能以后組不完善。數(shù)據(jù)庫的劃分:數(shù)據(jù)庫的劃分前面已經(jīng)談過,由于這個(gè)劃分影響著服務(wù)器和客戶端的程序,也只能以后的新版中解決。表結(jié)構(gòu)的調(diào)整:對(duì)于有些表,如系統(tǒng)設(shè)置表,可以將它的橫向結(jié)構(gòu)改為縱向結(jié)構(gòu),這樣增加了系統(tǒng)的靈活性PowerDesigner12.0精彩薈萃PowerDesigner12.0是一個(gè)包含所有現(xiàn)代建模技術(shù)于一身的全面工具,集成了強(qiáng)有力的業(yè)務(wù)建模技術(shù),傳統(tǒng)的數(shù)據(jù)庫分析和設(shè)計(jì),以及UML對(duì)象模型。通過元模型的管理、沖突分析特性和真正的企業(yè)知識(shí)庫等功能,PowerDesigner12提供了完整的企業(yè)建模工具。公共特性:
?需求管理—通過使用微軟Word的導(dǎo)入和同步功能,收集、連接、管理、存儲(chǔ)用戶分配狀態(tài)(userallocation)和可跟蹤矩陣視圖(traceabilitymatrixviews),并提供了層次化的報(bào)表生成。
?沖突分析—向上和向下檢測(cè)沖突變化。能在變化產(chǎn)生之前以方便和安全的方式呈現(xiàn)存在沖突的文檔和報(bào)表。
?文檔生成—提供全面向?qū)?qū)動(dòng)以及拖拽方式來生成Excel列表、HTML和RTP文檔。
?高度的可擴(kuò)展性—可定制的GUI、MDA、腳本。
?數(shù)據(jù)映射編輯器--以拖拽的方式實(shí)現(xiàn)對(duì)象/關(guān)系、XML到數(shù)據(jù)庫和數(shù)據(jù)倉庫的映射。
?面向服務(wù)的架構(gòu)—在業(yè)務(wù)和技術(shù)級(jí)上構(gòu)建服務(wù)。建模技術(shù):?業(yè)務(wù)建?!B接simulation的業(yè)務(wù)過程建模,并支持BPMN。
?數(shù)據(jù)建?!嗉?jí)的概念模型、邏輯模型、物理模型和數(shù)據(jù)倉庫建模來支持現(xiàn)代的技術(shù),諸如Java,XML以及采用IE和IDEF1/x概念的數(shù)據(jù)庫的Web服務(wù)。
?對(duì)象模型--高度可擴(kuò)展性的UML1.x和2.0建模。
?XML建?!?dú)一無二的支持XMLDTD和Schema框架的數(shù)據(jù)圖。
?企業(yè)建?!娴脑獢?shù)據(jù)管理,以及為支持項(xiàng)目和企業(yè)范圍的沖突分析而提供連接和同步技術(shù)??芍С值钠脚_(tái):?過程執(zhí)行--支持ebXML,BPEL4WS,ServiceOrientedArchitecture
?RDBMS–全面支持60多種RDBMS,包括最新的Oracle,IBMDB/2,MicrosoftSQLServer,Sybase,MySQL,NCRTeradata以及其他數(shù)據(jù)源。
?對(duì)象語言–全面支持JavaJ2EE,C#,VB.NET,PowerBuilder,XML,C++,WebServices以及其他語言。
?開發(fā)整合—支持Eclipse,PowerBuilder和VisualStudio,并以插件的方式和模型實(shí)現(xiàn)代碼的同步。企業(yè)知識(shí)庫:
?理想的團(tuán)隊(duì)解決方案—允許多個(gè)建模成員在一個(gè)相同的模型上同時(shí)工作。
?元模型管理—能在一個(gè)位置上存儲(chǔ)、管理和版本化PowerDesigner模型,以及其他類型的文檔,同時(shí)全面的權(quán)限管理模型,能控制用戶對(duì)模型的訪問和可視化。
?跨模型的沖突分析—知識(shí)庫能為跨企業(yè)的沖突分析提供和維護(hù)完整的存儲(chǔ)和跨模型的依賴關(guān)系。
?軟件資產(chǎn)管理—查找和重用跨越所有模型和項(xiàng)目的對(duì)象。
?安全—基于角色的安全機(jī)制,同時(shí)伴有記錄日志的功能。
?打開—RDBMS中存儲(chǔ)了知識(shí)庫表,以使得能以SQL方式的報(bào)表呈現(xiàn)出來。PowerDesigner中的對(duì)象與關(guān)系映射建模概述
從80年代中期開始,隨著C++語言的成功,面向?qū)ο笳Z言已經(jīng)成為軟件開發(fā)中的主導(dǎo)語言?,F(xiàn)在很多商用軟件,尤其是企業(yè)信息系統(tǒng),都是使用面向?qū)ο笳Z言進(jìn)行開發(fā)的。應(yīng)用面向?qū)ο蠓椒?,我們通過類來抽象不同類別的實(shí)體,屬性來表示實(shí)體的靜態(tài)特征,關(guān)聯(lián)來抽象實(shí)體間的聯(lián)系,繼承來抽象類別的包含關(guān)系。
很多的應(yīng)用程序都需要進(jìn)行數(shù)據(jù)存儲(chǔ),關(guān)系型數(shù)據(jù)庫是最常用的數(shù)據(jù)管理系統(tǒng)。在關(guān)系型數(shù)據(jù)庫中,表、列和外鍵是抽象數(shù)據(jù)的基本元素。關(guān)系型數(shù)據(jù)庫是建立在關(guān)系計(jì)算和布爾代數(shù)基礎(chǔ)之上的,SQL是數(shù)據(jù)庫的操作語言,通過關(guān)系運(yùn)算,連接、聯(lián)合等,來操作數(shù)據(jù)。我們很容易的看出,面向?qū)ο竽P秃完P(guān)系模型是不完全匹配的。比如
1.對(duì)象可以存儲(chǔ)到多張表,表也可以存儲(chǔ)多個(gè)類的對(duì)象。
2.對(duì)象之間的關(guān)系是雙向的,而表之間的關(guān)系是單向的。
3.對(duì)象之間有繼承關(guān)系,表之間沒有。
為了解決這種不匹配,人們定義了很多映射模式來建立兩種模型間的對(duì)應(yīng)關(guān)系。這些映射模式邏輯上解決了模型間的不匹配,使得面向?qū)ο蟪绦蚰軌蛘_地和關(guān)系關(guān)系型數(shù)據(jù)庫進(jìn)行交互,但是對(duì)于程序的開發(fā),仍然有很多問題需要解決。問題
對(duì)于設(shè)計(jì)人員來說,他們需要找到并且描述這兩種模型元素間的映射關(guān)系,以便編程人員能夠正確地實(shí)現(xiàn)數(shù)據(jù)的存儲(chǔ)和查詢?,F(xiàn)在很多建模工具僅提供其中一種模型的支持,比如Together僅支持對(duì)象建模,ERWin僅支持?jǐn)?shù)據(jù)建模。即使同時(shí)支持兩種模型,這種支持也很不完整,比如Rose中的數(shù)據(jù)建模功能。分析設(shè)計(jì)人員常常需要兩種不同的工具來進(jìn)行建模,如果他們想描述這兩種模型元素間的對(duì)應(yīng)關(guān)系,他們只能通過文檔或者表格的形式。這很容易產(chǎn)生錯(cuò)誤,并且如果模型發(fā)生改變,這些文檔需要手工更改,容易造成不一致,維護(hù)起來很困難。
對(duì)于編碼人員,他們需要應(yīng)用某種技術(shù)來實(shí)現(xiàn)模型的這種對(duì)應(yīng)關(guān)系。如果通過語言提供的數(shù)據(jù)庫訪問接口,比如Java的JDBC或者.Net的ADO.Net,對(duì)于每一個(gè)對(duì)象的每一個(gè)存儲(chǔ)操作,編碼人員需要編寫存取操作的SQL,數(shù)據(jù)庫控制和訪問代碼,這是一項(xiàng)繁瑣、重復(fù)性的勞動(dòng)。即使應(yīng)用O/R映射的框架,比如Hibernate,EJB3.0或者.Net平臺(tái)的NHibernate,他們需要編寫映射文件或者通過標(biāo)記來定義O/R映射框架所需要的映射元數(shù)據(jù)。這些映射元數(shù)據(jù)只不過是我們?cè)谠O(shè)計(jì)階段定義的映射關(guān)系另外一種表現(xiàn)方式,轉(zhuǎn)換成XML或者標(biāo)記的方式,無疑這種轉(zhuǎn)換增加了錯(cuò)誤的可能性和維護(hù)的難度。PowerDesigner解決之道
PowerDesigner提供對(duì)于多達(dá)8種模型的支持,其中包括面向?qū)ο竽P秃完P(guān)系數(shù)據(jù)模型。作為一個(gè)集成的企業(yè)建模工具,PowerDesigner并不是簡(jiǎn)單的將幾種模型工具羅列在一起。各種模型相互之間可以建立關(guān)聯(lián),通過這種關(guān)聯(lián),它提供了企業(yè)模型統(tǒng)一、一致的視圖。其中模型間的映射和自動(dòng)生成是建立模型間關(guān)聯(lián)重要的手段。
模型可以描述系統(tǒng)的靜態(tài)特征和動(dòng)態(tài)特征,而靜態(tài)特征可以用來表述系統(tǒng)的持久狀態(tài),比如面向?qū)ο竽P椭械膶?shí)體類,數(shù)據(jù)庫模型的表,XML模型中的元素節(jié)點(diǎn)等。在PowerDesigner中,我們可以在各種可以描述持久狀態(tài)模型間建立映射,比如XML模型到面向?qū)ο竽P烷g的映射,面向?qū)ο竽P偷疥P(guān)系數(shù)據(jù)模型的映射等。下面我們就來看一下,PowerDesigner是如何支持面向?qū)ο竽P偷疥P(guān)系模型的映射的。1.1對(duì)象/關(guān)系映射
下表列出了PowerDesigner中面向?qū)ο笤睾完P(guān)系模型元素間的對(duì)應(yīng)關(guān)系:OOM元素PDM元素域域類表接口無屬性列標(biāo)識(shí)符鍵操作(具有存儲(chǔ)過程范型)存儲(chǔ)過程操作(具有存儲(chǔ)功能范型)存儲(chǔ)功能關(guān)聯(lián)外鍵或者表關(guān)聯(lián)類表和兩個(gè)指向關(guān)聯(lián)的類所生成表的外鍵繼承表或者外鍵依賴無實(shí)現(xiàn)無引用無
在PowerDesigner中,我們可以通過三種方式來建立面向?qū)ο竽P秃完P(guān)系模型間的映射:
1.手工建立映射。
2.自動(dòng)模型生成。
它們分別適用于不同的開發(fā)需求,下面我們就來看如何通過這兩種方式來建立映射。1.2手工建立映射
這種方式適用于以下幾種情況:
1.在已經(jīng)存在的模型間建立映射。企業(yè)的信息系統(tǒng)是一個(gè)異構(gòu)的環(huán)境,很多應(yīng)用程序和數(shù)據(jù)庫都是獨(dú)立開發(fā)的,它們具有不同的模型,如果它們之間需要進(jìn)行數(shù)據(jù)交互,則需要建立它們之間的映射,比如新的ERP系統(tǒng)中和企業(yè)原有的數(shù)據(jù)庫間的映射。
2.數(shù)據(jù)庫和程序由不同的組負(fù)責(zé)設(shè)計(jì)。大型的企業(yè)應(yīng)用程序可能包含很多業(yè)務(wù)子系統(tǒng),每個(gè)業(yè)務(wù)子系統(tǒng)只考慮如何實(shí)現(xiàn)它自己的業(yè)務(wù)需求,而數(shù)據(jù)庫設(shè)計(jì)要從整體出發(fā),考慮整個(gè)應(yīng)用程序的需求。對(duì)于每個(gè)業(yè)務(wù)模塊,需要定義它的邏輯模型和數(shù)據(jù)庫模型間的映射。
在建立映射之前,我們需要給面向?qū)ο竽P蛣?chuàng)建數(shù)據(jù)源,然后添加要映射的數(shù)據(jù)庫模型。表1中可以映射的面向?qū)ο笤囟加幸粋€(gè)映射的定義窗口,比如下圖所示的類的映射屬性頁。通過這個(gè)映射屬性頁,用戶可以添加或者刪
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 中級(jí)經(jīng)濟(jì)師考試分析試題及答案
- 工程項(xiàng)目進(jìn)度延誤的原因試題及答案
- 2025市政工程施工案例試題及答案
- 2024年工程起重機(jī)械項(xiàng)目資金需求報(bào)告代可行性研究報(bào)告
- 英語高級(jí)考試試題及答案
- 教學(xué)檔案建設(shè)與秋季管理計(jì)劃
- 扶貧助農(nóng)面試題及答案
- 財(cái)務(wù)報(bào)表分析的重要性計(jì)劃
- 拍賣品保管責(zé)任協(xié)議
- 專業(yè)約談協(xié)議
- 2024年惠州市博羅縣羅浮山文化旅游投資有限公司招聘筆試真題
- 鋼結(jié)構(gòu)桁架廠房拆除施工方案
- 腦病科醫(yī)護(hù)溝通技巧
- 四年級(jí)數(shù)學(xué)(小數(shù)加減運(yùn)算)計(jì)算題專項(xiàng)練習(xí)與答案
- 民宿實(shí)習(xí)報(bào)告總結(jié)
- 小區(qū)安全排查
- 中國典籍英譯概述課件
- 【MOOC】航空發(fā)動(dòng)機(jī)結(jié)構(gòu)分析與設(shè)計(jì)-南京航空航天大學(xué) 中國大學(xué)慕課MOOC答案
- 紅旅賽道未來規(guī)劃
- 帶電作業(yè)施工方案
- 宏定義與跨平臺(tái)開發(fā)
評(píng)論
0/150
提交評(píng)論