1 引言
ER模型圖中有三大主要元素:實(shí)體型,屬性和聯(lián)系。其中實(shí)體型對(duì)應(yīng)到CDM中的Entity,屬性對(duì)應(yīng)到CDM中每個(gè)Entity的Attribute,在概念上基本上是一一對(duì)應(yīng)的。但在聯(lián)系的處理上,CDM除了保留ER圖原有的RelationShip概念之外,還增加了Associ ati on,Inheritance兩種實(shí)體關(guān)系。圖1給出了工具欄中三個(gè)聯(lián)系工具圖標(biāo)的位置。
圖1 PowerDesign中CDM模型元素工具欄
本文將從簡(jiǎn)單的CDM模型圖入手,對(duì)這些CDM元素進(jìn)行闡述,試圖包含所有數(shù)據(jù)庫(kù)建模必須環(huán)節(jié)。
2 CDM模型
以簡(jiǎn)單的學(xué)校場(chǎng)景的為例,給出圖2所示的CDM模型,該圖中所有元素在后面建模均有覆蓋,以體現(xiàn)最小集與完備性。
圖2 學(xué)校場(chǎng)景的CDM模型
2.1 RelationShip(聯(lián)系)
CDM模型中的聯(lián)系給出了簡(jiǎn)單定義,但如此簡(jiǎn)單的定義反而讓人難以區(qū)分現(xiàn)實(shí)世界實(shí)際存在的一些復(fù)雜情形。
當(dāng)提起實(shí)體間聯(lián)系的時(shí)候,首先想到的是one to one,one to many和many to many這三種聯(lián)系類(lèi)型,在Hibernate和IB atis這兩種居統(tǒng)治地位的ORM框架中也沿用了這三種類(lèi)型。在CDM中,聯(lián)系還有另外三個(gè)可以設(shè)置的屬性:Mandatory(強(qiáng)制性聯(lián)系),Dependent(依賴(lài)性聯(lián)系/標(biāo)定關(guān)聯(lián))和Domi nant(統(tǒng)制聯(lián)系)。這些屬性對(duì)后面PDM的生成都有比較大的影響,需要精確理解。它們都是在聯(lián)系的屬性控制面板中設(shè)定的,圖3所示。
圖3 聯(lián)系屬性控制面板
2.1.1 Mandatory強(qiáng)制性聯(lián)系
聯(lián)系是否具有強(qiáng)制性,指的是實(shí)體間是不是一定會(huì)出現(xiàn)這種聯(lián)系;或者換句話說(shuō),當(dāng)我們?cè)谡劶耙粋(gè)聯(lián)系的應(yīng)用場(chǎng)景的時(shí)候,聯(lián)系對(duì)應(yīng)的那兩個(gè)實(shí)體型的實(shí)體實(shí)例的個(gè)數(shù)可不可能為零。也許這樣的解釋還是有點(diǎn)抽象,讓我們舉兩個(gè)聯(lián)系的例子,一個(gè)是對(duì)兩邊的實(shí)體都有強(qiáng)制性的,另一個(gè)則不然。
(1)教師——學(xué)生聯(lián)系
這個(gè)聯(lián)系首先是一個(gè)多對(duì)多聯(lián)系,因?yàn)槊總(gè)老師可以教多個(gè)學(xué)生,每個(gè)學(xué)生也都有多個(gè)老師來(lái)負(fù)責(zé)他們的學(xué)業(yè)。同時(shí),這個(gè)聯(lián)系對(duì)教師和學(xué)生都是強(qiáng)制性的,也就是說(shuō),不存在任何一個(gè)老師,他不負(fù)責(zé)任何一個(gè)學(xué)生的教學(xué);也不存在任何一個(gè)學(xué)生,他沒(méi)有任何一個(gè)任課老師。
(2)學(xué)生——俱樂(lè)部聯(lián)系
這也是一個(gè)多對(duì)多關(guān)系,但它對(duì)學(xué)生這個(gè)實(shí)體型而言就不是強(qiáng)制的(Optional,可選的)。每個(gè)俱樂(lè)部都有至少一個(gè)學(xué)生參加,但并不是每個(gè)學(xué)生都要去參加俱樂(lè)部的活動(dòng)。完全可以有一些學(xué)生,他們什么俱樂(lè)部都沒(méi)參加。
上面的例子從概念的角度來(lái)區(qū)分了Mandatory和Optional的區(qū)別。如果把這個(gè)模型對(duì)應(yīng)到我們最后生成的表,如果A-B間的聯(lián)系對(duì)A是Mandatory的話,那么如果在A里面如果包含B的外鍵,這個(gè)外鍵不能為空值,反之可以為空值。
2.1.2 Dependent
每一個(gè)E ntity型都有獨(dú)立的Identifier,若兩個(gè)Entity型之間發(fā)生關(guān)聯(lián),其中一個(gè)Entity型的Identifier進(jìn)入另一個(gè)Entity型并與該Entity型中的ld en tifi er共同組成其lden tifi er時(shí),這種關(guān)聯(lián)稱(chēng)為標(biāo)定關(guān)聯(lián),也叫依賴(lài)性關(guān)聯(lián)(Dependent Relationship)。一個(gè)Entity型的Identifier進(jìn)入另一個(gè)Entity型后充當(dāng)其非Identifier時(shí),這種關(guān)聯(lián)稱(chēng)為非標(biāo)定關(guān)聯(lián),也叫非依賴(lài)關(guān)聯(lián)。
上述敘述表達(dá)的就是主,從表關(guān)系,從表要依賴(lài)于主表。比如在我們系統(tǒng)里要記錄教師休假的情況,有一個(gè)實(shí)體型H oliday,其屬性包括休假的開(kāi)始時(shí)間和天數(shù),每次有教師休假的時(shí)候,都要在這個(gè)表留下記錄。從我們的場(chǎng)景描述中可以看到,實(shí)體型假期必須依附于實(shí)體型教師,即對(duì)于每一個(gè)假期實(shí)例,必須指向某一個(gè)教師實(shí)例。
對(duì)于依賴(lài)型聯(lián)系,注意它不能是一個(gè)多對(duì)多聯(lián)系;如果是多對(duì)多關(guān)系,需要簡(jiǎn)單的將其轉(zhuǎn)換為兩個(gè)主,從表的多對(duì)一關(guān)系。在這個(gè)聯(lián)系中,必須有一個(gè)作為主體的實(shí)體型。一個(gè)Dependent聯(lián)系的從實(shí)體可以沒(méi)有自己的Identifier。
2.1.3 Dominant依賴(lài)性聯(lián)系
這個(gè)聯(lián)系屬性是最簡(jiǎn)單的,它僅作用于一對(duì)一聯(lián)系,并指明這種聯(lián)系中的主從表關(guān)系,習(xí)慣上稱(chēng)之為標(biāo)定關(guān)聯(lián)。在A,B兩個(gè)實(shí)體型的聯(lián)系中,如果A→B被指定為Dominant,那么A為這個(gè)一對(duì)一聯(lián)系的主表,B為從表,并且在以后生成的PDM中會(huì)產(chǎn)生一個(gè)引用(如果不指定Dominant屬性的話會(huì)產(chǎn)生兩個(gè)引用)。比如老師和班級(jí)之間的聯(lián)系,因?yàn)槊總(gè)班級(jí)都有一個(gè)老師做班主任,每個(gè)老師也最多只能做一個(gè)班級(jí)的班主任,所以是一個(gè)一對(duì)一關(guān)系。同時(shí),我們可以將老師作為主表,用老師的工號(hào)來(lái)唯一確定一個(gè)班主任聯(lián)系。
2.2 Association(關(guān)聯(lián))
A ssoci ation給出的定義出現(xiàn)了許多RelationShip,也就是2.1中給出的聯(lián)系。在很多情況下(特別是多對(duì)多關(guān)系中),我們會(huì)把聯(lián)系專(zhuān)門(mén)提出來(lái),作為一個(gè)實(shí)體型放在兩個(gè)需要被關(guān)聯(lián)的實(shí)體型中間(在PD中,選中任何一個(gè)聯(lián)系,在右鍵的彈出菜單中選擇“Change to Entity”命令即可完成聯(lián)系轉(zhuǎn)實(shí)體的操作)。類(lèi)似的做法,在UML的通用建模工具Rational Rose中定義了Association Class來(lái)建立ORM映射日。但有時(shí),把若干個(gè)實(shí)體型之間的聯(lián)系抽象為一個(gè)實(shí)體型可能不太合適,這時(shí)可選擇為這些實(shí)體型建立一個(gè)Association,那么在生成PDM的時(shí)候,所有這些相關(guān)實(shí)體型的Identifier都會(huì)被加入到Associ ati on對(duì)應(yīng)生成的表模型中。
更貼切的理解,其實(shí)Association是實(shí)體型的一種特例,用來(lái)在建模的時(shí)候更確切的表達(dá)實(shí)體間的關(guān)聯(lián)信息。在本文的學(xué)校模型里,定義了家訪做為老師和學(xué)生實(shí)體型中間的一個(gè)A ssoci ati on,在接下來(lái)產(chǎn)生的PDM中能看到這種定義所產(chǎn)生的效果。
2.3 Inheritance(繼承)
非常簡(jiǎn)但的IS-A關(guān)系模型。
3 PDM模型
前面給出了CDM中關(guān)于實(shí)體間關(guān)系的主要內(nèi)容,接下來(lái)將探討CDM→PDM。
圖4為對(duì)應(yīng)圖3的PDM模型,圖4中標(biāo)紅的部分都是由于對(duì)實(shí)體型間的關(guān)系的定義而產(chǎn)生的,下面給出簡(jiǎn)要說(shuō)明。
1.“師生關(guān)系”和“學(xué)生俱樂(lè)部”這兩個(gè)表是由于我們的多對(duì)多關(guān)系而產(chǎn)生的。
圖4 對(duì)應(yīng)的PDM模型
2.“假期”表的“工號(hào)”字段是由于我們將教師,假期關(guān)系指定為Dependent而產(chǎn)生的。
3.“班級(jí)”表的“工號(hào)”字段是由于我們將教師.班級(jí)關(guān)系制定為Dominant而產(chǎn)生的。
4.“家訪”表中的“工號(hào)”和“學(xué)號(hào)”字段是由于家訪是教師和學(xué)生實(shí)體型的A ssoci ati on而產(chǎn)生的。
此外,在2.1.3節(jié)中提到,一個(gè)沒(méi)指定Dominant方向的一對(duì)一聯(lián)系將產(chǎn)生兩個(gè)引用,因此需要把原本的CDM中的教師,班級(jí)關(guān)系進(jìn)行一個(gè)修改,去掉這個(gè)Relation Ship的Dominant定義,那么最終產(chǎn)生的PDM中教師表和班級(jí)表將互相包含對(duì)方的主鍵。截圖如下:
圖5 修改后的PDM模型局部
對(duì)照?qǐng)D5和圖4兩個(gè)PDM模型的區(qū)別,容易得看出Dominant屬性對(duì)一個(gè)一對(duì)一關(guān)系的作用。
4 小結(jié)
PD建模遵循著第一步嚴(yán)格精確設(shè)計(jì),后繼自動(dòng)化演化生成的原則。因此CDM模型的完備性與精確性至關(guān)重要。CDM模型最復(fù)雜難以把握的是其對(duì)聯(lián)系的擴(kuò)展。本文從PD Online在線文檔出發(fā),對(duì)CDM和PDM建模作了清晰的路線圖闡述,給出了完整的實(shí)例。
核心關(guān)注:拓步ERP系統(tǒng)平臺(tái)是覆蓋了眾多的業(yè)務(wù)領(lǐng)域、行業(yè)應(yīng)用,蘊(yùn)涵了豐富的ERP管理思想,集成了ERP軟件業(yè)務(wù)管理理念,功能涉及供應(yīng)鏈、成本、制造、CRM、HR等眾多業(yè)務(wù)領(lǐng)域的管理,全面涵蓋了企業(yè)關(guān)注ERP管理系統(tǒng)的核心領(lǐng)域,是眾多中小企業(yè)信息化建設(shè)首選的ERP管理軟件信賴(lài)品牌。
轉(zhuǎn)載請(qǐng)注明出處:拓步ERP資訊網(wǎng)http://www.ezxoed.cn/
本文標(biāo)題:Power Designer中CDM與PDM模型解析
本文網(wǎng)址:http://www.ezxoed.cn/html/solutions/1401936999.html