CDM是概念模型,在概念模型上沒有具體數據庫產品的概念,反映的是實體和聯系。PDM是物理模型,是依賴具體數據庫產品的模型,比如可以指定具體的數據類型和約束等等。在PowerDesigner中兩個模型之間可以相互轉化。
步驟一般當然是先cdm后pdm,建好cdm后,根據實際情況,選擇不同的數據庫,然后把cdm轉成相應的pdm,有了cdm會更加靈活,不必在需求分析一開始就定死用什么數據庫,便於更改,轉pdm很容易。
物理數據模型(PDM): 你可以把這個看中是實際數據庫中的表結構,例如 你的CDM中有 多對多的關系的話,那么就會在 PDM中,實際生成中間表
1:運行 PowerDesigner15_Evaluation.exe
默認
2: 安裝完畢后,不要執行,下面我們進行 破解
把 PowerDesigner15漢化+注冊補丁 下的所有文件,覆蓋 PD的安裝目錄下的文件
然后我們打開 PD,點擊 幫助 –> About 看到下面窗口中紅色方框,就表示已經破解 + 漢化成功
================ PDM 挖坑開始 這里有個坑,建議直接跳過,從下面的 CDM 設計開始看=========
下面我們來簡單的創建幾個表,涉及 1對多,多對多(自己寫中間表),多對多(PD幫我們生成中間表)
我們創建幾個表
Userinfo 用戶表
Order 訂單表
Department 部門表
Play 活動表
設置主鍵,自動增長 (雙擊列,打開列設置窗口,勾選右下角的 Identity 自動增長)
分析用戶表 和 訂單表的 關系 是一對多
下面,我們來看 用戶表 和 部門表 他們是一個多對多的關系,我們通過手動創建的中間表來 設計這個 中間表
(一個員工,可以在多個部門,一個部門,也可以有 多個員工)
注意,下面的這個中間表,是我們自己手動創建的
上面一個用戶和一個部門之間,是多對多的關系,但是上面是我們自己創建一個中間表,下面我們自己來創建一個 真正的 多對多的 表(實際還是會自動創建一個中間表)
到這里,我突然發現我用錯了, 應該是先設計 CDM ,在 CDM 里面才可以設計 多對多表,而 如果是在 PDM 里面,是不能生成 多對多表的
因為PDM是物理模型,那么PDM中反應的表,就應該是 CDM
====================== PDM 挖坑結束 ======================
========================= 重新用 CDM 開始 =============================
在 CDM 模型里面,拉一對多關系,是從 一 拉 到 多,就形成了下面的這個圖. 並且這里有點和 PDM不同的是,在CDM里面拉的關系線,是看不到外鍵的,外鍵要等一會 轉成了 PDM 模型之后,才會看到外鍵
下面我們把 用戶表,部門表,以及手動創建的中間表(用戶部門關系表) 這3個表,來拉一下關系
首先 用戶表 和 用戶部門 是 一對多的關系,一個用戶,可以屬於多個部門
部門表 和 用戶部門關系表 也是一對多的關系,一個部門里面,可以用多個用戶
實際上,2個一對多,就是一個多對多,我們原本可以省掉 用戶部門關系表而直接在 用戶表 和 部門表 直接拉一個 多對多的關系,但是假如想在中間表里面加入其他額外的字段,例如 這里是 JoinTime 加入部門時間,就是我們自己想額外創建的字段,那么這個時候,就應該自己手動來創建中間表了
下面我們來創建,活動表和部門表是多對多的關系 (一個活動,可以屬於多個部門,一個部門也有多個活動)
在CDM里面畫 多對多的線的時候,要注意,PD里面,默認是沒有 多對多 的線的,得先把2張表之間 拉出 一對多, 然后雙擊 兩個表中間的關系線, 再修改成 多對多
好了,我們的CDM 模型,就畫好了
我們雙擊 部門表 和 活動表 中間的 關系的名稱,我們把這個名稱 Relationshop_4 給修改成 R_Department_Play ,這個名稱,就是等會我們生成的 數據庫里面的中間表的名稱 ,如果你不修改,那么等會數據庫就會生成一個 Relationshop_4 ,這個名稱 太傻了
(如果2張表,是多對多的關系,那么什么時候,用我們自己創建的中間表,什么時候,用系統的多對多表呢? 其實很簡單,如果 你需要在中間表里面放一些額外的數據,例如上面的 加入時間(JoinTime) 這個就是個額外的字段,那么我們就用自己創建的中間表. 如果什么額外的字段都沒有,就可以直接用 系統的多對多 (但是實際到了PDM物理模型,和到數據庫的時候,還是會生成一個中間表的)
現在我們要生成數據庫的話,還要先 轉成 PDM 模型 ,我們可以點擊 工具=> Generate PDM 生成PDM模型,也可以使用快捷鍵 Ctrl + G
點擊確定后,我們會跳轉到 PDM 界面,這個 物理模型界面,就是實際上,我們通過 CDM 最后會生成的哪些表
這個時候,我們 選擇 數據庫 => Generate Database 來生成數據庫, 快捷鍵依然是 Ctrl + G
然后我們把生成的sql文件,拖到sql2008的管理器里面,我們自己先創建一個數據庫 例如 WebPd
我們發現,表結構,定義,都可以了
但是我們發現還是有個小問題,我們觀察在PDM中的時候, R_Deparment_Play 這張中間表的 DepId 和 PlayId 不僅僅是有PK主鍵,同時他們還是外鍵,但是到了sql2008里面之后,外鍵信息丟失了,如下圖,解決方法是我們要回到 PD 里面,對PD這個軟件進行設置
解決方法,
步驟1: 在剛才的PDM 界面下(注意,是PDM),點擊 菜單欄的 數據庫=> Change Current DBMS 設置為 sql2000
步驟2: 在菜單欄里面 找到 模型=>References
在打開的窗口中,我們找到 Implementation 這列, 默認這里的數據是 Trigger ,我們修改成 Declarative
步驟3 : 將當前PDM的 DBMS 重新設置為 sql2008
步驟4: 在PDM 界面下, 按 Ctrl + G 快捷鍵,生成sql腳本 ,然后放到 sql2008 數據庫管理器中運行后,如下
CDM和PDM的區別?(轉)http://hi.baidu.com/t_sky/item/adaded4f5a6b11ea1e19bcd6






































