使用PowerDesigner進(jìn)行數(shù)據(jù)庫設(shè)計(jì),去年是第一次使用,使用它完成了一次小型的數(shù)據(jù)庫設(shè)計(jì)。今年是第二次使用,中間間隔了幾個(gè)月,再次打開PowerDesigner時(shí),已經(jīng)把使用步驟忘記個(gè)差不多了,有些還需要再去查找一下資料。為了能夠把PowerDesigner使用步驟刻在腦子里,這次對(duì)PowerDesigner的常規(guī)使用步驟做一些記錄,來加深印象,日后忘記時(shí),有的查找,畢竟自己寫過的東西能夠再現(xiàn)出使用場景來。
為了能夠爐火純青地使用PowerDesigner,還特意買了一本從入門到精通的書,作為參考,最近又把這本書翻了一遍,果真是本參考書,把PowerDesigner里面的菜單全都翻譯了一遍,好好地詳細(xì)地翻譯了一遍。如果PowerDesigner使用的不熟練,只有兩方面原因,第一:英文不好,第二:使用的少。本人是兩者都占到了。
作為一名使用PowerDesigner的小白,如何快速上手呢,為何強(qiáng)調(diào)快速上手,主要因?yàn)橛貌坏降臅r(shí)候不愿意主動(dòng)學(xué)習(xí),用到的時(shí)候多半是任務(wù)緊迫,要在有限的時(shí)間內(nèi)做出設(shè)計(jì)來??峙逻@時(shí),連翻書都沒有耐心翻下去了。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 初識(shí)PowerDesigner
使用PowerDesigner做數(shù)據(jù)庫設(shè)計(jì),主要用到兩個(gè)大的模型,第一個(gè)是CDM,第二個(gè)是PDM。使用步驟大抵如下,先創(chuàng)建CDM,然后把CDM轉(zhuǎn)化成PDM,最后把PDM轉(zhuǎn)化成數(shù)據(jù)庫sql執(zhí)行語句,還可以把PDM轉(zhuǎn)化成word可視化數(shù)據(jù)庫文檔。可執(zhí)行的sql語句和可視化word文檔是做設(shè)計(jì)的最終成果,sql語句用于創(chuàng)建數(shù)據(jù)庫,可視化word文檔用于團(tuán)隊(duì)成員的溝通、開發(fā)及后期維護(hù)。PowerDesigner工具的亮點(diǎn)就是生成可執(zhí)行的sql語句、可視化的word數(shù)據(jù)庫文檔。能不能快速高效地做出一份數(shù)據(jù)庫設(shè)計(jì),關(guān)鍵在于CDM的設(shè)計(jì)。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 概念數(shù)據(jù)模型CDM介紹
CDM是ConceptualDataMode的英文簡稱,概念數(shù)據(jù)模型的意思。在CDM中,有幾個(gè)要素需要熟識(shí)一下,第一個(gè)是實(shí)體entity,第二個(gè)是實(shí)體entity中的屬性attributes,也就是列。第三個(gè)是域domains,域是對(duì)屬性attributes的歸類,可以提前創(chuàng)建域。在設(shè)置實(shí)體entity中的屬性attributes時(shí),先創(chuàng)建好屬性的名稱name和編碼code,然后選擇合適的域domains,就可以設(shè)定屬性的數(shù)據(jù)類型datatype和長度length。第四個(gè)是關(guān)系relationship,也就是兩個(gè)實(shí)體之間的關(guān)聯(lián)關(guān)系,是一對(duì)一的關(guān)系,還是一對(duì)多的關(guān)系,還是多對(duì)多的關(guān)系。第五個(gè)是關(guān)聯(lián)association,關(guān)聯(lián)是實(shí)體的多對(duì)多關(guān)系,在做數(shù)據(jù)設(shè)計(jì)時(shí),一對(duì)多時(shí),可以把一存儲(chǔ)在多的表中做外鍵,多對(duì)多時(shí),需要另外建一個(gè)表進(jìn)行關(guān)聯(lián),這就是關(guān)聯(lián)association。在CDM中表現(xiàn)為關(guān)聯(lián)association,用于區(qū)別一般的實(shí)體。還漏掉了一個(gè)就是標(biāo)識(shí)符identifier就是實(shí)體中的主鍵。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? CDM創(chuàng)建,手把手實(shí)際操作
第一步,創(chuàng)建概念數(shù)據(jù)模型CDM,并對(duì)其命名。
打開PowerDesigner工具,在工具欄點(diǎn)擊文件,在打開的菜單欄中,選擇第一個(gè)選項(xiàng)->建立新模型,在建立新模型的窗口,選擇第二個(gè)模型,在modelname中對(duì)模型重新命名,最后點(diǎn)擊OK按鈕。
第二步,創(chuàng)建域domains,也可以從其他現(xiàn)成的地方拷貝過來。
1) 在 CDM模型 數(shù)據(jù)庫設(shè)計(jì) 上點(diǎn)擊鼠標(biāo)右鍵,選中l(wèi)ist of,在出現(xiàn)的列表中選中domains,出現(xiàn)如下窗口:
2) ?在此窗口,添加name、code,code可以不填,讓其自動(dòng)填充,并設(shè)置數(shù)據(jù)類型datatype和長度length,設(shè)置數(shù)據(jù)類型和長度是關(guān)鍵,后面的實(shí)體屬性會(huì)繼承這里的數(shù)據(jù)類型和長度,最后點(diǎn)擊ok按鈕進(jìn)行保存,如下圖所示:
第三步,創(chuàng)建實(shí)體entity。
1) 在窗口的右上角有一個(gè)懸浮框palette,有一個(gè)四方形的圖表,鼠標(biāo)移上去時(shí)會(huì)有一個(gè)entity的標(biāo)識(shí),沒錯(cuò),就是它了,點(diǎn)擊這個(gè)圖表,在空白的地方,點(diǎn)擊一下就繪出實(shí)體entity的圖表
2) 點(diǎn)擊懸浮框palette中的箭頭pointer圖表,讓鼠標(biāo)恢復(fù)狀態(tài),然后雙擊其中的一個(gè)實(shí)體,即可對(duì)實(shí)體進(jìn)行name和code的命名,命名之后點(diǎn)擊應(yīng)用。點(diǎn)擊應(yīng)用不會(huì)關(guān)閉當(dāng)前窗口,點(diǎn)擊確定會(huì)關(guān)閉當(dāng)前窗口。
第四步,創(chuàng)建實(shí)體entity中的屬性attribute。
1) 接著上一個(gè)窗口,在entity窗口中,點(diǎn)擊屬性attribute,在這一欄目里可進(jìn)行屬性的name和code創(chuàng)建,name對(duì)應(yīng)的是中文描述,code對(duì)應(yīng)的數(shù)據(jù)庫字段名稱。
2) 接著為每個(gè)字段選擇對(duì)應(yīng)的domain,點(diǎn)擊domain下的None區(qū)域時(shí),會(huì)出現(xiàn)下拉列表,從下拉列表選擇合適的domain,domain不存在時(shí),可以再次新增,新增后重新打開窗口再次選擇對(duì)應(yīng)的domain。
3) 如果此時(shí)想添加備注,但是列表中并沒有備注,可點(diǎn)擊菜單欄下,漏斗下帶筆的小圖標(biāo)勾選出備注comment,這時(shí)就可以看到備注一欄了。
4) 在上圖中有一個(gè)細(xì)節(jié),就是在備注comment之前,有三個(gè)字母,每個(gè)字母下面有個(gè)復(fù)選框,這是什么意思呢,P是PrimaryIdentifier是否為主鍵表述的縮寫,勾選了P就代表當(dāng)前被勾選字段是該表的主鍵。M是Mandatory的縮寫,屬性值是否允許為空的意思。D是displayed的縮寫,表示是否在實(shí)體圖形符號(hào)中顯示該屬性。
5) 還有一個(gè)Identifiers標(biāo)識(shí)符,可以把主鍵的code拷貝過去,設(shè)置這個(gè)的好處是,可以在關(guān)系圖中,一下子就能清楚地看到某個(gè)表的主鍵是哪個(gè),是否有設(shè)置。
第五步,創(chuàng)建實(shí)體entity之間的一對(duì)一、一對(duì)多關(guān)系的關(guān)聯(lián)relationship。
1) 現(xiàn)在有兩個(gè)實(shí)體,一個(gè)是班級(jí),一個(gè)是學(xué)生,一個(gè)班級(jí)存在多名學(xué)生,一個(gè)學(xué)生只能在一個(gè)班級(jí)上課,這就是一對(duì)多的關(guān)系,在右邊懸浮框palette中有一個(gè)提示文字為Raletionship的圖標(biāo),就是關(guān)系的映射,點(diǎn)擊這個(gè)圖標(biāo),按住鼠標(biāo)的左鍵,從一個(gè)實(shí)體拖往另一個(gè)實(shí)體,通常是從一對(duì)多的關(guān)系開始拖這個(gè)圖標(biāo),到多的實(shí)體停止這個(gè)圖標(biāo)。
2) 鼠標(biāo)拖過之后,再次點(diǎn)擊箭頭pointer圖標(biāo),恢復(fù)鼠標(biāo)狀態(tài),然后雙擊關(guān)系這條線,對(duì)關(guān)系進(jìn)行編輯,對(duì)關(guān)系的name和code進(jìn)行命名。
3) 點(diǎn)擊cardinalities欄目,可以對(duì)關(guān)系重新設(shè)置,設(shè)置班級(jí)和學(xué)生的關(guān)系是0對(duì)N關(guān)系,還是1對(duì)N關(guān)系,最后點(diǎn)擊OK按鈕保存。
第六步,創(chuàng)建實(shí)體entity之間的多對(duì)多關(guān)聯(lián)association。
1) 在實(shí)際場景中,一個(gè)學(xué)生可以選擇多個(gè)課程,一個(gè)課程也可以被多個(gè)學(xué)生選擇,這就是多對(duì)多的關(guān)系,在右邊懸浮框palette中選擇association圖表,在空白區(qū)域創(chuàng)建一個(gè)association,association可以看做是關(guān)系變形成的實(shí)體,對(duì)association極其屬性進(jìn)行命名。
2) ?接著繪制學(xué)生和這張關(guān)系的關(guān)聯(lián),在右邊懸浮框中,有一個(gè)association link圖標(biāo),這個(gè)圖標(biāo)就是代碼實(shí)體域關(guān)聯(lián)關(guān)系之間的連接,點(diǎn)擊這個(gè)圖標(biāo),從實(shí)體拖向association,即可建立關(guān)系。
至此,概念數(shù)據(jù)模型cdm的創(chuàng)建已經(jīng)告一個(gè)段落了,你get到了嗎?