公務(wù)員期刊網(wǎng) 論文中心 正文

淺析數(shù)據(jù)庫設(shè)計(jì)實(shí)踐

前言:想要寫出一篇引人入勝的文章?我們特意為您整理了淺析數(shù)據(jù)庫設(shè)計(jì)實(shí)踐范文,希望能給你帶來靈感和參考,敬請閱讀。

淺析數(shù)據(jù)庫設(shè)計(jì)實(shí)踐

本文作者:仇學(xué)敏 單位:貴州廣播電視大學(xué)

1數(shù)據(jù)庫設(shè)計(jì)概述

在數(shù)據(jù)庫應(yīng)用系統(tǒng)中,主要面對的核心問題就是設(shè)計(jì)出一個(gè)能滿足用戶需求,性能良好的數(shù)據(jù)庫,這就是數(shù)據(jù)庫設(shè)計(jì)。軟件開發(fā)的數(shù)據(jù)庫設(shè)計(jì)主要分為四個(gè)階段:需求分析、概念設(shè)計(jì)、邏輯設(shè)計(jì)和物理設(shè)計(jì)。而目前的軟件開發(fā)過程中,一般采用生命周期法,將數(shù)據(jù)庫分解為目標(biāo)獨(dú)立的若干階段:需求分析、概念設(shè)計(jì)、邏輯設(shè)計(jì)、物理設(shè)計(jì)、編碼階段、測試階段、運(yùn)行階段和進(jìn)一步修改階段。關(guān)于數(shù)據(jù)庫設(shè)計(jì)理念,主要是為了分析數(shù)據(jù)間內(nèi)在語義關(guān)聯(lián),在此基礎(chǔ)上建立一個(gè)數(shù)據(jù)的抽象模型。設(shè)計(jì)者根據(jù)實(shí)際情況,對某些共同特性和行為的對象可以抽象的作為一個(gè)實(shí)體。所以數(shù)據(jù)庫是由實(shí)體和屬性組成的,實(shí)體是通過主鍵表示,屬性是通過外鍵表示。在進(jìn)行設(shè)計(jì)時(shí),實(shí)體與屬性是相對而言的,同一事物在某一種環(huán)境中作為屬性,在另一種環(huán)境中,就必須作為實(shí)體。如圖1所示。

2軟件開發(fā)中數(shù)據(jù)庫設(shè)計(jì)的重要性

數(shù)據(jù)庫作為重要的數(shù)據(jù)處理技術(shù),大多數(shù)的軟件開發(fā)都必須運(yùn)用到數(shù)據(jù)庫技術(shù),數(shù)據(jù)庫管理系統(tǒng)就是軟件開發(fā)的重要成果。它是一種系統(tǒng)軟件,分組數(shù)據(jù)庫中的數(shù)據(jù)組織、操縱、維護(hù)、控制及保護(hù)和數(shù)據(jù)服務(wù)等功能,特別是它可以定義視圖和進(jìn)行強(qiáng)大的數(shù)值計(jì)算,能夠很好的控制數(shù)據(jù)庫的安全性、完整性以及對數(shù)據(jù)庫的故障進(jìn)行校正、修復(fù)和監(jiān)控功能。所以它被應(yīng)用到世界各個(gè)領(lǐng)域的機(jī)械、醫(yī)療、教育等領(lǐng)域中。而且在開發(fā)軟件時(shí),經(jīng)常要對很多數(shù)據(jù)線圖和表格進(jìn)行查找,簡單的還可以進(jìn)行人工查找,如果遇到復(fù)雜的數(shù)據(jù)查找,則會(huì)對設(shè)計(jì)人員造成許多的不便,也很容易出現(xiàn)錯(cuò)誤,影響軟件產(chǎn)品的質(zhì)量。而如果運(yùn)用數(shù)據(jù)庫管理編程,則可以存儲(chǔ)許多的數(shù)據(jù),當(dāng)需要時(shí),數(shù)據(jù)庫管理系統(tǒng)則會(huì)為用戶使用數(shù)據(jù)中的數(shù)據(jù)提供方便的查詢、插入、修改以及刪除數(shù)據(jù)的功能。

