摘要:作為一門應(yīng)用性很強(qiáng)的學(xué)科,數(shù)據(jù)庫(kù)技術(shù)是目前在軟件開發(fā)中應(yīng)用越來廣泛,本文對(duì)軟件開發(fā)中的數(shù)據(jù)庫(kù)設(shè)計(jì)理論與實(shí)踐進(jìn)行了簡(jiǎn)單分析。首先,簡(jiǎn)單介紹了軟件開發(fā)中的數(shù)據(jù)庫(kù)設(shè)計(jì)的重要性;其次,分析了軟件開發(fā)中的數(shù)據(jù)庫(kù)設(shè)計(jì)的理論;介紹了數(shù)據(jù)庫(kù)設(shè)計(jì)的幾個(gè)原則,并對(duì)數(shù)據(jù)庫(kù)設(shè)計(jì)步驟進(jìn)行了一定的分析。最后,結(jié)合實(shí)例,分析了軟件開發(fā)中的數(shù)據(jù)庫(kù)設(shè)計(jì)的實(shí)踐。
關(guān)鍵詞:軟件開發(fā);數(shù)據(jù)庫(kù)設(shè)計(jì);重要性;理論;實(shí)踐
中圖分類號(hào):TP文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1673-9671-(2012)042-0136-02
隨著計(jì)算機(jī)科學(xué)技術(shù)迅速發(fā)展,互聯(lián)網(wǎng)的日益普及。人們對(duì)軟件產(chǎn)品的要求日益提高,尤其軟件開發(fā)企業(yè)對(duì)軟件產(chǎn)品的要求越來越高。作為一門應(yīng)用性很強(qiáng)的學(xué)科,數(shù)據(jù)庫(kù)技術(shù)是目前在軟件開發(fā)中應(yīng)用越來廣泛,軟件開發(fā)中數(shù)據(jù)庫(kù)設(shè)計(jì)理論實(shí)踐研究也越來越受到業(yè)界人士的注重。
1軟件開發(fā)中數(shù)據(jù)庫(kù)設(shè)計(jì)的重要性
在軟件開發(fā)過程中,一般會(huì)分為五個(gè)階段,即需求分析、軟件設(shè)計(jì)、軟件編碼、軟件測(cè)試和對(duì)軟件的維護(hù)。在具體的設(shè)計(jì)階段,首要的任務(wù)就是設(shè)計(jì)出模塊的程序流程、設(shè)計(jì)出算法和數(shù)據(jù)結(jié)構(gòu),次要的任務(wù)是對(duì)數(shù)據(jù)庫(kù)進(jìn)行設(shè)計(jì)。數(shù)據(jù)庫(kù)技術(shù)作為信息處理的重要方式,在各種各樣的軟件開發(fā)中,大多數(shù)的軟件開發(fā)都要運(yùn)用數(shù)據(jù)庫(kù)技術(shù),進(jìn)行數(shù)據(jù)庫(kù)設(shè)計(jì),管理信息系統(tǒng)的開發(fā)就是典型表現(xiàn)。通常,數(shù)據(jù)庫(kù)的設(shè)計(jì)主要是指根據(jù)不同用戶的不同需求,在一定的數(shù)據(jù)庫(kù)管理系統(tǒng)的基礎(chǔ)上來實(shí)現(xiàn)通過設(shè)計(jì)出的數(shù)據(jù)庫(kù)的結(jié)構(gòu)并建立起數(shù)據(jù)庫(kù)的過程。它是建立數(shù)據(jù)庫(kù)及其應(yīng)用系統(tǒng)的一種很強(qiáng)的技術(shù),所以,數(shù)據(jù)庫(kù)設(shè)計(jì)是信息系統(tǒng)的開發(fā)和建議中的一項(xiàng)核心技術(shù)。因?yàn)閂isual C++具有強(qiáng)大的處理圖像能力與強(qiáng)大的計(jì)算數(shù)值能力,同時(shí)其具有良好的面向?qū)ο筇匦?,因此其成為全球?nèi)各種各樣的機(jī)械工程軟件系統(tǒng)的主要開發(fā)工具。同時(shí),在開發(fā)這些軟件時(shí),常常要進(jìn)行許多數(shù)據(jù)線圖與數(shù)據(jù)表格的處理查找的工作,若在每次運(yùn)行程序過程中,都是人工查找這些數(shù)據(jù),不僅使用戶有了許多麻煩,也使開發(fā)出來的軟件表現(xiàn)的相當(dāng)不專業(yè)。此時(shí)運(yùn)用數(shù)據(jù)庫(kù)編程技術(shù),能夠把許多的數(shù)據(jù)及數(shù)據(jù)表格事先存儲(chǔ)起來,當(dāng)需要使用某個(gè)數(shù)據(jù)時(shí),可以通過數(shù)據(jù)庫(kù)進(jìn)行查找,還能夠把用戶設(shè)計(jì)過程中需要的某些設(shè)計(jì)數(shù)據(jù)存儲(chǔ)起來,使后續(xù)設(shè)計(jì)過程更加方便,進(jìn)而使軟件產(chǎn)品生產(chǎn)的速度以及質(zhì)量得以提高。由此可見,在軟件開發(fā)過程中,數(shù)據(jù)庫(kù)設(shè)計(jì)是相當(dāng)重要的。
2軟件開發(fā)中的數(shù)據(jù)庫(kù)設(shè)計(jì)的理論分析
1)Visual C++系統(tǒng)能夠支持許多種DBMS(數(shù)據(jù)庫(kù)管理系統(tǒng)),很多數(shù)據(jù)庫(kù)管理系統(tǒng)都有SQL語(yǔ)言接口,同時(shí)SQL語(yǔ)言能夠在Visual C++系統(tǒng)中直接運(yùn)行。Visual C++系統(tǒng)對(duì)數(shù)據(jù)庫(kù)有了全方位的支持,能夠和Vsual Basic以及Fox Pro等許多系統(tǒng)軟件相媲美,同時(shí)在對(duì)一些特性的支持上,Visual C++甚至比這些技術(shù)更完美。在用Visual C++開發(fā)的應(yīng)用程序時(shí),一方面應(yīng)該訪問數(shù)據(jù)庫(kù);另一方面能夠把Visual C++作為數(shù)據(jù)庫(kù)應(yīng)用程序的前端開發(fā)工具運(yùn)用。Visual C++中應(yīng)用最廣泛的就是ADO技術(shù)和ODBC技術(shù),ADO是Microsoft公司推出的產(chǎn)品,以保證在Internet網(wǎng)絡(luò)上數(shù)據(jù)庫(kù)的發(fā)布,能夠使遠(yuǎn)程數(shù)據(jù)訪問復(fù)雜性降低,可以使數(shù)據(jù)庫(kù)得到高效訪問。在ADO編程上,其更方便,更簡(jiǎn)單,數(shù)據(jù)源和前端之間的網(wǎng)絡(luò)通信最小。同時(shí)ADO能夠進(jìn)行高性能以及一致的數(shù)據(jù)訪問,可以滿足各種各樣的軟件開發(fā)要求。
2)在進(jìn)行數(shù)據(jù)庫(kù)與數(shù)據(jù)庫(kù)管理系統(tǒng)的設(shè)計(jì)時(shí),必須重點(diǎn)考慮數(shù)據(jù)模型。當(dāng)進(jìn)行數(shù)據(jù)模型的選擇時(shí),以下幾個(gè)因素至關(guān)重要:數(shù)據(jù)模型因素,根據(jù)不同的應(yīng)用需要,應(yīng)該選擇相關(guān)的數(shù)據(jù)模型,在一般情況下,應(yīng)用者往往希望采用關(guān)系模型,由于該模型是非過程的,當(dāng)用戶給出需要查詢的條件時(shí),無(wú)須考慮實(shí)際的物理存儲(chǔ)路徑等因素,就能夠得出正確結(jié)果,使用起來極其方便,但是在大型數(shù)據(jù)庫(kù)管理系統(tǒng)中,應(yīng)該優(yōu)化查詢,使關(guān)系模型中查詢的效率得到提高,比如在公路設(shè)計(jì)中,分析管理內(nèi)容,發(fā)現(xiàn)其實(shí)體間的關(guān)系不復(fù)雜,能夠采用擴(kuò)展關(guān)系模型(關(guān)系表加指針);數(shù)據(jù)庫(kù)結(jié)構(gòu)因素,根據(jù)實(shí)際情況的分析設(shè)計(jì),能夠確定具體的數(shù)據(jù)庫(kù)系統(tǒng)結(jié)構(gòu);管理對(duì)象因素,根據(jù)實(shí)踐情況,要把數(shù)據(jù)庫(kù)中的實(shí)體進(jìn)行分類,同時(shí)保證每個(gè)實(shí)體都有非幾何數(shù)據(jù)及幾何數(shù)據(jù);數(shù)據(jù)操作因素,當(dāng)進(jìn)行數(shù)據(jù)庫(kù)操作時(shí),按照實(shí)踐情況的要求,操作并存取某個(gè)圖形,把圖形作為整體進(jìn)行處理,簡(jiǎn)單的接口程序使應(yīng)用程序更具有靈活性,運(yùn)用整體圖形,能夠減小指針占有的存儲(chǔ)空間。
3數(shù)據(jù)庫(kù)設(shè)計(jì)的幾個(gè)原則
3.1命名的規(guī)范化
我們知道,不一樣的數(shù)據(jù)庫(kù)產(chǎn)品對(duì)于對(duì)象的命名是有不同要求的。在數(shù)據(jù)庫(kù)設(shè)計(jì)中,對(duì)于各對(duì)象的命名以及在編寫后臺(tái)程序的代碼上都應(yīng)采用大小寫的字母形式,命名長(zhǎng)度不超過30個(gè)
字符。
3.2慎用游標(biāo)
對(duì)大表或者多表定義的游標(biāo),即大的數(shù)據(jù)集合而言,程序中使用游標(biāo)逐行遍歷數(shù)據(jù)線,容易導(dǎo)致進(jìn)入了漫長(zhǎng)的等待或掛起狀態(tài),使用游標(biāo),我們可以創(chuàng)建一個(gè)臨時(shí)表,那些符合條件的滿足的數(shù)據(jù) 轉(zhuǎn)換成臨時(shí)表中的行,臨時(shí)表定義游標(biāo)操作,這樣做可以大大提高游標(biāo)的性能。
3.3索引的使用
顯然,索引一般是用于快速訪問表中的數(shù)據(jù)。通常,大型的數(shù)據(jù)庫(kù)會(huì)有兩種索引,一種是簇索引,一種是非簇索引。無(wú)論是添加哪一種索引,都可以使按索引列查詢的速度大大提高,雖然在速度上有所提高。但是在插入、更新、刪除等操作上性能會(huì)有所降低,特別是在填充因子比較大時(shí),降低效果更明顯。因此,對(duì)索引較多的表進(jìn)行頻繁的插入、更新、刪除操作時(shí),在對(duì)于表和索引的建立上,應(yīng)該設(shè)置較小的填充因子。這樣才能方便在各項(xiàng)數(shù)據(jù)頁(yè)中留下足夠的自由空間,以減少頁(yè)分割或重新組織的工作量,才能夠有效提高性能。
3.4數(shù)據(jù)的完整性和一致性
為了有效保證數(shù)據(jù)庫(kù)的完整性和一致性,通常設(shè)計(jì)人員會(huì)設(shè)計(jì)比較多的表間關(guān)聯(lián),以最大程度地降低數(shù)據(jù)的冗余。由于表間的關(guān)聯(lián)是一種強(qiáng)制性的措施,所以建立表后,對(duì)于父表和子表的插入、更新、刪除等操作都會(huì)占用系統(tǒng)整體的開銷。還有,盡量不要選用Identify屬性的字段作為主鍵與子表關(guān)聯(lián)。另外,為了能夠很好地提高系統(tǒng)的響應(yīng)時(shí)間,選擇合理的數(shù)據(jù)冗余也是很有必要的。
3.5事務(wù)的使用
事務(wù)一般是要一次性完成的操作。這些操作都是單個(gè)的操作,但數(shù)據(jù)庫(kù)系統(tǒng)可以保證事務(wù)這一組操作全部完成或者一點(diǎn)都不做。大型數(shù)據(jù)庫(kù)的這一優(yōu)越特性,使數(shù)據(jù)的完整性在很大程度上得到了保證。
3.6數(shù)據(jù)庫(kù)性能的調(diào)整
在網(wǎng)絡(luò)設(shè)計(jì)和計(jì)算機(jī)硬件配置確定的情況下,影響應(yīng)用系統(tǒng)性能的因素主要是客戶端程序設(shè)計(jì)和數(shù)據(jù)庫(kù)性能。大部分的數(shù)據(jù)庫(kù)設(shè)計(jì)員都會(huì)采用兩步法開展數(shù)據(jù)庫(kù)設(shè)計(jì)。具體的設(shè)計(jì)步驟是:首先是邏輯結(jié)構(gòu)設(shè)計(jì),其次進(jìn)行物理結(jié)構(gòu)設(shè)計(jì)。邏輯結(jié)構(gòu)設(shè)計(jì),有效地遏制冗余數(shù)據(jù),可以大大提高數(shù)據(jù)吞吐率,從而確保數(shù)據(jù)的完整性,清楚地表達(dá)數(shù)據(jù)元素之間的關(guān)系。對(duì)于一個(gè)關(guān)系查詢表,其性能可能會(huì)降低,但也提高了客戶端編程的難度。因此,需要在物理結(jié)構(gòu)設(shè)計(jì)中妥協(xié),按業(yè)務(wù)規(guī)則,以確定關(guān)聯(lián)表的數(shù)據(jù)大小,數(shù)據(jù)訪問頻率,這個(gè)數(shù)據(jù)表上頻繁關(guān)聯(lián)查詢應(yīng)適當(dāng)提高數(shù)據(jù)冗余的設(shè)計(jì)。
3.7數(shù)據(jù)類型的設(shè)計(jì)
數(shù)據(jù)類型的合理選設(shè)計(jì)會(huì)在很大程度上影響到數(shù)據(jù)庫(kù)的性能和操作。因此,要根據(jù)數(shù)據(jù)庫(kù)具體的要求與規(guī)則設(shè)計(jì)合適并合理的數(shù)據(jù)類型。
4軟件開發(fā)中的數(shù)據(jù)庫(kù)設(shè)計(jì)的實(shí)踐分析
以下以圖書管理軟件開發(fā)中的數(shù)據(jù)庫(kù)設(shè)計(jì)為例進(jìn)行了分析。
1)應(yīng)該重視系統(tǒng)的總體設(shè)計(jì),在進(jìn)行軟件編制時(shí),系統(tǒng)的總體設(shè)計(jì)相當(dāng)重要,不僅與軟件項(xiàng)目順利開展的進(jìn)度有關(guān),還與是否可以達(dá)到預(yù)期的項(xiàng)目開發(fā)的要求有關(guān),下面我以圖書管理軟件開發(fā)為例簡(jiǎn)單進(jìn)行說明。
2)首先我們對(duì)圖書管理軟件所涉及的數(shù)據(jù)類型和結(jié)構(gòu)進(jìn)行詳細(xì)的分析,按照上述的設(shè)計(jì)思想,共設(shè)計(jì)了如下的多種表,例如:讀者表,書目表,館藏表,流通表等。然后創(chuàng)建視圖和存儲(chǔ)過程。
①讀者表:JNO(借書證號(hào)),NAME(姓名),UNIT(單位),Readership(讀者類別)等字段,關(guān)鍵字為JNO(借書證號(hào))。
②書目表:Collection No(館藏號(hào)),ISBN,Title(題名),Author(作者),Press(出版社),Language(語(yǔ)種),Type(文獻(xiàn)類型)等字段,關(guān)鍵字為Collection No(館藏號(hào))。
③館藏表:Collection No(館藏號(hào)),Type No(分類號(hào)),Kinds of times No(種次號(hào)),Collection location(館藏位置),Unit price(單價(jià)),等字段,關(guān)鍵字為:Collection No(館藏號(hào))。
④流通表:JNO(借書證號(hào)),Collection No(館藏號(hào)),Bdate(借期),Rdaye(還期),Renew(續(xù)借),Yhdate(應(yīng)還期),Operator(操作員)等字段,關(guān)鍵字為:JNO(借書證號(hào)),Collection No(館藏號(hào))。
⑤借閱規(guī)則表:Readership(讀者類別),Book Category)圖書類別),Limited(限借冊(cè)數(shù)),Days(每期天數(shù)),Xdays(續(xù)借天數(shù)),F(xiàn)ine calculation(罰金計(jì)算)等字段。
⑥圖書類別表:Book CategoryNo(圖書類別編碼),Book Category(圖書類別)等字段。
建立索引是加快查詢速度的有效手段,數(shù)據(jù)庫(kù)的每一個(gè)表建立了主鍵,主鍵由一個(gè)或幾個(gè)字段組成,每一個(gè)表都按主鍵建立了索引,部分表為了滿足查詢和排序的需要,除建立主索引外,還建立了次索引。例如在查詢時(shí)要用到“館藏號(hào)”、“作者”、“題名”等條件來查找圖書,因此,在書目表上除了對(duì)主鍵“館藏號(hào)”建立了主索引外,也對(duì)“作者”、“書名”等建立了次索引。由此可見,這種從屬關(guān)系的建立不但對(duì)空間從屬關(guān)系進(jìn)行了考慮,而且考慮到了時(shí)間上的順序。同時(shí)在關(guān)系數(shù)據(jù)庫(kù)中,數(shù)據(jù)在各個(gè)表中保存,按照主鍵與外鍵的關(guān)系,各個(gè)表之間能夠建立關(guān)系。再對(duì)各屬性對(duì)象的數(shù)據(jù)庫(kù)表進(jìn)行設(shè)計(jì),此時(shí)可以對(duì)屬性數(shù)據(jù)進(jìn)行儲(chǔ)存,并對(duì)它們之間的從屬關(guān)系進(jìn)行描述,創(chuàng)造了進(jìn)行下一步查詢的條件。
3)合理實(shí)現(xiàn)單文檔以及多窗口視界面,在該圖書管理軟件開發(fā)中,對(duì)單文檔以及多窗口視界面結(jié)構(gòu)進(jìn)行了設(shè)計(jì),其不僅具備多文檔界面的風(fēng)格,還能夠使多個(gè)輸入的Form View同時(shí)打開,可以進(jìn)行隨時(shí)切換,使數(shù)據(jù)查看與錄入更加方便。當(dāng)用戶在輸入某圖書進(jìn)行數(shù)據(jù)查詢時(shí),該圖書的屬性窗口能夠被看到。同時(shí)圖書管理軟件必須具備強(qiáng)大的容錯(cuò)功能,當(dāng)用戶誤操作以及誤輸入時(shí),其能夠自動(dòng)提示并取消輸入。
5總結(jié)
隨著科學(xué)技術(shù)快速發(fā)展,人類對(duì)各種軟件開發(fā)的需求日益增加,軟件開發(fā)中的數(shù)據(jù)庫(kù)設(shè)計(jì)也越來越重要。顯然,使整個(gè)數(shù)據(jù)庫(kù)的設(shè)計(jì)更加的工程化、規(guī)范化和便捷化將是我們今后要不斷去爭(zhēng)取做好的。未來數(shù)據(jù)庫(kù)設(shè)計(jì)的研究方向是數(shù)據(jù)庫(kù)設(shè)計(jì)理論方面的內(nèi)容,通過完善的理論研究來建立起準(zhǔn)確的模型,在整個(gè)數(shù)據(jù)庫(kù)的設(shè)計(jì)中充分體現(xiàn)出其先進(jìn)的思路和方法,最終達(dá)到數(shù)據(jù)庫(kù)的設(shè)計(jì)更加的工程化、規(guī)范化和便捷化的目的。
參考文獻(xiàn)
[1]石紅兵,曾學(xué)貴,魏慶朝.勘測(cè)設(shè)計(jì)一體化軟件開發(fā)過程中數(shù)據(jù)庫(kù)的設(shè)計(jì)[J].公路,2000,10.
[2]何玉潔等.數(shù)據(jù)庫(kù)原理與應(yīng)用-第2版[J].機(jī)械工業(yè),2011.
[3]游曉明,劉升.數(shù)據(jù)庫(kù)系統(tǒng)原理課程教改的研究和實(shí)踐[J].教學(xué)研究,2004,5.