于海雯++婁芳
摘要:該文介紹了如何使用UML進行數(shù)據庫設計。首先建立靜態(tài)模型,然后根據映射策略將模型映射為數(shù)據庫表,最后使用觸發(fā)器、約束等來優(yōu)化建好的數(shù)據庫,以達到數(shù)據庫可以高效運行的目的。
關鍵詞:數(shù)據庫;統(tǒng)一建模語言;映射策略
中圖分類號:TP311 文獻標識碼:A 文章編號:1009-3044(2014)35-8353-02
The Database Design Based on IT Project Case
YU Hai-wen, LOU Fang
(College of Information Engineering NanChang University,Nanchang 330000,China)
Abstract: This paper introduces how to use UML to design the database.。First establishes the static model,then according to the mapping strategy,model is mapped to a database table,and finally to optimize the built database using triggers and constraints,in order to achieve the purpose of database can be operate efficiently.
Key words: db; uml; mapping strategy
近年來,高校計算機專業(yè)學生通過在企業(yè)實習,或參加校企合作的工程實訓以提高高校畢業(yè)生專業(yè)技能。該文以“江西微軟技術中心”的項目實訓案例“基于SNS的學習社區(qū)平臺”網站的數(shù)據庫設計為例,簡要談談該類項目的數(shù)據庫設計、實現(xiàn)的過程和方法。
為方便下面結合案例講述數(shù)據庫設計的相關問題,先簡要闡述下“基于SNS的學習社區(qū)平臺”的最基本的用戶需求:SNS即Social Networking Services,專指旨在幫助人們建立社會性網絡學習平臺的互聯(lián)網應用服務。所面向的對象主要是各校學生及教師等。公共社區(qū)里,學生可以獲取老師提供的學習資源和教學資料,可以到資料庫已分類的資料里面下載并查閱;游客可以進入公共社區(qū)看社區(qū)論壇;個人社區(qū)里,用戶與用戶之間可以交流互動,用戶可以有自己的個人空間,可以建立自己的好友圈,等。
1 數(shù)據庫設計一般流程
值得一提的是,在如今以面向對象為主流的編程思想中,用面向對象的思想來進行數(shù)據庫設計同樣重要。
數(shù)據庫設計的一般流程是:首先建立數(shù)據靜態(tài)模型,其次建立起靜態(tài)模型到關系數(shù)據庫的映射,之后進行優(yōu)化,這其中包含有對復雜關系的手工處理,比如,實體關系中的多對一的關系的處理,等等;采用UML進行數(shù)據庫設計,所用軟件:StarUML或Rose等,采用UML建模表現(xiàn)設計思想的好處在于:能夠直觀、清晰地表達數(shù)據庫模型的系統(tǒng)結構,易于開發(fā),縮短系統(tǒng)開發(fā)周期。
2 建立靜態(tài)模型
靜態(tài)模型是系統(tǒng)中最基本、最重要的模型,靜態(tài)模型一般用UML的類圖來表示,用來描述系統(tǒng)中類和對象以及類和對象之間的關系。后續(xù)的設計工作,都是在得到了一個完整的類圖后,才進行下一步的設計工作。
其中,UML(United Model Language)即統(tǒng)一建模語言,其用例圖也是需求階段常用的分析和表現(xiàn)工具之一。常用的UML軟件有ROSE、starUML、MS Visio等等。
2.1 尋找類
根據用戶需求,尋找類;
比如,根據“基于SNS的學習社區(qū)平臺”的最基本的用戶需求,一種方案是:將整個系統(tǒng)劃分為:“個人空間”和“學習社區(qū)”2個系統(tǒng),根據它們的功能需求,可以抽象出如下類:管理員admin、用戶user、好友friend、日志diary、相冊album、相片photo、聊天消息chatMessage、社區(qū)community、社區(qū)管理員communityManager、資源resources、資源分類resourceDispatch、主貼post、回帖replies等。
其中,“資源”和“資源分類”2個類,學生設計時,一般會把“資源分類”作為“資源”類中的一個屬性,但這樣做意味著以后資源有新的分類時就不好處理了;
另外,“帖子”,其實可以做成自反關系,這樣,就可以不需“回帖”類。
因此,上述類識別的結果并不一定是最佳的,這與用戶需求也有直接的關系。
2.2 建立類圖
建立類圖的目的是直觀地了解類之間的關系;所用軟件:PowerDesigner15。
一般類很少單獨存在,圖1中,每個類的屬性都是類自有的,與其他類的關系不需要定義在類屬性中。比如,如果需表示某資源是哪個用戶上傳的,傳統(tǒng)數(shù)據庫表中會在用戶表定義時給出一個字段,比如ResourceId來說明,但本案例中,CDM圖用了面向對象思想,已經在圖1中表示了“資源”與“用戶”之間的關系,故用戶表的12個屬性中,不需定義ResourceId屬性,因為在以后生成PDM圖時,軟件會根據類之間的關系以外鍵給出。
3 模型到數(shù)據庫映射
一般情況下,根據映射策略是將一個實體類映射為一個表或多個表。每個實體類屬性記錄的是有關實體的信息,比如前面步驟識別出來的類,就恰恰映射為數(shù)據庫中的1或多個表;這也正是面向對象思想在數(shù)據庫設計中的運用。
3.1 映射策略
3.1.1 將實體類映射為表
將實體類映射到表主要考慮兩個問題:一是每個表一般有個主鍵,主鍵要明確定義,并且建議定義為主鍵的屬性不要有業(yè)務意義;另一個是類之間的各種關系的處理。主鍵的定義一般可以有兩種方法:endprint
1) 為每個類增加一個對類無意義ID屬性, 俗稱“流水ID號”,并設為主鍵;其無意義和唯一性,對后期維護很有利;
2) 將實體類的某個屬性或屬性的組合設為主鍵。優(yōu)點:主鍵具有業(yè)務意義,比較容易理解;缺點:可能涉及到其他表的關系,即外鍵,一旦其他類發(fā)生變化,更改的工作量很大;在做架構設計時一般不建議設置此類主鍵。
3.1.2 屬性映射為列
通常一個屬性映射為表中的一列,對于復雜屬性可能會映射為幾列。
3.1.3 關聯(lián)關系
類之間的關聯(lián)關系有一對一或一對多的關系,在關系數(shù)據庫中是通過外鍵FK來實現(xiàn)的。外鍵允許將表中的某一行與其它表中的行相關聯(lián)。
3.2 表映射
對每個類進行分析,然后映射。由于涉及的表格較多,故略。
4 優(yōu)化
4.1 創(chuàng)建索引
什么時候建立索引?在哪些列上建立索引?一般來說如果表中的字段經常被使用就應創(chuàng)建索引,能加快數(shù)據庫的查詢速度。
數(shù)據庫索引大致分為四類:
唯一索引:使用關鍵詞UNIQUE創(chuàng)建,不允許具有索引值相同的行,在創(chuàng)建該索引后每次進行Update和Insert操作時都會進行檢查。
主鍵索引:當屬性被設置為主鍵后,數(shù)據庫管理軟件會為其設置主鍵索引,即主鍵不能為NULL,且不允許重復。
聚集索引:是一種索引,按某種規(guī)律排序,表中各行的物理順序與鍵值的邏輯順序相同,對于表中檢索操作頻繁的列,設置聚集索引,表中只能包含一個聚集索引,即確保索引列的唯一性,不特別說明的話,主鍵列默認為聚集索引。
非聚集索引:意思是數(shù)據行不按非聚集索引鍵的順序排序和存儲,表中各行的物理順序與鍵值的邏輯順序也不匹配。
4.2 創(chuàng)建CHECK約束
CHECK 約束指約束表中某一個或某些列可接受的數(shù)據值或者數(shù)據格式。比如:“基于SNS的學習社區(qū)平臺”的用戶表有性別屬性,顯然性別只接受“男”、“女”,創(chuàng)建CHECK約束:CONSTRAINT ck_Sex CHECK (Sex in {‘男,女})。
4.3 創(chuàng)建觸發(fā)器
觸發(fā)器(Trigger)實際是個特殊的存儲過程,其執(zhí)行是由事件來觸發(fā),一般對表進行Insert、Delete、Update操作時就會被激活執(zhí)行。
5 結束語
校企合作的此類實訓項目中,進行數(shù)據庫設計與實現(xiàn)所用知識、技術,基礎來自于校內所學,但又遠高于校內簡單的數(shù)據庫理論知識,是學生按軟件工程流程做項目開發(fā)最重要的一個環(huán)節(jié),數(shù)據庫設計的好壞,直接影響后期軟件開發(fā)和維護。
參考文獻:
[1] 古樂聲.JavaWeb程序設計與項目實踐[M].電子工業(yè)出版社,2011.
[2] 陳軼.Web開發(fā)技術實用教程[M].清華大學出版社,2011.
[3] 廖若學.JSP高級編程[M].機械工業(yè)出版社,2001.endprint