3軟件開發(fā)中數(shù)據(jù)庫設(shè)計(jì)應(yīng)遵循的原則

1)一事一地。建表需描述兩個(gè)實(shí)體之間的聯(lián)系,避免出現(xiàn)大、雜的設(shè)計(jì)。如單個(gè)主題信息需獨(dú)立保存、分離,通過在表中分散不同的信息,使數(shù)據(jù)的維護(hù)、組織工作簡單化。同時(shí),提高了應(yīng)用程序的性能。2)避免出現(xiàn)重復(fù)的字段。應(yīng)確保表中能切實(shí)放映與其他表的聯(lián)系,以及外部關(guān)鍵字。另外,要注意避免出現(xiàn)重復(fù)的字段,以減小數(shù)據(jù)冗余,防止刪除、插入、更新等操作時(shí),導(dǎo)致數(shù)據(jù)不一致。3)規(guī)范化的命名。對于不同的數(shù)據(jù)庫產(chǎn)品的命名的要求也就不同,設(shè)計(jì)者在對各對象進(jìn)行命名操作時(shí),利用大小寫字母進(jìn)行標(biāo)識(shí),對于編寫后臺(tái)程序代碼也要如此,命名長度最好是控制在30字符以下。4)除了個(gè)別要求外,禁用游標(biāo)。如果對大的數(shù)據(jù)集合使用游標(biāo),很容易使得程序出現(xiàn)“漫長等待”或“死機(jī)”的現(xiàn)象。如果要使用游標(biāo),可以建立一個(gè)臨時(shí)的表,在表中輸入所需要的數(shù)據(jù),然后對臨時(shí)表進(jìn)行游標(biāo)操作,這在很大程度能夠提高游標(biāo)的性能。5)對龐大的表使用索引。索引是對數(shù)據(jù)庫表中一列或多列的值進(jìn)行排序的一種結(jié)構(gòu),使用索引可快速訪問數(shù)據(jù)庫表中的特定信息。索引分為聚簇索引和非聚簇索引兩種,聚簇索引是按照數(shù)據(jù)存放的物理位置為順序的,而非聚簇索引就不一樣了;聚簇索引能提高多行檢索的速度,而非聚簇索引對于單行的檢索很快。6)事務(wù)的使用。指作為單個(gè)邏輯工作單元執(zhí)行的一系列操作,它可以為非事物性單元單元內(nèi)之外的所有操作的順利完成提供保障,不斷的更新面向數(shù)據(jù)的資源。7)調(diào)整數(shù)據(jù)庫的性能。許多設(shè)計(jì)員會(huì)對數(shù)據(jù)庫設(shè)計(jì)采用以下兩種方法:其一,邏輯設(shè)計(jì)數(shù)據(jù)庫。調(diào)整性能以調(diào)整關(guān)系、減少連接運(yùn)算,保持每個(gè)關(guān)系數(shù)量在合理的水平,從而使存取效率提高。時(shí)刻通過快照固定,以使查詢速度提高;其二,物理設(shè)計(jì)數(shù)據(jù)庫。主要調(diào)整內(nèi)部物理結(jié)構(gòu),合理選取存取的路徑,以增快訪問速度,提高存儲(chǔ)空間的利用率。8)合理的選擇數(shù)據(jù)類型。在實(shí)際的設(shè)計(jì)中,必須根據(jù)軟件開發(fā)的產(chǎn)品的規(guī)則和要求對數(shù)據(jù)類型進(jìn)行選擇,從而提高數(shù)據(jù)庫的性能。

4軟件開發(fā)中的數(shù)據(jù)庫設(shè)計(jì)的理論分析

