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