梁俊+趙衛(wèi)東+初寶祥
摘要:該文首先介紹了數(shù)據(jù)庫設(shè)計(jì)的基本步驟,然后詳細(xì)描述了數(shù)據(jù)庫的正向工程以及將概念數(shù)據(jù)模型通過PowerDesigner正向工程轉(zhuǎn)換為邏輯數(shù)據(jù)模型然后轉(zhuǎn)換為物理數(shù)據(jù)模型最終生成數(shù)據(jù)庫的過程,最后通過一個具體應(yīng)用驗(yàn)證了數(shù)據(jù)庫設(shè)計(jì)的合理性。
關(guān)鍵詞:數(shù)據(jù)庫設(shè)計(jì);正向工程;PowerDesigner;概念數(shù)據(jù)模型;邏輯數(shù)據(jù)模型;物理數(shù)據(jù)模型
中圖分類號: TP391 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2016)22-0009-04
Abstract:This paper introduces the basic steps of the database design and then describes in detail the forward engineering of the database and the process of converting the conceptual data model to the logical data model through the PowerDesigner forward engineering and then converting to the physical data model to generate the database.Finally, the rationality of the database design is verified by a concrete application.
Key words:Database design; Forward engineering; PowerDesigner; CDM; LDM; PDM
數(shù)據(jù)庫設(shè)計(jì)在信息系統(tǒng)開發(fā)和建設(shè)過程中起著舉足輕重的作用,數(shù)據(jù)庫設(shè)計(jì)質(zhì)量直接影響到整個系統(tǒng)的效果,數(shù)據(jù)庫設(shè)計(jì)難度要比單純的技術(shù)實(shí)現(xiàn)難很多,對數(shù)據(jù)庫進(jìn)行細(xì)致的建模是數(shù)據(jù)庫設(shè)計(jì)的關(guān)鍵。在數(shù)據(jù)庫應(yīng)用早期,開發(fā)技術(shù)還尚未成熟,數(shù)據(jù)庫設(shè)計(jì)方法主要是手工試湊法,會出現(xiàn)效率低下,質(zhì)量不高等各種弊端,到后來提出了數(shù)據(jù)庫設(shè)計(jì)是個過程迭代、逐步求精的過程。隨著信息技術(shù)的飛速發(fā)展,各種軟件分析建模的工具在很多領(lǐng)域得到廣泛應(yīng)用,其中PowerDesigner是目前被業(yè)界一致認(rèn)為最有影響力的一種數(shù)據(jù)庫分析設(shè)計(jì)的工具之一。
1數(shù)據(jù)庫設(shè)計(jì)概述
數(shù)據(jù)庫設(shè)計(jì)(Database Design)主要是指為了能夠滿足有效的數(shù)據(jù)存儲和處理等要求,在某個特定的環(huán)境中,需要構(gòu)造最優(yōu)的數(shù)據(jù)庫模式來建立數(shù)據(jù)庫及其對應(yīng)系統(tǒng)。數(shù)據(jù)庫設(shè)計(jì)時根據(jù)用戶的需求,在特定的數(shù)據(jù)庫管理系統(tǒng)上設(shè)計(jì)和建立數(shù)據(jù)庫的過程,是軟件系統(tǒng)開發(fā)過程中的關(guān)鍵技術(shù)之一。數(shù)據(jù)庫設(shè)計(jì)分4個階段,分別為需求分析階段、概念結(jié)構(gòu)設(shè)計(jì)階段、邏輯結(jié)構(gòu)設(shè)計(jì)階段、物理結(jié)構(gòu)設(shè)計(jì)階段。
1.1 需求分析階段
需求分析階段在整個數(shù)據(jù)庫設(shè)計(jì)過程的基礎(chǔ),對于軟件的開發(fā)的整個過程以及產(chǎn)品質(zhì)量的好壞至關(guān)重要,主要是通過調(diào)查并分析用戶的業(yè)務(wù)活動和數(shù)據(jù)使用情況,來明確用戶對某個特定數(shù)據(jù)庫系統(tǒng)的使用要求和各種約束條件等,形成用戶規(guī)約。在該階段會得到用數(shù)據(jù)字典描述的數(shù)據(jù)需求和數(shù)據(jù)流圖描述的處理需求。
1.2 概念結(jié)構(gòu)設(shè)計(jì)階段
概念結(jié)構(gòu)設(shè)計(jì)階段則是在需求分析階段生成的需求說明書的基礎(chǔ)上,再對需求進(jìn)行綜合分析、歸納總結(jié)與抽象分析,形成一個獨(dú)立于某個特定的數(shù)據(jù)庫管理系統(tǒng)(Database Management System,簡稱DBMS)的概念模型(用E-R圖表示)。
概念數(shù)據(jù)模型(Conceptual Data Model,CMD)簡稱概念模型,主要是用以描述現(xiàn)實(shí)世界的概念化的結(jié)構(gòu),是數(shù)據(jù)特征的一種抽象化表示。以實(shí)體-聯(lián)系(Enitity-RelationShip,E-R)理論為基礎(chǔ),表明系統(tǒng)內(nèi)部抽象的數(shù)據(jù)結(jié)構(gòu),并對這一理論進(jìn)行擴(kuò)充。在該階段數(shù)據(jù)庫的設(shè)計(jì)人員只是著重分析數(shù)據(jù)以及數(shù)據(jù)與數(shù)據(jù)之間的聯(lián)系,不再考慮計(jì)算機(jī)系統(tǒng)和DBMS的技術(shù)問題,獨(dú)立于具體的DBMS。
1.3 邏輯結(jié)構(gòu)設(shè)計(jì)階段
邏輯結(jié)構(gòu)設(shè)計(jì)階段主要操作對象是概念模型,需要將概念結(jié)構(gòu)設(shè)計(jì)階段產(chǎn)生的概念數(shù)據(jù)模型設(shè)計(jì)成一種邏輯模式,而這種邏輯模式需要滿足于具體的數(shù)據(jù)庫管理系統(tǒng),數(shù)據(jù)庫的邏輯設(shè)計(jì)涉及數(shù)據(jù)模型的轉(zhuǎn)換問題,同時還需要深入解決設(shè)計(jì)中的一些技術(shù)問題。例如數(shù)據(jù)模式的規(guī)范化、是否滿足數(shù)據(jù)庫管理系統(tǒng)的要求等。在這一階段會生成邏輯模型。
邏輯數(shù)據(jù)模型(Logical Data Model,LDM)是在概念數(shù)據(jù)模型基礎(chǔ)上生成的,是對CDM的進(jìn)一步的分解和細(xì)化,使得概念數(shù)據(jù)模型更易于理解。通過表示概念之間的邏輯次序,轉(zhuǎn)換為某個特定系統(tǒng)所能支持的邏輯結(jié)構(gòu)。
1.4 物理結(jié)構(gòu)設(shè)計(jì)階段
物理結(jié)構(gòu)設(shè)計(jì)階段則需要根據(jù)具體計(jì)算機(jī)系統(tǒng)的特點(diǎn),設(shè)計(jì)具體數(shù)據(jù)庫系統(tǒng)的數(shù)據(jù)庫模型合理的存儲結(jié)構(gòu)(包括文件類型、索引結(jié)構(gòu)等)、存取路徑和存取方法等,在這一階段則會生成物理數(shù)據(jù)模型。
物理數(shù)據(jù)模型(Physical Data Model,PDM)描述了數(shù)據(jù)在存儲介質(zhì)上的組織結(jié)構(gòu),與某個特定的數(shù)據(jù)庫管理系統(tǒng)有關(guān)。它是在概念數(shù)據(jù)模型或邏輯數(shù)據(jù)模型的基礎(chǔ)上,考慮各種具體實(shí)現(xiàn)因素,進(jìn)行數(shù)據(jù)庫的結(jié)構(gòu)設(shè)計(jì),生成相應(yīng)的 DBMS的SQL腳本,利用生成的SQL 腳本在相應(yīng)的數(shù)據(jù)庫中產(chǎn)生信息的存儲結(jié)構(gòu),同時需要保證數(shù)據(jù)在數(shù)據(jù)庫中的完整性和一致性。
2 PowerDesigner中數(shù)據(jù)庫設(shè)計(jì)的正向工程
Power Designer是一個功能強(qiáng)大但使用簡單的計(jì)算機(jī)輔助軟件工程工具集(Computer Aided Software —CASE),業(yè)界普遍認(rèn)為它是一種領(lǐng)先的建模工具和元數(shù)據(jù)管理解決方案。它是數(shù)據(jù)庫設(shè)計(jì)的強(qiáng)大軟件,由原來主要側(cè)重于數(shù)據(jù)庫建模,后來也逐漸發(fā)展到需求建模、業(yè)務(wù)處理建模和面向?qū)ο蠼5龋蔀榱艘豢罟δ苋娴能浖娴能浖探9ぞ摺?
不同的模型對應(yīng)于不同的階段,各模型之間有很強(qiáng)的聯(lián)系,但是差異性很大,在PowerDesigner中每個模型都劃分的很細(xì)致,并且不同的模型對應(yīng)不同的設(shè)計(jì)環(huán)境,同時保存到不同的文件中,各模型設(shè)計(jì),PowerDesigner都提供了精細(xì)的控制,模型之間又相互獨(dú)立,但是可以通過模型之間的轉(zhuǎn)換工具建立各模型之間的關(guān)聯(lián)。
在PowerDesigner中進(jìn)行數(shù)據(jù)庫設(shè)計(jì)的正向工程需要先建立概念數(shù)據(jù)模型然后生成相應(yīng)的邏輯數(shù)據(jù)模型接著生成物理數(shù)據(jù)模型,并根據(jù)物理數(shù)據(jù)模型生成多種可以在數(shù)據(jù)庫系統(tǒng)環(huán)境中運(yùn)行的數(shù)據(jù)庫的腳本(SQL Server 腳本)或者直接創(chuàng)建數(shù)據(jù)庫的全過程。
2.1創(chuàng)建概念數(shù)據(jù)模型
概念數(shù)據(jù)模型需要定義所有的實(shí)體以及一組描述實(shí)體特征的屬性,用來唯一標(biāo)識某個實(shí)體的一個或者一組屬性的標(biāo)識符(包括主標(biāo)識符和候選標(biāo)識符),每個實(shí)體至少有一個標(biāo)識符以及實(shí)體與實(shí)體之間的聯(lián)系,其中包括一對一的聯(lián)系、一對多的聯(lián)系、多對一的聯(lián)系、多對多的聯(lián)系。
在PowerDesigner中選擇File->NewModel菜單項(xiàng),在彈出的新建模型窗口中選擇Conceptual Data Model ,建立概念模型。在工具箱中選擇Enity圖標(biāo)就可添加多個實(shí)體,雙擊圖形符號就可設(shè)置實(shí)體的一組屬性,定義實(shí)體的標(biāo)識符以及相關(guān)約束等。定義好實(shí)體和屬性后,就該定義實(shí)體之間以及實(shí)體內(nèi)部的聯(lián)系。主要聯(lián)系包括1:1聯(lián)系,1:n聯(lián)系,n:1聯(lián)系和m:n聯(lián)系,其中Domaint role:該參數(shù)只是針對于1:1聯(lián)系,用于定義該聯(lián)系中起主導(dǎo)作用的實(shí)體,在CDM生成LDM是,如果定義了該參數(shù),即規(guī)定了主動方和被動方,那么在CDM生成LDM或PDM時,則在依賴實(shí)體對應(yīng)表中只會在被動方生成一個參照/引用,否則兩端分別生成一個參照/引用。Dependent:依賴。兩個實(shí)體若定義了依賴聯(lián)系又稱為標(biāo)定聯(lián)系,相反稱為非標(biāo)定聯(lián)系。建立CDM后通常要進(jìn)行模型檢查,選擇Tool->Check Model菜單,或在工作區(qū)右擊選擇Check Model項(xiàng),設(shè)置相關(guān)選項(xiàng)后,點(diǎn)擊確定,進(jìn)行模型檢查。
2.2 生成邏輯數(shù)據(jù)模型
LDM是PowerDesigner15新增的模型,在完成數(shù)據(jù)建模的過程中,邏輯數(shù)據(jù)模型設(shè)計(jì)不是必需的,可以在PowerDesigner中直接建立LDM,也可以由CDM生成LDM。在CDM生成LDM時,LDM包括CDM中的所有的實(shí)體以及每個實(shí)體的一組屬性以及一個或者多個標(biāo)識符,實(shí)體與實(shí)體之間的聯(lián)系。在1:1聯(lián)系中,聯(lián)系兩端實(shí)體的主標(biāo)識符會分別進(jìn)入另一端實(shí)體中做外鍵否則只會其中一個實(shí)體進(jìn)入另一個實(shí)體中做外鍵,在1:n非依賴(標(biāo)定)聯(lián)系中,1端實(shí)體的主標(biāo)識符進(jìn)入n端實(shí)體中做外鍵,在依賴(標(biāo)定)的1:n聯(lián)系中,1端實(shí)體的主標(biāo)識符進(jìn)入n端實(shí)體中做既做主鍵、外鍵,在m:n非依賴(標(biāo)定)聯(lián)系:會生成一個新的聯(lián)系實(shí)體,同時兩端實(shí)體的主標(biāo)識符進(jìn)入聯(lián)系生成的實(shí)體中,做主、外鍵。
選擇Tools->Generate Logical Data Model 菜單項(xiàng),打開生成新LDM模型窗口,然后設(shè)置各選項(xiàng)卡參數(shù)。生成LDM模型后通常要進(jìn)行模型檢查與優(yōu)化工作,可以減少在PDM模型中的優(yōu)化工作。
2.3 生成物理數(shù)據(jù)模型
物理數(shù)據(jù)模型PDM 是根據(jù)邏輯數(shù)據(jù)模型生成的,在生成PDM 之前 , 需要指定具體的DBMS。由LDM轉(zhuǎn)換 PDM的轉(zhuǎn)換規(guī)則:一個邏輯實(shí)體映射到一張表。實(shí)體屬性轉(zhuǎn)換為表的數(shù)據(jù)列,一個由關(guān)聯(lián)關(guān)系產(chǎn)生的邏輯實(shí)體也會映射到一張表。主標(biāo)識符轉(zhuǎn)換為表的基于依賴或者獨(dú)立關(guān)系的主鍵或外鍵,其他標(biāo)識符轉(zhuǎn)換為候選鍵。一對一、一對多、多對一、多對多的聯(lián)系也都會轉(zhuǎn)換成相應(yīng)的參照/引用,對應(yīng)于表的外鍵。
打開LDM模型,選擇Tools->Generate Physical Data Model 菜單項(xiàng),打開生成新模型的小窗口,設(shè)置各選項(xiàng)卡參數(shù)。必須指定具體數(shù)據(jù)庫的名稱和版本。在LDM轉(zhuǎn)化為PDM中數(shù)據(jù)類型的轉(zhuǎn)換關(guān)系見表1。由LDM直接生成的PDM存在一些問題,需要進(jìn)行模型檢查和優(yōu)化,如果生成的數(shù)據(jù)類型不合理,需要手動調(diào)整數(shù)據(jù)類型,使得數(shù)據(jù)類型使用得更恰當(dāng)。如果主鍵需要使用自增長,那么需要修改具體的列,設(shè)置該列為Identity,筆者確定的參照約束名稱為”fk_父表簡稱_r_子表簡稱”的約定,自動生成的參照名稱一般不符合,需要修改。在物理模型中除了生成相對應(yīng)的表外,還可以手動增加視圖、存儲過程等在概念模型和邏輯模型中無法表達(dá)的數(shù)據(jù)庫對象。
2.4 數(shù)據(jù)庫實(shí)施
在PowerDesigner,建立數(shù)據(jù)庫有兩種方式,一種是由物理數(shù)據(jù)模型生成建庫的腳本,然后執(zhí)行腳本,使用PowerDesigner直接連接數(shù)據(jù)庫。
需要在PowerDesigner中建立一個通向這個用戶數(shù)據(jù)庫的數(shù)據(jù)源,使得PowerDesigner與用戶數(shù)據(jù)庫建立相應(yīng)的連接。在PowerDesigner中選擇Database->Configure Connections菜單項(xiàng),打開配置數(shù)據(jù)連接窗口,在打開的窗口中添加新的SQL Server的數(shù)據(jù)源,并建立新的數(shù)據(jù)源與數(shù)據(jù)庫的連接。然后選擇Database->Generate Database 菜單項(xiàng),打開生成數(shù)據(jù)庫窗口,采用新生成的數(shù)據(jù)源進(jìn)行連接,可以直接將PDM生成到數(shù)據(jù)庫中,同時生成腳本文件?;蛘逥atabase—>Generate Database… 后會生成一個 SQL腳本文件,在目標(biāo)數(shù)據(jù)庫中執(zhí)行即可生成相對應(yīng)的表。
3 基于PowerDesigner的數(shù)據(jù)庫設(shè)計(jì)正向工程的應(yīng)用
本文以測評系統(tǒng)功能為原型,演示Power Designer16對測評系統(tǒng)的數(shù)據(jù)庫設(shè)計(jì)的全過程。
3.1 建立概念數(shù)據(jù)模型
該測評系統(tǒng)包括的實(shí)體是測評工程、工程狀態(tài)、自我測評體系、工程自我測評項(xiàng)、專家測評體系、工程專家測評項(xiàng)。并分別定義每個實(shí)體的屬性和標(biāo)識符,定義實(shí)體之間的聯(lián)系,在Power Designer中建立該測評系統(tǒng)概念數(shù)據(jù)模型,如圖1所示。
3.2 生成邏輯數(shù)據(jù)模型
由CDM轉(zhuǎn)化的測評系統(tǒng)的LDM,如圖2所示。
3.3 生成物理數(shù)據(jù)模型
本系統(tǒng)采用Microsoft SQL Server 2008作為后臺數(shù)據(jù)庫 , 由LDM轉(zhuǎn)化得到的測評系統(tǒng) PDM 如圖3 所示。
3.4 生成SQL腳本或數(shù)據(jù)庫
首先要在SQL Server2008中建立一個“EvaluationProject”的數(shù)據(jù)庫,然后需要在PowerDesigner中建立一個通向這個用戶數(shù)據(jù)庫的數(shù)據(jù)源,使得PowerDesigner與用戶數(shù)據(jù)庫建立相應(yīng)的鏈接。 或者“Database—>Generate Database…” 后會生成一個 SQL腳本文件,在目標(biāo)數(shù)據(jù)庫中執(zhí)行即可生成相對應(yīng)的表。由 PDM 生成的一段SQL 語句 , 如圖4 所示。在SQL Server 2008中得到的測評系統(tǒng)的數(shù)據(jù)庫表,如圖5 所示。
3.5 生成測試數(shù)據(jù)
生成數(shù)據(jù)庫后, 項(xiàng)目實(shí)施過程中,一般都需要在數(shù)據(jù)庫中加載數(shù)據(jù),在PowerDesigner中可以實(shí)現(xiàn)在數(shù)據(jù)庫中自動添加測試數(shù)據(jù), 測試數(shù)據(jù)庫的結(jié)構(gòu)和性能是否滿足要求。在PDM中, 可以先定義測試數(shù)據(jù)描述文件, 然后為列指定測試文件, 最后產(chǎn)生測試數(shù)據(jù)。在 “測評系統(tǒng)” 中, 可設(shè)置下列內(nèi)容:
1) 在菜單欄中選擇Model->Test Data Profiles菜單項(xiàng),打開測試數(shù)據(jù)生成窗口。 定義 “測評項(xiàng)權(quán)重”、“評測項(xiàng)數(shù)值” , 在指定的范圍內(nèi)自動生成數(shù)字型測試數(shù)據(jù); 定義 “學(xué)生自評開始時間” 、“學(xué)生自評結(jié)束時間”、“評議小組測評開始時間”、“評議小組測評結(jié)束時間”,在指定的范圍內(nèi)自動生成日期/時間型測試數(shù)據(jù);
2) 為 “測評項(xiàng)權(quán)重”、“評測項(xiàng)數(shù)值”、“學(xué)生自評開始時間”、“學(xué)生自評結(jié)束時間”、“評議小組測評開始時間”、“評議小組測評結(jié)束時間” 列指定對應(yīng)的描述文件。
3)指定需要操作的表,選擇測評工程表和自我測評體系信息表。
4) 選擇 Database->Generate Test Data 菜單項(xiàng),在測評工程和自我測評體系信息表中自動產(chǎn)生測試數(shù)據(jù),指定連接的數(shù)據(jù)源,可以在“EvaluationProject”數(shù)據(jù)庫中直接生成測試數(shù)據(jù)。測試數(shù)據(jù)如圖6所示。
4總結(jié)
PowerDesigner作為數(shù)據(jù)庫建模和設(shè)計(jì)的常用工具,在數(shù)據(jù)庫系統(tǒng)開發(fā)中起著相當(dāng)大的作用,要想真正掌握這一工具,還需要我們不斷研究與探討。本文著重研究了利用PowerDesigner正向工程建立PDM以及生成數(shù)據(jù)庫的過程以及具體的應(yīng)用,PowerDesigner的數(shù)據(jù)庫設(shè)計(jì)正向工程使人直觀地理解模型,而且充分運(yùn)用數(shù)據(jù)庫的技術(shù),不斷優(yōu)化數(shù)據(jù)庫的設(shè)計(jì),提升了軟件開發(fā)的效率。
參考文獻(xiàn):
[1] 謝星星,朱嬋. PowerDesigner 系統(tǒng)分析與建模實(shí)戰(zhàn)[M].北京:機(jī)械工業(yè)出版社,2015.5.
[2] 李波,孫憲麗,關(guān)穎. PowerDesigner16 從入門到精通[M].北京:清華大學(xué)出版社,2016.
[3] 薩師煊,王珊. 數(shù)據(jù)庫系統(tǒng)概論[M].4版.北京:高等教育出版社, 2006:55-77.
[4] 郭東恩. 數(shù)據(jù)庫原理及應(yīng)用[M].鄭州:河南科學(xué)技術(shù)出版社, 2008:31-160.
[5] 宋薇,李倩,薛立.基于PowerDesigner的家庭財務(wù)管理系統(tǒng)的數(shù)據(jù)庫設(shè)計(jì)[J].電腦知識與技術(shù),2015(18).
[6] 李蘋,蔣銳,張順吉,等.PowerDesigner在數(shù)據(jù)庫綜合性實(shí)驗(yàn)中的應(yīng)用研究[J].電腦知識與技術(shù),2012(12).