1)數(shù)據(jù)管理系統(tǒng)可在軟件開發(fā)系統(tǒng)中運(yùn)行。軟件開發(fā)系統(tǒng)主要采用VisualC++系統(tǒng),可直接運(yùn)行SQL語言。SQL語言是一種可程序設(shè)計(jì)、數(shù)據(jù)庫和結(jié)構(gòu)化查詢的語言,用于數(shù)據(jù)的查詢、存取機(jī)更新。同時(shí),可作為腳本文件擴(kuò)展名。開發(fā)應(yīng)用程序采用VisualC++,不僅進(jìn)行數(shù)據(jù)庫訪問,還可作為開發(fā)前段的工具。VisualC++系統(tǒng)的程序開發(fā),能使遠(yuǎn)程訪問的復(fù)雜性大大降低,訪問效率大大提高。2)數(shù)據(jù)庫在軟件開發(fā)中的設(shè)計(jì),對于數(shù)據(jù)模型的選擇應(yīng)慎重。數(shù)據(jù)庫中的數(shù)據(jù)模型可以將復(fù)雜的現(xiàn)實(shí)世界要求反映到計(jì)算機(jī)數(shù)據(jù)庫中的物理世界,而在設(shè)計(jì)時(shí)主要注意以下四個(gè)方面的因素:其一,數(shù)據(jù)模型因素。不同軟件產(chǎn)品的應(yīng)用需要不同,所以應(yīng)該根據(jù)實(shí)際的情況來選擇數(shù)據(jù)模型,大多數(shù)設(shè)計(jì)者一般都會(huì)采用關(guān)系模型,因?yàn)樗且环N非過程性的模型,采用二維表來表示,二維表是由表框架和表的元組組成,當(dāng)用戶進(jìn)行查詢信息時(shí),不必對實(shí)際的物理存儲(chǔ)路徑進(jìn)行考慮,就能很快、方便獲得準(zhǔn)確的結(jié)果。在大型的數(shù)據(jù)庫管理系統(tǒng)中,必須優(yōu)化查詢、提高關(guān)系模型的查詢效率;其二,數(shù)據(jù)庫結(jié)構(gòu)因素。數(shù)據(jù)模型中的數(shù)據(jù)結(jié)構(gòu)主要的目的是對數(shù)據(jù)的類型、性質(zhì)、內(nèi)容和數(shù)據(jù)間的聯(lián)系進(jìn)行描述,它是數(shù)據(jù)模型的基礎(chǔ),不同是數(shù)據(jù)結(jié)構(gòu)操作與約束的也建立在數(shù)據(jù)結(jié)構(gòu)的基礎(chǔ)上,因此必須根據(jù)具體數(shù)據(jù)結(jié)構(gòu)的實(shí)際情況分類數(shù)據(jù)模型;其三,數(shù)據(jù)約束因素。它主要是對數(shù)據(jù)結(jié)構(gòu)內(nèi)數(shù)據(jù)間的語法、語義聯(lián)系進(jìn)行描述,它們之間是制約和依存的關(guān)系,所以在具體設(shè)計(jì)中,應(yīng)該根據(jù)實(shí)踐情況和數(shù)據(jù)動(dòng)態(tài)變化的規(guī)則,來保證適當(dāng)?shù)恼_、有效與相容;其四,數(shù)據(jù)操作因素。主要是對相應(yīng)數(shù)據(jù)結(jié)構(gòu)上的操作類型、方式進(jìn)行描述,所以在對數(shù)據(jù)庫進(jìn)行操作時(shí),應(yīng)該整體的處理圖形,根據(jù)實(shí)際情況的要求,使接口程序變得簡單、靈活,從而使指針占有的空間減小。

5軟件開發(fā)中的數(shù)據(jù)庫設(shè)計(jì)的實(shí)踐分析

