王桃群
(長(zhǎng)江大學(xué)計(jì)算機(jī)科學(xué)學(xué)院,湖北 荊州 434023)
數(shù)據(jù)庫(kù)設(shè)計(jì)的基本步驟可分為五個(gè)階段:需求分析、概念結(jié)構(gòu)設(shè)計(jì)、邏輯結(jié)構(gòu)設(shè)計(jì)、物理結(jié)構(gòu)設(shè)計(jì)、數(shù)據(jù)庫(kù)的實(shí)施、運(yùn)行與維護(hù)。其中,需求分析的主要任務(wù)是收集和分析用戶的需求,利用數(shù)據(jù)流圖(DFD)和數(shù)據(jù)字典(DD)來(lái)描述用戶的處理需求和數(shù)據(jù)需求;概念結(jié)構(gòu)設(shè)計(jì)是對(duì)需求進(jìn)行綜合歸納與抽象,形成獨(dú)立于具體DBMS的概念模型;邏輯結(jié)構(gòu)設(shè)計(jì)是將概念模型轉(zhuǎn)換為某個(gè)DBMS所支持的數(shù)據(jù)模型。
Sybase公司的PowerDesigner是一款開(kāi)發(fā)人員常用的數(shù)據(jù)庫(kù)建模工具,利用它可以制作數(shù)據(jù)流圖、概念數(shù)據(jù)模型和物理數(shù)據(jù)模型等。本文以一個(gè)簡(jiǎn)易的教學(xué)管理系統(tǒng)的數(shù)據(jù)庫(kù)設(shè)計(jì)為例,演示PowerDesigner在數(shù)據(jù)庫(kù)設(shè)計(jì)中的運(yùn)用。
概念數(shù)據(jù)模型CDM(Conceptual Data Model)是現(xiàn)實(shí)世界的抽象反映,它表示實(shí)體以及實(shí)體間的聯(lián)系,即E-R圖,是數(shù)據(jù)庫(kù)設(shè)計(jì)人員與用戶之間交流的語(yǔ)言。該教學(xué)管理系統(tǒng)包括的實(shí)體有學(xué)生、教師、課程和管理員。利用PowerDesigner建立該系統(tǒng)的概念數(shù)據(jù)模型,如圖1所示,從實(shí)體屬性的數(shù)據(jù)類型采用標(biāo)準(zhǔn)數(shù)據(jù)類型來(lái)看,可知概念模型與具體的DBMS是無(wú)關(guān)的。
圖1 概念數(shù)據(jù)模型
其中,為描述“學(xué)生”實(shí)體集與“課程”實(shí)體集之間的M:N聯(lián)系,可增加一個(gè)“Association”(即圖1中的“選課”,同時(shí)該Association擁有一個(gè)屬性:成績(jī)),然后,增加兩個(gè)“Association Link”將 Association“選課”分別與“學(xué)生”和“課程”實(shí)體連接起來(lái)。
為描述“教師”與“課程”之間的1:N聯(lián)系,如圖2所示,可將“教師”與“課程”之間的聯(lián)系“授課”的Cardinalities設(shè)置為One-Many,同時(shí),將“教師 to課程”的Cardinality設(shè)置為“0,n”,含義是每個(gè)教師可講授多門(mén)課或者不授課,將“課程 to教師”的Cardinality設(shè)置為“1,1”,含義是每門(mén)課程必須且只能由一名教師講授,當(dāng)轉(zhuǎn)化為關(guān)系模式時(shí),“課程”關(guān)系中的外鍵“教師號(hào)”將不能取空值。觀察圖2可見(jiàn),分岔線代表“多”,非分岔線代表“1”,空心圓圈代表無(wú)強(qiáng)制約束,小豎線代表強(qiáng)制約束。
圖2 “教師”與“課程”之間1:N聯(lián)系
此外,在為實(shí)體及實(shí)體的屬性命名時(shí),建議“Name”或“Comment”的值采用中文,“Code”的值采用英文。比如,“學(xué)生”實(shí)體的Name值為學(xué)生、Code值為Student,其屬性“學(xué)號(hào)”的Name值為學(xué)號(hào)、Code值為Sno,這樣當(dāng)E-R圖轉(zhuǎn)為關(guān)系模式時(shí),關(guān)系名及字段名采用英文,備注說(shuō)明則采用中文。
物理數(shù)據(jù)模型PDM(Physical Data Model)對(duì)應(yīng)于數(shù)據(jù)庫(kù)設(shè)計(jì)階段中的邏輯結(jié)構(gòu)設(shè)計(jì),將CDM轉(zhuǎn)換為某個(gè)具體DBMS所支持的數(shù)據(jù)模型,這里以選擇SQL Server 2008為例,生成的PDM如圖3所示。
圖3 物理數(shù)據(jù)模型
圖4 生成的SQL腳本
由圖3可見(jiàn),每個(gè)實(shí)體型均轉(zhuǎn)換為一個(gè)關(guān)系模式;1:n聯(lián)系采用與n端對(duì)應(yīng)的關(guān)系模式合并,在n端關(guān)系中加入1端關(guān)系的碼,例如,針對(duì)“教師”與“課程”間的“授課”聯(lián)系,在轉(zhuǎn)換為關(guān)系模式時(shí),將“教師”關(guān)系的碼“教師號(hào)”加入到“課程”關(guān)系中,并作為該關(guān)系的外碼;m:n聯(lián)系轉(zhuǎn)換為一個(gè)關(guān)系模式,屬性由與該聯(lián)系相連的各實(shí)體的碼以及聯(lián)系本身的屬性組成,碼是與該聯(lián)系相連的各實(shí)體的碼的組合,例如,針對(duì)“學(xué)生”與“課程”間的“選課”聯(lián)系,在轉(zhuǎn)換為一個(gè)獨(dú)立的關(guān)系模式時(shí),屬性由“學(xué)生”關(guān)系的碼“學(xué)號(hào)”、“課程”關(guān)系的碼“課程號(hào)”以及“選課”聯(lián)系的屬性“成績(jī)”組成。
利用物理數(shù)據(jù)模型,生成數(shù)據(jù)庫(kù)腳本,最后將物理模型生成關(guān)系數(shù)據(jù)庫(kù)。在PowerDesigner環(huán)境中,選擇菜單項(xiàng)“Database——Configure Connections…”,建立一個(gè)SQL Server的ODBC數(shù)據(jù)源,然后,選擇菜單項(xiàng)“Database——Generate Database…”,生成SQL腳本或根據(jù)ODBC數(shù)據(jù)源直接導(dǎo)出到數(shù)據(jù)庫(kù)中。此外,若選中 “Format”選項(xiàng)卡中的“Generate name in empty comment”復(fù)選框時(shí),將會(huì)為表中的字段添加擴(kuò)展屬性。生成的SQL腳本如圖4所示,單擊“Run”按鈕即可執(zhí)行SQL腳本,生成的數(shù)據(jù)庫(kù)及表如圖5所示,可見(jiàn),表名與CDM中實(shí)體的“Code”命名一致,字段名與實(shí)體屬性的“Code”命名一致,字段的“說(shuō)明”與實(shí)體屬性的“Name”命名一致。
圖5 生成的數(shù)據(jù)庫(kù)
利用PowerDesigner進(jìn)行數(shù)據(jù)庫(kù)設(shè)計(jì),既可幫助我們理解數(shù)據(jù)庫(kù)相關(guān)理論知識(shí),又可提升軟件開(kāi)發(fā)效率。當(dāng)然,數(shù)據(jù)庫(kù)建模的輔助工具很多,如Rational公司的Rational Rose、CA公司的Erwin等,可結(jié)合自身的習(xí)慣或需要,選擇合適的建模工具。
[1]尹志宇,郭晴,等.數(shù)據(jù)庫(kù)原理與應(yīng)用教程——SQL Server[M].清華大學(xué)出版社,2010.
[2]從 PowerDesigner概念設(shè)計(jì)模型(CDM)中的 3種實(shí)體關(guān)系說(shuō)起[OL].http://blog.csdn.net/shanliwa/article/details/1834117,2007.
[3]肖海蓉.Power Designer在數(shù)據(jù)庫(kù)設(shè)計(jì)中的應(yīng)用[J].電腦學(xué)習(xí),2010,10(5).