概念數(shù)據(jù)模型.doc
《概念數(shù)據(jù)模型.doc》由會(huì)員分享,可在線閱讀,更多相關(guān)《概念數(shù)據(jù)模型.doc(23頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
一、概念數(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ù)庫(kù)的概念級(jí)設(shè)計(jì)。 通常人們先將現(xiàn)實(shí)世界抽象為概念世界,然后再將概念世界轉(zhuǎn)為機(jī)器世界。換句話說(shuō),就是先將現(xiàn)實(shí)世界中的客觀對(duì)象抽象為實(shí)體(Entity)和聯(lián)系(Relationship),它并不依賴于具體的計(jì)算機(jī)系統(tǒng)或某個(gè)DBMS系統(tǒng),這種模型就是我們所說(shuō)的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í)體都有用來(lái)描述實(shí)體特征的一組性質(zhì),稱之為屬性,一個(gè)實(shí)體由若干個(gè)屬性來(lái)描述。如學(xué)生實(shí)體可由學(xué)號(hào)、姓名、性別、出生年月、所在系別、入學(xué)年份等屬性組成。 實(shí)體集(Entity Set)是具體相同類型及相同性質(zhì)實(shí)體的集合。例如學(xué)校所有學(xué)生的集合可定義為“學(xué)生”實(shí)體集,“學(xué)生”實(shí)體集中的每個(gè)實(shí)體均具有學(xué)號(hào)、姓名、性別、出生年月、所在系別、入學(xué)年份等性質(zhì)。 實(shí)體類型(Entity Type)是實(shí)體集中每個(gè)實(shí)體所具有的共同性質(zhì)的集合,例如“患者”實(shí)體類型為:患者{門(mén)診號(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á) 介紹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ì)說(shuō)明) 3)選擇新增的CDM模型,右擊,在彈出的菜單中選擇“Properties”屬性項(xiàng),彈出如圖所示對(duì)話框。在“General”標(biāo)簽里可以輸入所建模型的名稱、代碼、描述、創(chuàng)建者、版本以及默認(rèn)的圖表等等信息。在“Notes”標(biāo)簽里可以輸入相關(guān)描述及說(shuō)明信息。當(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),打開(kāi)下列圖標(biāo)窗口,在此窗口“General”標(biāo)簽中可以輸入實(shí)體的名稱、代碼、描述等信息。 三、添加實(shí)體屬性 1)在上述窗口的“Attribute”選項(xiàng)標(biāo)簽上可以添加屬性,如下圖所示。 注意: 數(shù)據(jù)項(xiàng)中的“添加屬性”和“重用已有數(shù)據(jù)項(xiàng)”這兩項(xiàng)功能與模型中Data Item的Unique code 和Allow reuse選項(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的屬性上 一、定義屬性的標(biāo)準(zhǔn)檢查約束 標(biāo)準(zhǔn)檢查約束是一組確保屬性有效的表達(dá)式。在實(shí)體屬性的特性窗口,打開(kāi)如圖所示的檢查選項(xiàng)卡。 在這個(gè)選項(xiàng)卡可以定義屬性的標(biāo)準(zhǔn)檢查約束,窗口中每項(xiàng)的參數(shù)的含義,如下 參數(shù)說(shuō)明Minimum屬性可接受的最小數(shù)Maximum 屬性可接受的最大數(shù)Default屬性不賦值時(shí),系統(tǒng)提供的默認(rèn)值Unit單位,如公里、噸、元Format屬性的數(shù)據(jù)顯示格式Lowercase屬性的賦值全部變?yōu)樾?xiě)字母Uppercase屬性的賦值全部變?yōu)榇髮?xiě)字母Cannot modify該屬性一旦賦值不能再修改List Of Values屬性賦值列表,除列表中的值,不能有其他的值Label屬性列表值的標(biāo)簽 二、定義屬性的附加檢查 當(dāng)Standard checks 或Rules 不能滿足檢查的要求時(shí),可以在Additional Checks選項(xiàng)卡的Server子頁(yè)上,通過(guò)SQL語(yǔ)句中使用%MINMAX%、%LISTVAL%、%RULES%、%UPPER%、%LOWER%幾個(gè)變量來(lái)定義Standard和Rule,如圖所示 %MINMAX%、%LISTVAL%、%UPPER%、%LOWER% 在Standard Check中定義的Minimum 和Maximum、List values 、uppervalues、lowervalues %RULES% 在Rules特性窗口Expression選項(xiàng)卡中定義的有效性規(guī)則表達(dá)式 一、標(biāo)識(shí)符 標(biāo)識(shí)符是實(shí)體中一個(gè)或多個(gè)屬性的集合,可用來(lái)唯一標(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)擊“Add Attributes”工具,彈出如圖所示窗口,選擇某個(gè)屬性作為標(biāo)識(shí)符就行了。 一、數(shù)據(jù)項(xiàng) 數(shù)據(jù)項(xiàng)(Data Item)是信息存儲(chǔ)的最小單位,它可以附加在實(shí)體上作為實(shí)體的屬性。 注意:模型中允許存在沒(méi)有附加至任何實(shí)體上的數(shù)據(jù)項(xiàng)。 二、新建數(shù)據(jù)項(xiàng) 1)使用“Model”---> Data Items 菜單,在打開(kāi)的窗口中顯示已有的數(shù)據(jù)項(xiàng)的列表,點(diǎn)擊 “Add a Row”按鈕,創(chuàng)建一個(gè)新數(shù)據(jù)項(xiàng),如圖所示 2)當(dāng)然您可以繼續(xù)設(shè)置具體數(shù)據(jù)項(xiàng)的Code、DataType、Length等等信息。這里就不再詳細(xì)說(shuō)明了。 三、數(shù)據(jù)項(xiàng)的唯一性代碼選項(xiàng)和重用選項(xiàng) 使用Tools--->Model Options->Model Settings。在Data Item組框中定義數(shù)據(jù)項(xiàng)的唯一性代碼選項(xiàng)(Unique Code)與重用選項(xiàng)(Allow Reuse)。 注意: 如果選擇Unique Code復(fù)選框 ,每個(gè)數(shù)據(jù)項(xiàng)在同一個(gè)命名空間有唯一的代碼,而選擇Allow reuse ,一個(gè)數(shù)據(jù)項(xiàng)可以充當(dāng)多個(gè)實(shí)體的屬性。 四、在實(shí)體中添加數(shù)據(jù)項(xiàng) 1)雙擊一個(gè)實(shí)體符號(hào),打開(kāi)該實(shí)體的屬性窗口。 2)單擊Attributes選項(xiàng)卡,打開(kāi)如下圖所示窗口 注意: Add a DataItem 與 Reuse a DataItem的區(qū)別在于 Add a DataItem 情況下,選擇一個(gè)已經(jīng)存在的數(shù)據(jù)項(xiàng),系統(tǒng)會(huì)自動(dòng)復(fù)制所選擇的數(shù)據(jù)項(xiàng)。如果您設(shè)置了UniqueCode選項(xiàng),那系統(tǒng)在復(fù)制過(guò)程中,新數(shù)據(jù)項(xiàng)的Code會(huì)自動(dòng)生成一個(gè)唯一的號(hào)碼,否則與所選擇的數(shù)據(jù)項(xiàng)完全一致。 Reuse a DataItem情況下,只引用不新增,就是引用那些已經(jīng)存在的數(shù)據(jù)項(xiàng),作為新實(shí)體的數(shù)據(jù)項(xiàng) 一、 聯(lián)系 聯(lián)系(Relationship)是指實(shí)體集這間或?qū)嶓w集內(nèi)部實(shí)例之間的連接。 實(shí)體之間可以通過(guò)聯(lián)系來(lái)相互關(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 TO ONE)聯(lián)系、一對(duì)多(ONE TO MANY)聯(lián)系、多對(duì)一(MANY TO ONE)聯(lián)系和多對(duì)多聯(lián)系(MANY TO MANY)。二、 建立聯(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 TO ONE)聯(lián)系、一對(duì)多(ONE TO MANY)聯(lián)系、多對(duì)一(MANY TO ONE)聯(lián)系和多對(duì)多聯(lián)系(MANY TO MANY)。如圖所示 四、 其他幾類特殊聯(lián)系 除了4種基本的聯(lián)系之外,實(shí)體集與實(shí)體集之間還存在標(biāo)定聯(lián)系(Identify Relationship)、非標(biāo)定聯(lián)系(Non-Identify RelationShip)和遞歸聯(lián)系(Recursive Relationship)。 標(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í)體卻可以沒(méi)有自己的標(biāo)識(shí)符。沒(méi)有標(biāo)識(shí)符的實(shí)體用它所依賴的實(shí)體的標(biāo)識(shí)符作為自己的標(biāo)識(shí)符。 換句話來(lái)理解,在標(biāo)定聯(lián)系中,一個(gè)實(shí)體(選課)依賴 一個(gè)實(shí)體(學(xué)生),那么(學(xué)生)實(shí)體必須至少有一個(gè)標(biāo)識(shí)符,而(選課)實(shí)體可以沒(méi)有自己的標(biāo)識(shí)符,沒(méi)有標(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)系線,打開(kāi)聯(lián)系特性窗口,如圖所示。 六、 定義聯(lián)系的角色名 在聯(lián)系的兩個(gè)方向上各自包含有一個(gè)分組框,其中的參數(shù)只對(duì)這個(gè)方向起作用,Role Name為角色名,描述該方向聯(lián)系的作用,一般用一個(gè)動(dòng)詞或動(dòng)賓組表。 如:“學(xué)生 to 課目 ” 組框中應(yīng)該填寫(xiě)“擁有”,而在“課目To 學(xué)生”組框中填寫(xiě)“屬于”。(在此只是舉例說(shuō)明,可能有些用詞不太合理)。 七、 定義聯(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)系,換句話說(shuō)“學(xué)生”和“系”之間的聯(lián)系是多對(duì)一聯(lián)系。而且一個(gè)學(xué)生必須屬于一個(gè)系,并且只能屬于一個(gè)系,不能屬于零個(gè)系,所以從“學(xué)生”實(shí)體至“系”實(shí)體的基數(shù)為“1,1”,從聯(lián)系的另一方向考慮,一個(gè)系可以擁有多個(gè)學(xué)生,也可以沒(méi)有任何學(xué)生,即零個(gè)學(xué)生,所以該方向聯(lián)系的基數(shù)就為“0,n”,如圖所示 CDM是大多數(shù)開(kāi)發(fā)者使用PD時(shí)最先創(chuàng)建的模型,也是整個(gè)數(shù)據(jù)庫(kù)設(shè)計(jì)最高層的抽象。CDM是建立在傳統(tǒng)的ER圖模型理論之上的,ER圖中有三大主要元素:實(shí)體型,屬性和聯(lián)系。其中實(shí)體型對(duì)應(yīng)到CDM中的Entity,屬性對(duì)應(yīng)到CDM中每個(gè)Entity的Attribute,在概念上基本上是一一對(duì)應(yīng)的。但在聯(lián)系上,CDM有了比較大的擴(kuò)展,除了保留ER圖原有的RelationShip概念之外,還增加了Association,Inheritance兩種實(shí)體關(guān)系,下面就讓我們分別看看這些關(guān)系的用法和之間的區(qū)別(下圖中被標(biāo)紅的工具欄按鈕就是用來(lái)向?qū)嶓w中添加這些關(guān)系的)。 另外,在介紹所有這些CDM中的元素之前,筆者先給出一個(gè)很簡(jiǎn)單的CDM圖,是對(duì)我們最最熟悉的學(xué)校場(chǎng)景的一個(gè)建模,下文中提到的所有概念在圖中都有體現(xiàn),大家在看下文的時(shí)候可以對(duì)照著來(lái)看: 一. RelationShip(聯(lián)系) 先給出PD手冊(cè)里對(duì)聯(lián)系的定義:“A relationship is a link between entities. For example, in a CDM that manages human resources, the relationship Member links the entities Employee and Team, because employees can be members of teams. This relationship expresses that each employee works in a team and that each team has employees.” 可見(jiàn),也許聯(lián)系的概念真的太簡(jiǎn)單了吧,所以反而不那么好表述,所以PD的文檔里也是用一個(gè)例子來(lái)說(shuō)明出現(xiàn)了什么樣的情況我們就認(rèn)為兩個(gè)實(shí)體間是有聯(lián)系的。 當(dāng)我們提起實(shí)體間聯(lián)系的時(shí)候,最先想到的恐怕是one to one,one to many 和many to many這三種聯(lián)系類型,這些聯(lián)系類型也是大家最熟悉的。筆者對(duì)ER圖原本的概念并不精通,但在CDM中,聯(lián)系還有另外三個(gè)可以設(shè)置的屬性:mandatory(強(qiáng)制性聯(lián)系), dependent(依賴性聯(lián)系/標(biāo)定關(guān)聯(lián)) 和dominant(統(tǒng)制聯(lián)系)。這些屬性對(duì)后面PDM的生成都有比較大的影響,需要我們一一有所了解。它們都是在聯(lián)系的屬性控制面板中設(shè)定的,見(jiàn)下圖: 1.mandatory 聯(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è)聯(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ū)別。實(shí)際上如果把這個(gè)模型對(duì)應(yīng)到我們最后生成的表,如果A-B間的聯(lián)系對(duì)A是mandatory的話,那么如果在A里面如果包含B的外鍵,這個(gè)外鍵不能為空值,反之可以為空值。后面我們談到PDM和實(shí)際數(shù)據(jù)庫(kù)的時(shí)候,大家會(huì)看到這一點(diǎn)。 2.dependent 每一個(gè)Entity型都有自己的Identifier,如果兩個(gè)Entity型之間發(fā)生關(guān)聯(lián)時(shí),其中一個(gè)Entity型的Identifier進(jìn)入另一個(gè)Entity型并與該 Entity型中的Identifier共同組成其Identifier時(shí),這種關(guān)聯(lián)稱為標(biāo)定關(guān)聯(lián),也叫依賴性關(guān)聯(lián)(dependent relationship)。一個(gè)Entity型的Identifier進(jìn)入另一個(gè)Entity型后充當(dāng)其非Identifier時(shí),這種關(guān)聯(lián)稱為非標(biāo)定關(guān)聯(lián),也叫非依賴關(guān)聯(lián)。 概念的定義說(shuō)起來(lái)還是有些拗口,說(shuō)白了其實(shí)就是主-從表關(guān)系,從表要依賴于主表。比如在我們系統(tǒng)里要記錄教師休假的情況,有一個(gè)實(shí)體型Holiday,其屬性包括休假的開(kāi)始時(shí)間和天數(shù),每次有教師休假的時(shí)候,都要在這個(gè)表留下記錄。從我們的場(chǎng)景描述中可以看到,實(shí)體型假期必須依附于實(shí)體型教師,即對(duì)于每一個(gè)假期實(shí)例,必須指向某一個(gè)教師實(shí)例。 對(duì)于依賴型聯(lián)系,必須注意它不可能是一個(gè)多對(duì)多聯(lián)系,在這個(gè)聯(lián)系中,必須有一個(gè)作為主體的實(shí)體型。一個(gè)dependent聯(lián)系的從實(shí)體可以沒(méi)有自己的identifier. 3.dominant 這個(gè)聯(lián)系屬性是最為簡(jiǎn)單的,它僅作用于一對(duì)一聯(lián)系,并指明這種聯(lián)系中的主從表關(guā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)系。 二.Association(關(guān)聯(lián)) 先來(lái)看一下PD給association的定義:“An association is a connection between entities. In the Merise modeling methodology an association is used to connect several entities that each represents clearly defined objects, but are linked by an event, which may not be so clearly represented by another entity.”。 在上一小段提到的那些RelationShip,在很多情況下(特別是多對(duì)多關(guān)系中),我們會(huì)把聯(liá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í)體的操作)。但有的時(shí)候,把若干個(gè)實(shí)體型之間的聯(lián)系抽象為一個(gè)實(shí)體型可能不太合適,這個(gè)時(shí)候你可以選擇為這些實(shí)體型建立一個(gè)association,那么在生成PDM的時(shí)候,所有這些相關(guān)實(shí)體型的identifier都會(huì)被加入到association對(duì)應(yīng)生成的表模型中。所以,說(shuō)白了,其實(shí)association就是實(shí)體型的一種特例,用來(lái)在建模的時(shí)候更確切的表達(dá)實(shí)體間的關(guān)聯(lián)信息。在PD的文檔中舉了一個(gè)錄音帶、顧客、商店三個(gè)實(shí)體型在租借錄音帶這個(gè)場(chǎng)景上發(fā)生關(guān)聯(lián),然后把租借定義為上述三個(gè)實(shí)體型之間的association的例子,非常確切。在我們的學(xué)校模型里,我定義了家訪做為老師和學(xué)生實(shí)體型中間的一個(gè)association,在接下來(lái)產(chǎn)生的PDM中大家就可能看到這種定義所產(chǎn)生的效果。 三.Inheritance(繼承) 這種關(guān)系在概念層面是最容易理解的了,本文就不贅述了。 前面已經(jīng)介紹了CDM中關(guān)于實(shí)體間關(guān)系的主要內(nèi)容,接下來(lái)我們就來(lái)看看根據(jù)這個(gè)CDM所生成的PDM是一個(gè)什么樣子: 上圖中所有標(biāo)紅的部分是我們最應(yīng)該關(guān)注的內(nèi)容,因?yàn)樗麄兌际怯捎谖覀儗?duì)實(shí)體型間的關(guān)系的定義而產(chǎn)生的,下面給出一些簡(jiǎn)單的說(shuō)明。 1. “師生關(guān)系”和“學(xué)生俱樂(lè)部”這兩個(gè)表是由于我們的多對(duì)多關(guān)系而產(chǎn)生的。 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í)體型的association而產(chǎn)生的。 另外,記得我們?cè)谔岬絛ominant屬性的時(shí)候說(shuō)過(guò),一個(gè)沒(méi)指定dominant方向的一對(duì)一聯(lián)系將產(chǎn)生兩個(gè)引用,下面我們就把原本的CDM中的教師-班級(jí)關(guān)系進(jìn)行一個(gè)小小的修改,去掉這個(gè)relationship的dominant定義,那么最終產(chǎn)生的PDM中教師表和班級(jí)表將互相包含對(duì)方的主鍵(由于我們的班級(jí)表沒(méi)有自己的主鍵,所以只能在班級(jí)表中看到多出來(lái)的列),截圖如下: 對(duì)照這個(gè)PDM截圖和上一個(gè)PDM截圖之間的區(qū)別,大家可以很容易得看出dominant屬性對(duì)一個(gè)一對(duì)一關(guān)系的作用。- 1.請(qǐng)仔細(xì)閱讀文檔,確保文檔完整性,對(duì)于不預(yù)覽、不比對(duì)內(nèi)容而直接下載帶來(lái)的問(wèn)題本站不予受理。
- 2.下載的文檔,不會(huì)出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請(qǐng)點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
9.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁(yè)顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開(kāi)word文檔。
- 特殊限制:
部分文檔作品中含有的國(guó)旗、國(guó)徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對(duì)作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 概念 數(shù)據(jù)模型
鏈接地址:http://appdesigncorp.com/p-6654568.html