軟件開發(fā)涉及了工業(yè)、醫(yī)療、教育等各個(gè)領(lǐng)域,筆者身為教師,也曾經(jīng)涉及過在線測試軟件的開發(fā)設(shè)計(jì),下面就以在線測試軟件開發(fā)為依托,對其數(shù)據(jù)庫設(shè)計(jì)進(jìn)行分析:1)對系統(tǒng)的總體設(shè)計(jì)應(yīng)引以重視。在對軟件進(jìn)行編制時(shí),系統(tǒng)的總體設(shè)計(jì)與軟件產(chǎn)品項(xiàng)目能否順利開展以及是否符合軟件開發(fā)預(yù)期的要求有著直接的關(guān)聯(lián),所以在對在線測試系統(tǒng)進(jìn)行開發(fā)時(shí),應(yīng)該根據(jù)常規(guī)軟件的開發(fā)流程來進(jìn)行。2)描述從屬關(guān)系。分析在線測試中教師組卷、學(xué)生測試的信息,例如對學(xué)科試卷中分為單選題、多選題、填空題、判斷題,對這些對象進(jìn)行系統(tǒng)數(shù)據(jù)庫的組織,從而使得測試題目和學(xué)科試卷之間的建立從屬的關(guān)系,同時(shí),也使得各學(xué)科試卷之間建立了復(fù)雜的從屬關(guān)系。所以,建立從屬關(guān)系主要是考慮空間從屬關(guān)系和測試的時(shí)間順序。3)合理的實(shí)現(xiàn)文本框的窗體視圖。主要是利用以單文檔的方式來顯示表中的數(shù)據(jù),它即具有單獨(dú)使用的文檔窗體視圖風(fēng)格,而且當(dāng)輸入監(jiān)測點(diǎn)數(shù)據(jù)時(shí),可以很好看到該監(jiān)測點(diǎn)的屬性窗口。同時(shí),該軟件具有容錯(cuò)功能,即當(dāng)用戶輸入或操作錯(cuò)誤時(shí),數(shù)據(jù)庫會(huì)自動(dòng)的提示或取消操作。

6數(shù)據(jù)庫設(shè)計(jì)過程和實(shí)例分析

