一. 正向工程與逆向工程說明
正向工程和逆向工程就是上面幾個模型互相之間轉換的過程。
正向工程:
CDM—>PDM
PDM—> Database
PDM—>OOM
從CDM 到PDM 也是軟體工程中推薦的一種方法,不過在實際的項目中,很少有公司會按照這個流程來走,甚至連E-R圖都不畫,直接上來就建表。
逆向工程:
(1) 從處理語言(Process Language)逆向生成業務處理模型(BPM)
(2) 從對象語言(Object Language)逆向生成面向對象模型(OOM)
(3) 從資料庫(Database)或資料庫腳本逆向生成實體資料模型(PDM)
(4) 從XML定義(XMLDifinition)逆向生成XML模型
二. 示例
在這裡示範2個例子:
(1) CDM --> PDM --> Database.
(2) Database --> PDM --> CDM
2.1 正向工程:CDM –>PDM –> Database示例
PD 自帶的示例CDM:

我們将這個CDM 轉換稱PDM: Tools --> Generate Physical Data Model.
生成的PDM 圖如下:
再将我們的PDM 生成對應的SQL 腳本: Database –> Generate Database
這裡有兩種選擇,一種是生成腳本,即Script generation,還有一種是直接在資料庫裡生成,即directory generate,一般都是先生成SQL 腳本,然後在資料庫執行腳本。
以上就是一個典型的過程,也是軟體工程中建議的一種流程。
2.2 逆向工程:Database --> PDM --> CDM
在2.1 節講了正向工程的一些概念,即從CDMàPDM à DATABASE. 如果嚴格按照這個過程來執行,在後期還可以參考這些Model。但是在國内的軟體開發流程中,隻有少數的公司會按照這個流程來走,那麼大多數情況都是拿到需求分析後直接在資料庫裡建表。
如果某個線上的系統,就是這麼設計出來的,那麼這時候,我們要得到它的PDM,就可以使用PD的逆向工程來實作。
先連上測試環境,建立一個使用者,然後把我們2.1 節導入的腳本執行一遍:
[sql] view plain copy
- C:\Users\Administrator.DavidDai>sqlplussys/[email protected] as sysdba;
- SQL*Plus: Release 11.2.0.1.0 Production onTue Oct 18 13:37:17 2011
- Copyright (c) 1982, 2010, Oracle. All rights reserved.
- Connected to:
- Oracle Database 10g Enterprise EditionRelease 10.2.0.4.0 - Production
- With the Partitioning, Real ApplicationClusters, OLAP, Data Mining
- and Real Application Testing options
- SQL> create user pd identified by pd;
- User created.
- SQL> grant connect,resource,dba to pd;
- Grant succeeded.
- SQL> conn pd/[email protected];
- Connected.
- SQL> @d:\crebas.sql
腳本執行完畢後,相關的表和索引已經建立完成,現在我們使用PD 來進行逆向工程操作。
File —> Reverse Engineer –>Database
修改PDM 子產品名稱和 DBMS 類型,這裡是Oracle 10gR2:
配置資料源:
Connection profile name: 生成連接配接檔案名稱
Directory:生成連接配接檔案儲存位置,我這裡儲存到桌面
Connection type:連接配接類型,可是使用Native(tnsnames.ora)或者JDBC。
确定之後進行reverse。具體需要的時間要根據資料庫對象的多少來定。 我的這個測試,不到1分鐘就搞完了。
逆向工程之後的PDM 如下圖:
在将PDM 轉成CDM:
最終的CDM 如下:
正向工程與逆向的工程就這麼多,更多内容就各位同學自己研究了。