在數(shù)據(jù)建模過(guò)程中,我們建立概念數(shù)據(jù)模型,通過(guò)正向工程生成物理數(shù)據(jù)模型,生成數(shù)據(jù)庫(kù)建庫(kù)腳本,最后將物理數(shù)據(jù)模型生成關(guān)系數(shù)據(jù)庫(kù)。系統(tǒng)數(shù)據(jù)庫(kù)設(shè)計(jì)人員希望能夠?qū)?shù)據(jù)庫(kù)設(shè)計(jì)和關(guān)系數(shù)據(jù)庫(kù)生成無(wú)縫地集成起來(lái),如何保證物理數(shù)據(jù)模型與其對(duì)應(yīng)數(shù)據(jù)庫(kù)之間的雙向同步成為數(shù)據(jù)建模非常關(guān)鍵的一點(diǎn)。
Powerdesigner作為強(qiáng)大的Case工具,為我們提供了方便的逆向工程特性??梢詫⒛壳八辛餍械暮蠖藬?shù)據(jù)庫(kù)(包括Sybase、DB2、Oracle等)的結(jié)構(gòu)信息通過(guò)逆向工程加入到PowerDesigner的物理數(shù)據(jù)模型和概念數(shù)據(jù)模型中,包括表、索引、觸發(fā)器、視圖等。
本文介紹的內(nèi)容僅涉及PDM(物理數(shù)據(jù)模型)的逆向工程。
PDM中的逆向工程是指從現(xiàn)有DBMS的用戶數(shù)據(jù)庫(kù)或現(xiàn)有數(shù)據(jù)庫(kù)SQL腳本中生成PDM的過(guò)程。逆向工程有兩種對(duì)象:1)通過(guò)ODBC數(shù)據(jù)源連接數(shù)據(jù)庫(kù) 2) 現(xiàn)有數(shù)據(jù)庫(kù)sql腳本。
本文示例的系統(tǒng)環(huán)境如下:
1、 數(shù)據(jù)庫(kù)已創(chuàng)建完畢,訪問(wèn)用戶和密碼設(shè)置完成。數(shù)據(jù)庫(kù)為Oracle9i。
2、 ODBC數(shù)據(jù)源已由oracle 的Net Configuration Assistant 創(chuàng)建,本地網(wǎng)絡(luò)命名服務(wù)“Database”。
3、 sql腳本示例crebas.sql。
4、 Powerdesigner9.5已安裝完成。
一、 通過(guò)數(shù)據(jù)源連接數(shù)據(jù)庫(kù)逆向工程生成PDM
1、 配置用戶數(shù)據(jù)庫(kù)連接參數(shù)
選擇Database->configure connections,轉(zhuǎn)到system dsn標(biāo)簽,
點(diǎn)擊Add按鈕,選數(shù)據(jù)庫(kù)類型Oracle,點(diǎn)擊完成。顯示如下:輸入DataSource Name“PDMTest”;輸入ServerName“Database”, 配置完成。
點(diǎn)擊“Test Connect”輸入ServerName“Database”,用戶名和密碼,若連接成功,顯示如下:
以后每次連接,選擇Database?connect,選擇odbc數(shù)據(jù)源,輸入ServerName“Database”,用戶名和密碼。若無(wú)提示,則說(shuō)明連接成功。同時(shí),可以通過(guò)Database?Connection Information 查看連接信息。
2、 設(shè)置逆向工程選項(xiàng),生成pdm
創(chuàng)建一個(gè)PDM文件,選擇與之匹配的數(shù)據(jù)庫(kù)類型“oracle9i”。
選擇Database?Reverse Engineer Database,彈出Database Reverse Engineering對(duì)話框,選Using an ODBC data source選ODBC數(shù)據(jù)源“PDMTest”
點(diǎn)擊確定后,顯示此數(shù)據(jù)庫(kù)中所有表、視圖、用戶。根據(jù)需要選擇后,轉(zhuǎn)換成pdm。
3、 查看數(shù)據(jù)
對(duì)于生成好的PDM,選擇一個(gè)表圖形符號(hào),點(diǎn)擊右鍵,選擇View Data,就可以訪問(wèn)表中的數(shù)據(jù)了。
二、 通過(guò)SQL腳本逆向工程生成PDM
1、 數(shù)據(jù)庫(kù)SQL腳本文件crebas.sql。下為腳本實(shí)例:
/*==============================================================*/
/* Database name: PhysicalDataModel_1 */
/* DBMS name: ORACLE Version 9i */
/* Created on: 2003-07-13 10:49:08 */
/*==============================================================*/
/*==============================================================*/
/* Table: "class" */
/*==============================================================*/
create table "class" (
"classID" NUMBER(2) not null,
"className" VARCHAR2(24),
constraint PK_CLASS primary key ("classID")
)
/
/*==============================================================*/
/* Table: "student" */
/*==============================================================*/
create table "student" (
"studentID" NUMBER(10) not null,
"studentName" VARCHAR2(4),
"classID" NUMBER(2),
constraint PK_STUDENT primary key ("studentID")
)
/
alter table "student"
add constraint FK_STUDENT_REFERENCE_CLASS foreign key ("classID")
references "class" ("classID")
/
2、 創(chuàng)建一個(gè)pdm,選擇Database?Reverse Engineer Database,選擇Using script files。
3、 看到由腳本自動(dòng)生成相關(guān)的PDM如下所示:
pdm做好后,最終是要將其轉(zhuǎn)化為數(shù)據(jù)庫(kù)實(shí)體的。
1.確認(rèn)當(dāng)前Powerdesigner設(shè)置的dbms是否正確,即是否是我們要生成的數(shù)據(jù)庫(kù)類型,我在這里使用的是sqlserver2000:
Powerdesigner->數(shù)據(jù)庫(kù)->更改當(dāng)前dbms,選擇您的數(shù)據(jù)庫(kù)類型。
2.配置Powerdesigner與數(shù)據(jù)源的連接
Powerdesigner->數(shù)據(jù)庫(kù)->配置連接->用戶dsn(或系統(tǒng)dsn)->選擇、添加您的數(shù)據(jù)源
3.連接
Powerdesigner->數(shù)據(jù)庫(kù)->連接->設(shè)置好您剛才建立的dsn確定。
OK,設(shè)置好連接后我們就可以將pdm生成sql語(yǔ)句了。
4.數(shù)據(jù)庫(kù)生成
Powerdesigner->數(shù)據(jù)庫(kù)->生成數(shù)據(jù)庫(kù)->配置好(默認(rèn)就可以)后選擇確定就好了。
拿到sql腳本語(yǔ)句,大家都知道應(yīng)當(dāng)如何做了吧,放到sql查詢分析器里執(zhí)行吧。
|