上面介紹了數(shù)據(jù)庫設(shè)計(jì)的原則,以“教學(xué)管理”數(shù)據(jù)庫為例,來分析數(shù)據(jù)庫設(shè)計(jì)的過程。1)需求分析階段。對用戶的需要進(jìn)行分析主要包括三個(gè)方面的內(nèi)容:其一,信息需求。即用戶要從數(shù)據(jù)庫獲得的信息內(nèi)容。信息需求定義了數(shù)據(jù)庫應(yīng)用系統(tǒng)應(yīng)該提供的所有信息,注意描述系統(tǒng)中數(shù)據(jù)的數(shù)據(jù)類型;其二,處理要求,即滿足數(shù)據(jù)完成的處理功能、方式的需求,然后定義系統(tǒng)的數(shù)據(jù)處理操作。在操作執(zhí)行時(shí),應(yīng)該考慮場合、操作、頻率等因素對數(shù)據(jù)的影響;其三,安全性、完整性的要求。在對信息、處理需求進(jìn)行定義的同時(shí),要保證安全性和完整性的約束。在分析過程中,主要是跟數(shù)據(jù)庫的使用人員進(jìn)行交流,細(xì)心的了解現(xiàn)行業(yè)務(wù)處理流程,熟悉全部數(shù)據(jù)資料。例如可以對學(xué)校教學(xué)管理工作進(jìn)行了解和分析,可以確定教學(xué)管理數(shù)據(jù)庫建立的目的是為了解決教學(xué)信息的組織和管理問題,主要是包括教師、學(xué)生信息管理和選課情況管理。2)概念設(shè)計(jì)階段。概念設(shè)計(jì)的目的是分析數(shù)據(jù)間內(nèi)在語義關(guān)聯(lián),在此基礎(chǔ)上監(jiān)理一個(gè)數(shù)據(jù)的抽象模型,主要是有兩種方法:其一,集中式模式設(shè)計(jì)法。它根據(jù)需求由一個(gè)統(tǒng)一機(jī)構(gòu)或人員設(shè)計(jì)一個(gè)綜合的全局模式,而且設(shè)計(jì)比較簡單,非常適用于小型或不復(fù)雜的單位和部門;其二,視圖集成設(shè)計(jì)法。主要是對一個(gè)單位進(jìn)行分解,然后局部的設(shè)計(jì)分解后的每個(gè)部分,建立各個(gè)部分的視圖,以各視圖為基礎(chǔ)進(jìn)行集成。例如,在教學(xué)管理中,以師生實(shí)體為聯(lián)系模型,明確學(xué)校各個(gè)部門的組成實(shí)體和屬性,然后描述學(xué)校各個(gè)年級的學(xué)籍管理和課程管理的局面環(huán)境,再將各個(gè)年級教學(xué)管理的環(huán)境進(jìn)行集合,形成一個(gè)全局的視圖,從而使得數(shù)據(jù)庫能真實(shí)的反映學(xué)校的教學(xué)的管理。3)邏輯設(shè)計(jì)階段。它主要是對外模式關(guān)系視圖進(jìn)行設(shè)計(jì),主要表現(xiàn)在三個(gè)方面:其一,提供數(shù)據(jù)邏輯的獨(dú)立性。使應(yīng)用程序不受邏輯模式變化的影響,關(guān)系視圖則讓邏輯模式與應(yīng)用程序之間有隔離墻作用;其二,適應(yīng)用戶對數(shù)據(jù)的不同需求。每個(gè)數(shù)據(jù)庫有一個(gè)非常龐大的結(jié)構(gòu),它用關(guān)系視圖屏蔽用戶所不需要的模式,而僅將用戶感興趣的部分呈現(xiàn)出來;其三,有一定的保密功能。例如,在教學(xué)管理數(shù)據(jù)庫,如果有許多的老師和學(xué)生共同登錄,則采用用戶密碼登錄,互不影響,只看到自己所需要的信息數(shù)據(jù)。4)物理設(shè)計(jì)階段。它主要是對數(shù)據(jù)庫內(nèi)部物理結(jié)構(gòu)做調(diào)整并選擇合理的存儲(chǔ)路徑,而且一般采用索引設(shè)計(jì)、集簇和分區(qū)設(shè)計(jì)。例如,在教學(xué)管理數(shù)據(jù)庫中,它利用物理設(shè)計(jì)能夠很好的修改其中的數(shù)據(jù)和路徑。5)驗(yàn)證設(shè)計(jì)階段。任何一個(gè)數(shù)據(jù)庫的設(shè)計(jì)和建立都必須經(jīng)過循環(huán)反復(fù)的驗(yàn)證,一旦數(shù)據(jù)庫中的數(shù)據(jù)、步驟遭到破壞和出錯(cuò),就必須及時(shí)的進(jìn)行校正恢復(fù)。在驗(yàn)證階段,也為以后的運(yùn)行和維護(hù)提供參考意見。6)軟件運(yùn)行和維護(hù)階段。這是數(shù)據(jù)庫設(shè)計(jì)的最后環(huán)節(jié),主要是在軟件開發(fā)的數(shù)據(jù)正式運(yùn)行后,對其要不斷調(diào)整和維護(hù)。

7結(jié)束語

在給定成本、進(jìn)度的前提下,如何利用數(shù)據(jù)庫設(shè)計(jì)理論開發(fā)出具有有效性、可靠性、可互操作性、可維護(hù)性等滿足用戶需求的產(chǎn)品是我們需要深思的問題。我們在軟件開發(fā)中,要不斷對數(shù)據(jù)庫設(shè)計(jì)理論進(jìn)行實(shí)踐。