Java論壇管理系統(tǒng)——畢業(yè)論文
信息工程學(xué)院數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)開(kāi)發(fā)課程設(shè)計(jì)論文題 目:Java論壇管理系統(tǒng)姓 名: 專 業(yè):計(jì)算機(jī)科學(xué)與技術(shù) 指導(dǎo)老師: 完成日期: 摘 要Java論壇管理系統(tǒng)主要是實(shí)現(xiàn)在網(wǎng)上進(jìn)行交流和學(xué)習(xí)Java語(yǔ)言,本論壇提供用戶注冊(cè)、發(fā)帖和回帖等論壇的基本功能,劃分J2SE、J2EE、J2ME和開(kāi)發(fā)工具的使用等版塊,使用合理的管理方法管理論壇,嚴(yán)格保證帖子質(zhì)量,為Java愛(ài)好者提供一個(gè)學(xué)習(xí)Java的好地方。本系統(tǒng)采用SQL2000作為后臺(tái)數(shù)據(jù)庫(kù),使用MVC框架,由Servlet負(fù)責(zé)處理最初的請(qǐng)求轉(zhuǎn)發(fā)到j(luò)sp頁(yè)面顯示最后的結(jié)果,JSP頁(yè)面使用bean,系統(tǒng)具有很好的移植性和跨平臺(tái)性。關(guān)鍵字:Java論壇;管理;MVC;目錄1 引言12 數(shù)據(jù)庫(kù)設(shè)計(jì)12.1.1需求設(shè)計(jì)11、引言12、目標(biāo)與任務(wù)13、階段結(jié)果32.1.2概念設(shè)計(jì)62.1.2.1目標(biāo)與任務(wù)62.1.2.2概念模型設(shè)計(jì)62.1.3邏輯設(shè)計(jì)92.1.3.1目標(biāo)與任務(wù)92.1.3.2數(shù)據(jù)組織92.1.3.3數(shù)據(jù)處理方面122.1.4物理設(shè)計(jì)132.1.4目標(biāo)與任務(wù)132.1.4.2數(shù)據(jù)存取方面142.1.4.3功能模塊142.1.5數(shù)據(jù)庫(kù)實(shí)施152.1.6數(shù)據(jù)庫(kù)調(diào)試與試運(yùn)行163 收獲與體會(huì)184 存在問(wèn)題與建議18附錄181數(shù)據(jù)字典182存儲(chǔ)過(guò)程:203基本表:244視圖275參考資料271 引言隨著互聯(lián)網(wǎng)的發(fā)展,網(wǎng)上學(xué)習(xí)和交流已成為現(xiàn)代人的一種時(shí)尚,論壇是提供這種環(huán)境中的重要的部分。但是多數(shù)論壇十分繁雜,管理不規(guī)范,帖子混雜,很難滿足用戶的需要。 本次課程設(shè)計(jì)的題目為Java論壇管理系統(tǒng),實(shí)現(xiàn)了論壇的基本功能即用戶的注冊(cè)、用戶發(fā)帖回帖、管理員管理論壇等,主要任務(wù)是完成詳細(xì)的數(shù)據(jù)庫(kù)的設(shè)計(jì),為以后完整系統(tǒng)的設(shè)計(jì)打下堅(jiān)實(shí)的基礎(chǔ),其它論壇擴(kuò)展功能以后在實(shí)現(xiàn)。本次數(shù)據(jù)庫(kù)設(shè)計(jì)重視數(shù)據(jù)庫(kù)理論知識(shí)的學(xué)習(xí)和數(shù)據(jù)庫(kù)系統(tǒng)的設(shè)計(jì),對(duì)數(shù)據(jù)庫(kù)的學(xué)習(xí)有中要的意義。2 數(shù)據(jù)庫(kù)設(shè)計(jì) 2.1.1需求設(shè)計(jì)1、引言 目前Java語(yǔ)言比較流行,學(xué)習(xí)Java的人群也特別的多。Java語(yǔ)言需要學(xué)習(xí)的內(nèi)容非常多,而且Java語(yǔ)言也是一個(gè)不斷變化的語(yǔ)言和完善的語(yǔ)言,要比較系統(tǒng)的學(xué)習(xí)Java,傳統(tǒng)的一個(gè)人學(xué)習(xí)方式很難學(xué)好Java,上網(wǎng)學(xué)習(xí)和交流能比較好的解決此問(wèn)題。目前的論壇比較多,但比較的繁雜,大多論壇沒(méi)有規(guī)范的帖子管理,對(duì)學(xué)習(xí)Java沒(méi)有多大的幫助。開(kāi)發(fā)一個(gè)Java論壇管理系統(tǒng)就是要改變傳統(tǒng)的學(xué)習(xí)方法和解決許多論壇管理不規(guī)范的問(wèn)題。本論壇只討論Java技術(shù),嚴(yán)格保證帖子的質(zhì)量和安全問(wèn)題,提供Java愛(ài)好者一個(gè)良好和舒適的交流平臺(tái)。本論壇具有很好的教育價(jià)值,同時(shí)具有很好的可重用性,稍加改變就能作為其它的論壇。如今論壇是Internet中比較受歡迎的技術(shù),是大多數(shù)網(wǎng)站不可缺少的一部分,所以論壇對(duì)網(wǎng)站的開(kāi)發(fā)也非常有價(jià)值。2、目標(biāo)與任務(wù)目標(biāo):通過(guò)需求分析,充分了解用戶需求,明確系統(tǒng)的業(yè)務(wù)流程和系統(tǒng)的功能,完成數(shù)據(jù)流圖和數(shù)據(jù)字典等內(nèi)容,為以后整個(gè)系統(tǒng)設(shè)計(jì)提供依據(jù)。任務(wù):處理對(duì)象:用戶信息:(用戶名,密碼,郵箱,用戶等級(jí),發(fā)帖數(shù),回帖數(shù),是否刪除)帖子信息:(帖子id,版面id號(hào),主題,內(nèi)容,帖子等級(jí),帖子被訪問(wèn)次數(shù),所屬版面,發(fā)帖時(shí)間,發(fā)帖用戶)版面信息(版面id號(hào),版面名稱,版主名稱,版面主題數(shù))版主信息(版主名稱,密碼,郵箱)管理員信息(管理員名,密碼,郵箱)處理功能要求: 用戶注冊(cè)登錄功能模塊(用戶注冊(cè)以及修改注冊(cè)信息) 瀏覽功能模塊(用戶瀏覽版塊、主題列表、查看帖子) 帖子管理功能模塊(管理員編輯、刪除、置頂和指定精華帖) 管理版塊功能模塊(管理員創(chuàng)建、修改和刪除版塊) 用戶管理模塊(管理員添加、刪除和設(shè)置用戶權(quán)限)安全性和完整性要求:安全性:論壇管理系統(tǒng)是提供一個(gè)交流平臺(tái),安全問(wèn)題主要是防止黑客的攻擊,數(shù)據(jù)庫(kù)需要運(yùn)行在防火墻后面。要防止非法用戶訪問(wèn)數(shù)據(jù)庫(kù),對(duì)數(shù)據(jù)庫(kù)進(jìn)行修改,管理員需要進(jìn)行合理的用戶權(quán)限設(shè)置。(1) 論壇的用戶分4個(gè)級(jí)別:匿名用戶、普通用戶、版主和系統(tǒng)管理員(2) 用戶在未登錄前只能瀏覽論壇中的帖子,已登錄的用戶可以在已有的版塊發(fā)布新主題和回復(fù)帖子。(3) 論壇為每個(gè)注冊(cè)的用戶建立個(gè)人資料,用戶本人可以修改個(gè)人資料。(4) 版主除有普通用戶的權(quán)限外,還可以對(duì)版面進(jìn)行管理:刪除、推薦、鎖定帖子、解除推薦、解除鎖定。(5) 論壇管理員除有版主的權(quán)限外,還可以添加、刪除版塊,對(duì)論壇中所有版塊的屬性進(jìn)行編輯,對(duì)用戶的所有資料進(jìn)行修改和刪除用戶。論壇權(quán)限如下表1:對(duì)象實(shí)體功能方法用戶類型版塊瀏覽列表注冊(cè)用戶版塊創(chuàng)建版塊管理員版塊修改版塊管理員版塊刪除版塊管理員帖子瀏覽列表注冊(cè)用戶帖子發(fā)帖注冊(cè)用戶帖子回帖注冊(cè)用戶帖子搜集注冊(cè)用戶帖子編輯(自己所有)注冊(cè)用戶帖子編輯(全部)管理員帖子刪除管理員帖子置頂管理員帖子指定精華管理員用戶注冊(cè)注冊(cè)用戶用戶注冊(cè)用戶登錄注冊(cè)用戶用戶管理員登錄管理員用戶刪除管理員用戶指定權(quán)限管理員實(shí)體完整性:用戶信息:用戶必須唯一步能為空,密碼不能為空,郵箱可以為空,用戶等級(jí)、發(fā)帖和回帖由系統(tǒng)設(shè)置,是否刪除由管理員設(shè)置。帖子信息:帖子的id號(hào)不能為空,帖子主題不能為空,帖子內(nèi)容不能為空,帖子等級(jí)、帖子被訪問(wèn)的次數(shù)和發(fā)帖時(shí)間由系統(tǒng)設(shè)置,所屬版面不能為空,發(fā)帖用戶由日志提供。版面信息:版面id號(hào)唯一步能為空,版面名稱唯一步能為空,版主不能為空版主信息:(版主名稱不能為空,密碼不能為空,郵箱可以為空)參考完整性:版面信息中:版面參考版主信息表中的版主名,版主要么為空,要么和版主信息中的版主名相同。自定義完整性:帖子的主題長(zhǎng)度不能超過(guò)400個(gè)字節(jié),帖子的內(nèi)容長(zhǎng)度不能超過(guò)1000個(gè)字節(jié)。3、階段結(jié)果(1)調(diào)查方式:1、通過(guò)詢問(wèn)同學(xué)征詢同學(xué)的意見(jiàn)2、圖書管查閱資料3、上網(wǎng)了解一些論壇提供的功能體會(huì):需求分析需要耐心的多了解用戶的要求,然后要學(xué)會(huì)分析和提取有用的材料收獲:聽(tīng)取了許多好的建議,對(duì)系統(tǒng)的整體構(gòu)架有了清晰的認(rèn)識(shí)。(2)業(yè)務(wù)流程圖瀏覽者用 戶注冊(cè)登錄瀏覽版塊管理版塊管理用戶管理帖子回帖瀏覽帖子搜集管理員發(fā)帖圖 例 :實(shí)體:處理過(guò)程:?jiǎn)蜗蛱幚砹鞒蹋弘p向處理流程 圖1.1(3)數(shù)據(jù)圖(DFD圖)圖 例 :數(shù)據(jù)源:數(shù)據(jù)加工:?jiǎn)蜗驍?shù)據(jù)流程:雙向數(shù)據(jù)流程:數(shù)據(jù)存儲(chǔ)回復(fù)帖子用 戶回帖表版主相關(guān)內(nèi)容檢測(cè)用戶版面表用戶管理帖子選擇版塊帖 子修改用戶資料顯示主題帖子表帖子發(fā)帖登錄版主表檢測(cè)管理帖子表更新更新顯示管理員檢測(cè)用戶管理用戶檢測(cè)登錄管理等級(jí)用戶表更新用戶版面表更新管理版面更新顯示版面用 戶瀏覽注冊(cè)用戶注冊(cè)覽登錄登錄檢測(cè)用戶用戶信息表寫回檢測(cè)瀏覽瀏覽版面發(fā)送帖子管理員表修改(4)數(shù)據(jù)字典。(見(jiàn)附錄)2.1.2概念設(shè)計(jì)2.1.2.1目標(biāo)與任務(wù)目標(biāo):將需求分析得到的用戶需求抽象為信息結(jié)構(gòu),設(shè)計(jì)并生成E_R圖。任務(wù):設(shè)計(jì)各個(gè)分E-R圖,并消除局部E-R圖存在的沖突,合并成基本E-R圖特點(diǎn):(1) 能真實(shí)的反映現(xiàn)實(shí)世界,包括事物和事物之間的聯(lián)系,能滿足用戶對(duì)數(shù)據(jù)的處理要求。是對(duì)現(xiàn)實(shí)世界的一個(gè)真實(shí)模型。(2) 易于理解,從而可以用它和不熟悉計(jì)算機(jī)的用戶交換意見(jiàn),用戶的積極參與是數(shù)據(jù)庫(kù)的設(shè)計(jì)成功的關(guān)鍵。(3) 易于更改,當(dāng)應(yīng)用環(huán)境和應(yīng)用要求改變是,容易對(duì)概念模型修改和擴(kuò)充。(4) 易于向關(guān)系、網(wǎng)狀、層次等各種數(shù)據(jù)模型轉(zhuǎn)換。 2.1.2.2概念模型設(shè)計(jì) (1)設(shè)計(jì)分E-R圖,即各子模塊的E-R圖; 用 戶發(fā)帖帖子回帖1mn圖1.1用戶和帖子E-R圖n用戶(用戶名,密碼,郵箱,等級(jí),發(fā)帖數(shù),回帖數(shù))帖子(帖子id,主題,內(nèi)容,帖子等級(jí),帖子被訪問(wèn)次數(shù))發(fā)帖(發(fā)帖時(shí)間)回帖(回帖id,帖子i d,內(nèi)容,用戶名,回帖時(shí)間)用 戶m圖1.2用戶和版面E-R圖n版 面瀏覽用戶(用戶名,密碼,郵箱,等級(jí),發(fā)帖數(shù),回帖數(shù))版面(版面id號(hào),版面名稱,版主名稱,版面主題數(shù))瀏覽(瀏覽時(shí)間)管理員m圖1.3用戶和版面E-R圖n用 戶管理管理員信息(管理員名,密碼,郵箱)用戶(用戶名,密碼,郵箱,等級(jí),發(fā)帖數(shù),回帖數(shù))管理(管理行為)版面1圖1.4用戶和版面E-R圖m帖子從屬帖子信息:(帖子id,主題,內(nèi)容,帖子等級(jí),帖子被訪問(wèn)次數(shù))版面(版面id號(hào),版面名稱,版主名稱,版面主題數(shù))從屬(所屬版面)圖1.5版主和帖子E-R圖版主管 理帖 子1n版主信息(版主名稱,密碼,郵箱)帖子信息:(帖子id,主題,內(nèi)容,帖子等級(jí),帖子被訪問(wèn)次數(shù))管理(管理行為)圖1.6版主和版面E-R圖管理員管 理版面1n版面(版面id號(hào),版面名稱,版主名稱,版面主題數(shù))管理員信息(管理員名,密碼,郵箱)管理(管理行為)(2)生成全局E-R圖,通過(guò)消除沖突等方面 用 戶發(fā)帖回帖帖 子版 主管理版面從屬n1nn1n管理mnnn圖1.7基本E-R圖管理員瀏覽mnm管理nm 2.1.3邏輯設(shè)計(jì)2.1.3.1目標(biāo)與任務(wù)目標(biāo):完成E-R圖到數(shù)據(jù)庫(kù)模式的轉(zhuǎn)換,優(yōu)化各個(gè)關(guān)系模式任務(wù):把概念結(jié)構(gòu)設(shè)計(jì)階段好的基本E-R圖轉(zhuǎn)換為與選用DBMS產(chǎn)品所支持的數(shù)據(jù)模型相符合的邏輯結(jié)構(gòu)。2.1.3.2數(shù)據(jù)組織(1)將E-R模型轉(zhuǎn)換為關(guān)系模型 (描述轉(zhuǎn)換的原則、轉(zhuǎn)換的結(jié)果)。 如圖1.7所示: 一、用戶和帖子具有兩個(gè)關(guān)系:(1)用戶回帖,因?yàn)橛脩艉吞拥年P(guān)系是m對(duì)n的關(guān)系,所以將聯(lián)系類型也轉(zhuǎn)換關(guān)系模式,其屬性為兩端實(shí)體類型的鍵加上聯(lián)系類型的屬性,而鍵為兩端實(shí)體鍵的組合。用戶(用戶名,密碼,郵箱,用戶等級(jí),發(fā)帖數(shù),回帖數(shù),精華帖數(shù),是否刪除)帖子(帖子id,主題,內(nèi)容,帖子等級(jí),帖子被訪問(wèn)次數(shù))回帖(回帖id,用戶名,帖子i d,內(nèi)容,回帖時(shí)間)(2)用戶發(fā)帖,用戶和帖子的關(guān)系是1對(duì)多的關(guān)系。所以可以聯(lián)系可以轉(zhuǎn)換為一個(gè)獨(dú)立的模式,也可以與n端對(duì)應(yīng)的模式合并。這里把聯(lián)系屬性合并到n端實(shí)體。用戶(用戶名,密碼,郵箱,用戶等級(jí),發(fā)帖數(shù),回帖數(shù),精華帖數(shù),是否刪除)帖子(帖子id,主題,內(nèi)容,帖子等級(jí),帖子被訪問(wèn)次數(shù),發(fā)帖時(shí)間)二、 管理員和用戶的關(guān)系為m對(duì)n,所以將聯(lián)系類型也轉(zhuǎn)換關(guān)系模式,其屬性為兩端實(shí)體類型的鍵加上聯(lián)系類型的屬性,而鍵為兩端實(shí)體鍵的組合。用戶(用戶名,密碼,郵箱,用戶等級(jí),發(fā)帖數(shù),回帖數(shù),精華帖數(shù),是否刪除)管理員(管理員名,密碼,郵箱)管理(用戶名,管理員名,管理)三、版主和帖子為m對(duì)n的關(guān)系,所以將聯(lián)系類型也轉(zhuǎn)換關(guān)系模式,其屬性為兩端實(shí)體類型的鍵加上聯(lián)系類型的屬性,而鍵為兩端實(shí)體鍵的組合。 版主(版主名稱,密碼,郵箱) 帖子(帖子id,版主名稱,主題,內(nèi)容,帖子等級(jí),帖子被訪問(wèn)次數(shù))管理帖子(版主名稱,帖子id ,管理行為)四、管理員和版面是m對(duì)n的關(guān)系,所以可以轉(zhuǎn)換為一個(gè)獨(dú)立的模式管理員(管理員名,密碼,郵箱)版面(版面id號(hào),版面名稱,版主名稱,版面主題數(shù)) 管理(管理員名,版面id號(hào),管理行為)五、版面和用戶是多對(duì)多的關(guān)系。所以將聯(lián)系類型也轉(zhuǎn)換關(guān)系模式,其屬性為兩端實(shí)體類型的鍵加上聯(lián)系類型的屬性,而鍵為兩端實(shí)體鍵的組合。版面(版面id號(hào),版面名稱,版主名稱,版面主題數(shù))用戶(用戶名,密碼,郵箱,用戶等級(jí),發(fā)帖數(shù),回帖數(shù),精華帖數(shù),是否刪除)瀏覽(用戶名,版面id號(hào),瀏覽時(shí)間)六、版面和帖子是1對(duì)多的關(guān)系,所以把聯(lián)系屬性合并到n端實(shí)體版面(版面id號(hào),版面名稱,版主名稱,版面主題數(shù))帖子(帖子id,版面id號(hào),主題,內(nèi)容,帖子等級(jí),帖子被訪問(wèn)次數(shù),所屬版面)七、由E_R圖轉(zhuǎn)化后得到的關(guān)系模式用戶(用戶名,密碼,郵箱,用戶等級(jí),發(fā)帖數(shù),回帖數(shù),精華帖數(shù),是否刪除)帖子(帖子id,主題,內(nèi)容,帖子等級(jí),帖子被訪問(wèn)次數(shù))帖子(帖子id,主題,內(nèi)容,帖子等級(jí),帖子被訪問(wèn)次數(shù),發(fā)帖時(shí)間)帖子(帖子id,版面id號(hào),主題,內(nèi)容,帖子等級(jí),帖子被訪問(wèn)次數(shù),所屬版面)回帖(用戶名,帖子i d,內(nèi)容,回帖時(shí)間)管理員(管理員名稱,密碼,郵箱)瀏覽(用戶名,版面id號(hào),瀏覽時(shí)間)管理用戶(用戶名,管理員名,管理)管理版面(管理員名稱,版面id號(hào),管理行為)管理帖子(版主名稱,帖子id ,管理行為)版主(版主名稱,密碼,郵箱)版面(版面id號(hào),版面名稱,版主名稱,版面主題數(shù))八、消除不一致后得:用戶(用戶名,密碼,郵箱,用戶等級(jí),發(fā)帖數(shù),回帖數(shù),精華帖數(shù),是否刪除)帖子(帖子id,版面id號(hào),主題,內(nèi)容,帖子等級(jí),帖子被訪問(wèn)次數(shù),發(fā)帖時(shí)間,發(fā)帖用戶)回帖(回帖id,帖子i d,用戶名,內(nèi)容,回帖時(shí)間,帖子等級(jí))管理員(管理員名稱,密碼,郵箱)版主(版主名稱,密碼,郵箱,版主狀態(tài))瀏覽(瀏覽id,用戶名,版面id號(hào),瀏覽時(shí)間)管理用戶(管理id,用戶名,管理員名,管理行為)管理版面(管理id,管理員名稱,版面id號(hào),管理行為)管理帖子(管理id,版主名稱,帖子id ,管理行為)版面(版面id號(hào),版面名稱,版主名稱,版面主題數(shù),版面狀態(tài))(2)模型優(yōu)化以上關(guān)系都達(dá)到了3NF,不需要在分解(3)完成數(shù)據(jù)庫(kù)模式定義,包括各模式的邏輯結(jié)構(gòu)定義、關(guān)系的完整性和安全性等內(nèi)容。member(u_name,u_password,u_email,u_step,u_post,u_return,jinghucount,u_stat) u_name為主鍵,不能為空,而且是唯一的,u_password也不能為空,其它由系統(tǒng)管理員設(shè)置。topic(t_id ,bm_id ,t_theme,t_content,t_stept_count,t_posttime, l_name )t_id為主鍵,bm_id和,l_name為參考外鍵,都不能為空,t_theme,t_content都不能為空,t_step,t_count,t_posttime由系統(tǒng)設(shè)置reply( r_id, t_id, l_name,r_conten, r_time, r_step)r_id 為主鍵,t_id和l_name為參考外鍵,都不能為空,r_conten也不能為空,r_time, r_step由管理員和系統(tǒng)設(shè)置。minister(m_name,_m_password ,m_email)m_name為主鍵,m_name, m_password不能為空banzhu(bzh_name ,bzh_password, bzh_state)bzh_name為主鍵,bzh_password不能為空,bzh_state由管理員設(shè)置browsing(l_id, bm_id ,u_name,l_time); l_id為主鍵,bm_id和u_name為外鍵參考,都不能為空mini_user( m_id,m_name, u_name, dowhat);m_id為主鍵,m_name和u_name為外鍵參考,都不能為空,dowhat由管理員設(shè)置mini_topic( mt_id, bzh_name,t_id, dowhat);mt_id為主鍵,bzh_name和t_id為外鍵參考,都不能為空,dowhat由管理員設(shè)置mini_banmian( mb_id , m_name, bm_id, dowhat ); mb_id為主鍵,m_name和bm_id為外鍵參考,都不能為空,dowhat由管理員設(shè)置banmian(bm_id, bm_name, bzh_name, bm_themecount );bm_id為主鍵,bm_name和bzh_name為外鍵參考,都不能為空rizhi(l_name, l_time)l_name為主鍵,不能為空,l_time由系統(tǒng)設(shè)置。(4)設(shè)計(jì)用戶子模式視圖設(shè)計(jì),完成適合不同用戶的子模式設(shè)計(jì)。編號(hào)模式子模式用戶作用1版面版面視圖所有用戶查看包含的版塊2帖子主題列表視圖1所有用戶不同的用戶選擇不同的版塊查看最新主題主題列表視圖2主題列表視圖n不合格帖子視圖版主刪除不合格的帖子3用戶用戶視圖各自用戶查看各自資料,并進(jìn)行修改在線用戶視圖注冊(cè)用戶查看所有在線用戶黑名單視圖管理員刪除被列出的用戶4版主版主視圖管理員查看版主信息5管理員管理員視圖管理員查看管理員信息2.1.3.3數(shù)據(jù)處理方面 系統(tǒng)的功能模塊圖如下:注冊(cè)登錄用戶用戶管理選擇版塊發(fā)帖回帖瀏覽帖子管理版塊管理帖子搜索管理員2.1.4物理設(shè)計(jì)2.1.4目標(biāo)與任務(wù)目標(biāo):提供存儲(chǔ)中數(shù)據(jù)的合適結(jié)構(gòu),而且要以合適的方式對(duì)性能提供保證。任務(wù): 一確定數(shù)據(jù)庫(kù)的物理結(jié)構(gòu)1確定數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu) 確定數(shù)據(jù)庫(kù)存儲(chǔ)結(jié)構(gòu)時(shí)要綜合考慮存取時(shí)間、存儲(chǔ)空間利用率和維護(hù)代價(jià)三方面的因素。這三個(gè)方面常常是相互矛盾的,例如消除一切冗余數(shù)據(jù)雖然能夠節(jié)約存儲(chǔ)空間,但往往會(huì)導(dǎo)致檢索代價(jià)的增加,因此必須進(jìn)行權(quán)衡,選擇一個(gè)折中方案。2設(shè)計(jì)數(shù)據(jù)的存取路徑在關(guān)系數(shù)據(jù)庫(kù)中,選擇存取路徑主要是指確定如何建立索引。例如,應(yīng)把哪些域作為次碼建立次索引,建立單碼索引還是組合索引,建立多少個(gè)為合適,是否建立聚集索引等。3確定數(shù)據(jù)的存放位置 為了提高系統(tǒng)性能,數(shù)據(jù)應(yīng)該根據(jù)應(yīng)用情況將易變部分與穩(wěn)定部分、經(jīng)常存取部分和存取頻率較低部分分開(kāi)存放。4確定系統(tǒng)配置DBMS產(chǎn)品一般都提供了一些存儲(chǔ)分配參數(shù),供設(shè)計(jì)人員和DBA對(duì)數(shù)據(jù)庫(kù)進(jìn)行物理優(yōu)化。初始情況下,系統(tǒng)都為這些變量賦予了合理的缺省值。但是這些值不一定適合每一種應(yīng)用環(huán)境,在進(jìn)行物理設(shè)計(jì)時(shí),需要重新對(duì)這些變量賦值以改善系統(tǒng)的性能。通常情況下,這些配置變量包括:同時(shí)使用數(shù)據(jù)庫(kù)的用戶數(shù),同時(shí)打開(kāi)的數(shù)據(jù)庫(kù)對(duì)象數(shù),使用的緩沖區(qū)長(zhǎng)度、個(gè)數(shù),時(shí)間片大小、數(shù)據(jù)庫(kù)的大小,裝填因子,鎖的數(shù)目等等,這些參數(shù)值影響存取時(shí)間和存儲(chǔ)空間的分配,在物理設(shè)計(jì)時(shí)就要根據(jù)應(yīng)用環(huán)境確定這些參數(shù)值,以使系統(tǒng)性能最優(yōu)。在物理設(shè)計(jì)時(shí)對(duì)系統(tǒng)配置變量的調(diào)整只是初步的,在系統(tǒng)運(yùn)行時(shí)還要根據(jù)系統(tǒng)實(shí)際運(yùn)行情況做進(jìn)一步的調(diào)整,以期切實(shí)改進(jìn)系統(tǒng)性能。 二評(píng)價(jià)物理結(jié)構(gòu)數(shù)據(jù)庫(kù)物理設(shè)計(jì)過(guò)程中需要對(duì)時(shí)間效率、空間效率、維護(hù)代價(jià)和各種用戶要求進(jìn)行權(quán)衡,其結(jié)果可以產(chǎn)生多種方案,數(shù)據(jù)庫(kù)設(shè)計(jì)人員必須對(duì)這些方案進(jìn)行細(xì)致的評(píng)價(jià),從中選擇一個(gè)較優(yōu)的方案作為數(shù)據(jù)庫(kù)的物理結(jié)構(gòu)。評(píng)價(jià)物理數(shù)據(jù)庫(kù)的方法完全依賴于所選用的DBMS,主要是從定量估算各種方案的存儲(chǔ)空間、存取時(shí)間和維護(hù)代價(jià)入手,對(duì)估算結(jié)果進(jìn)行權(quán)衡、比較,選擇出一個(gè)較優(yōu)的合理的物理結(jié)構(gòu)。如果該結(jié)構(gòu)不符合用戶需求,則需要修改設(shè)計(jì)。2.1.4.2數(shù)據(jù)存取方面用戶表以用戶名建立唯一性索引,因?yàn)橛脩裘仟?dú)一無(wú)二的。帖子表以帖子id號(hào)建立唯一性索引回帖表以帖子id號(hào)建聚簇索引,用于檢索某個(gè)帖子用戶的所有回復(fù)。2.1.4.3功能模塊用戶注冊(cè)模塊:input message check member table if(u_name in member table) out user is in the member ,change for other name else successful message put into membertable用戶登錄模塊:input name and password check member talbe if(name=u_name&password!=u_password) fault; else successful管理帖子:check topic table if(topic is not normal) set topic t_step=-1or1or0updateTopic管理用戶帖子、管理版面帖子類似管理帖子,這里省略發(fā)送帖子:input username check rizhi if( usrname in rizhi) input topic message and send out to topic table else fault回帖類似發(fā)帖(省略)其它模塊(省略)2.1.5數(shù)據(jù)庫(kù)實(shí)施目標(biāo):完成數(shù)據(jù)庫(kù)系統(tǒng)的建立,并使用存儲(chǔ)過(guò)程完成數(shù)據(jù)庫(kù)功能 任務(wù):(1)建立數(shù)據(jù)庫(kù)、數(shù)據(jù)表、視圖、索引等存儲(chǔ)過(guò)程等DDL定義,并完成完整性、安全性等要求定義;可用DDL語(yǔ)言或SQL腳本任意一種形式表現(xiàn)。(見(jiàn)附錄)(2)數(shù)據(jù)入庫(kù)(3)完成處理過(guò)程、系統(tǒng)主要功能(查詢、更新、簡(jiǎn)單統(tǒng)計(jì)等),均需要使用存儲(chǔ)過(guò)程完成。 存儲(chǔ)過(guò)程編號(hào)名稱作用1ChangeMyInformateion可以用來(lái)更改用戶的注冊(cè)資料2Denglu登錄用戶信息檢測(cè),并把用戶名記錄在日志里3Jinghuatie用來(lái)檢索精華帖4LookBM列出所有的版面信息5LookBZH查看版主信息6MinisterBanzhu管理版主7MinsterReply管理回復(fù)的帖子8Ministerbanmian管理版面9MinisterTopic管理帖子10MinsterUser管理用戶11MyInformation查看用戶自己的信息12Myteme查看所有我發(fā)的主題13OnlineUser查看在線用戶14Postreply回復(fù)帖子15PostTopic發(fā)送帖子16Peply_Content查看回復(fù)的信息17Theme查看所有的主題18Theme_Content查看主題的內(nèi)容19Updatetopic更新帖子20Updateusers更新用戶21Updatereply更新回復(fù)的帖子22userInformation所有用戶的信息23Zhuce注冊(cè)用戶(存儲(chǔ)過(guò)程見(jiàn)附錄)2.1.6數(shù)據(jù)庫(kù)調(diào)試與試運(yùn)行(1)說(shuō)明系統(tǒng)測(cè)試方法本次測(cè)試主要使用黑盒測(cè)試的方法,即功能測(cè)試,輸入測(cè)試數(shù)據(jù),看輸出的結(jié)果以意想的對(duì)不對(duì)(2)測(cè)試內(nèi)容,主要從功能測(cè)試和性能測(cè)試兩個(gè)方面 存儲(chǔ)過(guò)程的測(cè)試: ChangeMyInformation jaclieren,565689,jacshan,565689, DengLu dede,3232execute Reply_Contentexecute Theme declare string varchar(1000)execute Theme_Content string outputselect the Theme_Content is:,stringexecute MyInformation iileypostReply 15,2,我覺(jué)得Servlet and jsp 核心編程還可以,jacshanpostTopic 過(guò)年了,散分了,祝大家新年快樂(lè), ha,ha!, jacshan,2Zhuce jaclieren,565689,這是部分存儲(chǔ)過(guò)程的測(cè)試,全部都正常完成,其它不在此一一列出,視圖的測(cè)試也都正常運(yùn)行,這里省略3 收獲與體會(huì)本次實(shí)習(xí)主要是完成數(shù)據(jù)庫(kù)的設(shè)計(jì),對(duì)數(shù)據(jù)庫(kù)的各階段寫出詳細(xì)的說(shuō)明文檔。對(duì)我來(lái)說(shuō)是一個(gè)挑戰(zhàn),因?yàn)槲液苌賹戇^(guò)文檔,以前寫的任何一個(gè)程序都是單刀直入,從不寫文檔,也不畫任何程序流程圖。本次實(shí)習(xí)體會(huì)最深刻的就是需求分析,通過(guò)寫需求分析文檔,我深刻的體會(huì)到了需求分析在整個(gè)系統(tǒng)設(shè)計(jì)中的重要性即:要全面的進(jìn)行需求分析,了解用戶的需求,這樣可以減少以后設(shè)計(jì)的困難,完成需求分析對(duì)整個(gè)系統(tǒng)的功能和構(gòu)架就非常的清晰,需求不完善將影響以后的所以設(shè)計(jì)。也體會(huì)到了交流的重要性,通過(guò)交流可以發(fā)現(xiàn)自己在系統(tǒng)設(shè)計(jì)方面存在很多缺陷,交流不僅可以找出系統(tǒng)設(shè)計(jì)的不合理性,還可以減少需求分析的不確定性。在其它階段的設(shè)計(jì)中對(duì)數(shù)據(jù)庫(kù)中的模式有了新的認(rèn)識(shí),理解了三模式兩映像的重要性。整個(gè)系統(tǒng)設(shè)計(jì)使我對(duì)數(shù)據(jù)庫(kù)和軟件工程有了新的認(rèn)識(shí),特別是對(duì)數(shù)據(jù)流圖的概念的理解,對(duì)數(shù)據(jù)庫(kù)的一些基本概念有了進(jìn)一步的理解,也對(duì)數(shù)據(jù)庫(kù)一些容易混淆的概念有了清晰的認(rèn)識(shí)。特別是對(duì)SQL語(yǔ)句的使用更加熟練,對(duì)SQL2000的操作更加的熟悉。 除了對(duì)知識(shí)的學(xué)習(xí)外,也磨練了自己的意志,發(fā)現(xiàn)自己的許多不足,寫文檔是自己的一個(gè)弱點(diǎn),以后會(huì)多練習(xí)加以提高。4 存在問(wèn)題與建議問(wèn)題本次數(shù)據(jù)庫(kù)設(shè)計(jì)基本完成,雖然在設(shè)計(jì)上可能有一些缺陷,但整個(gè)系統(tǒng)全部由自己設(shè)計(jì),感覺(jué)很有成就感。在實(shí)習(xí)中也存在許多問(wèn)題,對(duì)需求分析不明確,特別是對(duì)數(shù)據(jù)流圖的含義沒(méi)有理解,給設(shè)計(jì)帶來(lái)了很多困難,可能現(xiàn)在的數(shù)據(jù)流圖還存在問(wèn)題。在系統(tǒng)的功能方面,由于有許多是由系統(tǒng)完成的,但對(duì)觸發(fā)器的使用還不是很熟,有很多功能沒(méi)有實(shí)現(xiàn),還需要修改和改進(jìn)。建議 建議以后實(shí)習(xí)上機(jī)的時(shí)間少一點(diǎn),先在紙上寫好需求分析文檔,并在課堂上多一點(diǎn)的討論時(shí)間,再進(jìn)機(jī)房實(shí)習(xí),我想這樣可能好一點(diǎn)。附錄1數(shù)據(jù)字典回帖表:1.1字段名稱類型含義H_idsmallInt回帖的id號(hào),用于唯一標(biāo)識(shí)回帖的信息F_idSmallint所回帖父帖子的id號(hào)H_contentvarChar回帖內(nèi)容H_nameVarChar回帖人的名稱H_timeDatetime回帖時(shí)間H-_stepInt回帖等級(jí),-1表示管理員可以刪除此帖用戶表:1.2字段名稱類型含義NameVarchar用戶登錄的名字,不能有相同的用戶名PasswordVarchar用戶密碼,登錄進(jìn)行身份驗(yàn)證EmailvarcharChar用戶的聯(lián)系方式Stepsmallint用戶的等級(jí),-1表示管理員可以刪除此用戶,其它用于標(biāo)識(shí)用戶的等級(jí)S_countsmallInt發(fā)帖次數(shù),用于計(jì)算用戶的等級(jí)R_countsmallint回帖次數(shù),用于計(jì)算用戶的等級(jí)J_countsmallint發(fā)精華帖的數(shù)量,用于計(jì)算用戶的等級(jí)版面表:1.3字段名稱類型含義Bm_idvarChar版面id號(hào),用于和其他版面區(qū)別Bm_namevarChar版面的名稱Bz_namevarChar版主Bm_thcountsamllInt版面主題數(shù)版主表:1.4字段名稱類型含義Bz_namevarChar版主名稱Bz_parsswordvarChar版主密碼Bz_emailvarChar版主的郵箱帖子表:1.5字段名稱類型含義IdsmallInt發(fā)帖的id號(hào)ThemevarChar發(fā)帖的主題ContentvarChar發(fā)帖的內(nèi)容NamevarChar發(fā)帖的用戶StepsmallInt帖子等級(jí),當(dāng)為-1時(shí)可刪除,為1時(shí)為精華帖,為0時(shí)需要置頂,其它為正常CountsmallInt帖子被訪問(wèn)的次數(shù)管理員表:1.6字段名稱類型含義Ad_namevarChar管理員名稱Ad_parsswordvarChar管理員密碼Ad_emailvarChar管理員的郵箱日志 表:1.7字段名稱類型含義L_nameVarchar當(dāng)日在線用戶注冊(cè)后都記錄到日志里,用于跟蹤用戶L_timeChar記錄登錄時(shí)間2存儲(chǔ)過(guò)程:create procedure ChangeMyInformationname varchar(20),password varchar(20),newname varchar(20),newpassword varchar(20),newemail varchar(20)asupdate memberset u_name=newname,u_password=newpassword,u_email=newemailwhere u_name=name and u_password=passwordcreate procedure DengLu username varchar(20),userpassword varchar(20)asinsert into Rizhi(l_name)select u_namefrom memberwhere u_name=username and u_password=userpasswordcreate procedure LookBanzhuasselect * from banzhucreate procedure LookBmianasselect * from banmiancreate procedure MinsterReplyname varchar(20),step smallintasupdate replyset r_step=stepwhere l_name=namecreate procedure MinsterTopicname varchar(20),step smallintasupdate topicset t_step=stepwhere l_name=namecreate procedure MinsterUserusername varchar(20),state char(4)asupdate memberset u_state=statewhere u_name=usernamecreate procedure Minsterbanmianname varchar(20),state varchar(6)asupdate banmianset bm_state=statewhere bm_name=namecreate procedure Minsterbanzhuname varchar(20),state varchar(6)asupdate banzhuset bzh_state=statewhere bzh_name=namecreate procedure MyInformationMyname char(20)asselect * from memberwhere u_name=Mynamecreate procedure MythemeMyname varchar(20)asselect t_theme from topicwhere l_name=Mynamecreate procedure OnlineUsernowtime datetimeasselect l_name from rizhiwhere l_time=nowtimecreate procedure Reply_Contentasselect *from replycreate procedure Themeasselect t_theme from topiccreate procedure Theme_Contentcontent varchar(1000) outputasselect t_content from topiccreate procedure Zhuceusername varchar(20),userpassword varchar(20),useremail varchar(20)asinsert into membervalues (username,userpassword,useremail,3,0,0,ture)create procedure jinghuatieasselect t_themefrom topicwhere t_step=1create procedure postReplyr_id smallint,t_id smallint,content varchar(1000),name varchar(20)asinsert into reply values(r_id,t_id,name,content,xitongshji,0)create procedure postTopicTheme varchar(400),content varchar(1000),name varchar(20),banmian smallintasinsert into topic values(20,banmian,Theme,content,0,0,jacshan,2005-12-25,name)create procedure updatareplyasdeletefrom replywhere r_step=-1create procedure updatatopicasdelete from topicwhere t_step=-1create procedure updateusersasdelete from memberwhere u_state=falsecreate procedure userInformationasselect * from member3基本表:21日志表CREATE TABLE dbo.Rizhi (l_name varchar (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,l_time datetime NULL ) ON PRIMARYGO22版面表CREATE TABLE dbo.banmian (bm_id smallint NOT NULL ,bm_name varchar (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,bzh_name varchar (20) COLLATE Chinese_PRC_CI_AS NULL ,bm_themecount smallint NULL ,bm_state varchar (6) COLLATE Chinese_PRC_CI_AS NOT NULL ) ON PRIMARYGO23版主表CREATE TABLE dbo.banzhu (bzh_name varchar (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,bzh_password varchar (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,bzh_email varchar (20) COLLATE Chinese_PRC_CI_AS NULL ,bzh_state varchar (50) COLLATE Chinese_PRC_CI_AS NULL ) ON PRIMARYGO24瀏覽表CREATE TABLE dbo.browsing (l_id smallint NOT NULL ,bm_id smallint NOT NULL ,u_name varchar (20) COLLATE Chinese_PRC_CI_AS NULL ,bm_count smallint NULL ) ON PRIMARYGO25用戶表CREATE TABLE dbo.member (u_name varchar (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,u_password varchar (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,u_email varchar (50) COLLATE Chinese_PRC_CI_AS NULL ,u_step smallint NULL ,u_post smallint NULL ,u_return smallint NULL ,u_state char (4) COLLATE Chinese_PRC_CI_AS NULL ) ON PRIMARYGO26版面表CREATE TABLE dbo.mini_banmian (mb_id smallint NOT NULL ,m_name varchar (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,bm_id smallint NOT NULL ,dowhat varchar (20) COLLATE Chinese_PRC_CI_AS NULL ) ON PRIMARYGO27管理帖子表CREATE TABLE dbo.mini_topic (mt_id smallint NOT NULL ,bzh_name varchar (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,t_id smallint NOT NULL ,dowhat varchar (20) COLLATE Chinese_PRC_CI_AS NULL ) ON PRIMARYGO28管理用戶表CREATE TABLE dbo.mini_user (mu_id smallint NOT NULL ,m_name varchar (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,u_name varchar (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,dowhat varchar (20) COLLATE Chinese_PRC_CI_AS NULL ) ON PRIMARYGO29管理員表CREATE TABLE dbo.minister (m_name varchar (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,m_password varchar (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,m_email varchar (20) COLLATE Chinese_PRC_CI_AS NULL ) ON PRIMARYGO210回復(fù)表CREATE TABLE dbo.reply (r_id smallint NOT NULL ,t_id smallint NOT NULL ,l_name varchar (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,r_content varchar (1000) COLLATE Chinese_PRC_CI_AS NOT NULL ,r_time char (10) COLLATE Chinese_PRC_CI_AS NULL ,r_step smallint NULL ) ON PRIMARYGO211帖子表CREATE TABLE dbo.topic (t_id smallint NOT NULL ,bm_id smallint NOT NULL ,t_theme varchar (400) COLLATE Chinese_PRC_CI_AS NOT NULL ,t_content varchar (1000) COLLATE Chinese_PRC_CI_AS NOT NULL ,t_step smallint NULL ,t_count smallint NULL ,t_bmname varchar (20) COLLATE Chinese_PRC_CI_AS NULL ,t_posttime char (10) COLLATE Chinese_PRC_CI_AS NULL ,l_name varchar (20) COLLATE Chinese_PRC_CI_AS NOT NULL ) ON PRIMARYGO4視圖create view HuiMingDan(username)as select u_namefrom memberwhere u_state=falsecreate view J2EETheme(theme,f_time)as select t_theme,t_posttimefrom topicwhere bm_id=1create view J2MeTheme(theme,f_time)as select t_theme,t_posttimefrom topicwhere bm_id=3create view J2SETheme(theme,f_time)as select t_theme,t_posttimefrom topicwhere bm_id=2create view TomcatTheme(theme,f_time)as select t_theme,t_posttimefrom topicwhere bm_id=45參考資料數(shù)據(jù)庫(kù)系統(tǒng)概論 (第三版) 薩師煊 王珊 高等教育出版社27