曹藝譯
關鍵詞:計算機軟件;數(shù)據(jù)庫設計;軟件數(shù)據(jù)庫
1數(shù)據(jù)庫設計對于軟件工程項目的重要性
數(shù)據(jù)庫是計算機軟件的核心組成部分,數(shù)據(jù)庫的設計關系到軟件功能的開發(fā)和使用。但在實際的工作中,計算機軟件工程師對數(shù)據(jù)庫設計的認知程度參差不齊。有的軟件工程師憑借以往對數(shù)據(jù)庫的設計經(jīng)驗,在設計過程中只注重對數(shù)據(jù)的功能模塊進行設計,而忽略了用戶的具體需求和軟件的宏觀架構,雖然將數(shù)據(jù)庫的功能模塊設計得很完美,但缺乏與軟件整體的適應性。這種不成熟的設計觀念對數(shù)據(jù)庫的設計工作和軟件的開發(fā)工作都造成了一定的阻礙,也在無形之中為后期數(shù)據(jù)庫的升級和維護增加了難度。這些隱患有時不會在前期的設計與使用階段暴露出來,但隨著時間的推移,往往會在后期的使用和軟件功能的擴展時期,為軟件工程師的數(shù)據(jù)工作帶來困擾。由此可見,數(shù)據(jù)庫的設計不僅要有一定的技術水平,還要有長遠的發(fā)展眼光,如此才能將數(shù)據(jù)庫設計得完整合理,應從宏觀角度考慮數(shù)據(jù)庫對軟件未來的深度影響。
總的來說,數(shù)據(jù)庫的設計者要具備一定的數(shù)據(jù)庫專業(yè)設計能力、頂層架構的系統(tǒng)性思維能力、對軟件未來發(fā)展的預判能力、對用戶需求深度分析能力,才能將數(shù)據(jù)庫設計工作做到盡善盡美。一個合理的數(shù)據(jù)庫設計方案要具備完整性、高效性、長效性的特點,理想的數(shù)據(jù)庫不僅可以為軟件功能的開發(fā)起到事半功倍的效果,提升軟件的使用計算效率,還能降低軟件未來的維護與調整成本,為軟件的升級和功能的改進提供充足的空間。因此,數(shù)據(jù)庫的設計在計算機軟件開發(fā)中顯得尤為重要[1]。
2軟件開發(fā)行業(yè)數(shù)據(jù)庫設計的常見問題
2.1設計不能滿足需求
數(shù)據(jù)庫的設計是軟件開發(fā)過程中的首要環(huán)節(jié),滿足軟件功能的數(shù)據(jù)需求是數(shù)據(jù)庫設計的基本原則。若數(shù)據(jù)庫的設計不完整、不合理、不能完全地滿足功能需求,則在軟件的應用過程中很可能會直接導致整個系統(tǒng)崩潰和癱瘓。
2.2數(shù)據(jù)庫性能比較低
很多軟件雖然能實現(xiàn)客戶所需要的功能,但在應用運行的過程中,速度極其緩慢,效率極其低下。在不考慮硬件設施影響因素的條件下,很有可能是數(shù)據(jù)庫的設計不合理、算法不科學導致的。當今社會對軟件的功能需求越來越多樣化,數(shù)據(jù)庫的結構也越來越復雜,在這種背景下,如何保證數(shù)據(jù)庫性能的高效,是工程師在設計數(shù)據(jù)庫時應該著重考慮的問題[2]。
2.3數(shù)據(jù)庫設計不完整
完整性是數(shù)據(jù)庫必須要具備的條件之一。不完整的數(shù)據(jù)庫會導致數(shù)據(jù)在“增刪改查”的過程中出現(xiàn)主鍵關聯(lián)斷裂、數(shù)據(jù)信息溢出,甚至數(shù)據(jù)錯亂或丟失等問題,造成不可挽回的嚴重后果。
2.4數(shù)據(jù)庫的擴展性較差
在滿足軟件功能基本需求的基礎上,數(shù)據(jù)庫的可擴展性也是非常重要的。有的軟件工程師在設計數(shù)據(jù)庫時過于注重功能的實現(xiàn),過度簡化數(shù)據(jù)表的結構,雖然能一時滿足軟件功能的需求,但在后續(xù)的更新和修改過程中,因缺乏二次擴展的可能性反而限制了軟件的升級[3]。
2.5數(shù)據(jù)查詢統(tǒng)計效率低
有的軟件統(tǒng)計功能較差,計算效率較低,導致這種現(xiàn)象的原因是設計者在設計數(shù)據(jù)表時,沒有考慮到為數(shù)據(jù)表設計有針對性的查詢統(tǒng)計字段。數(shù)據(jù)查詢統(tǒng)計的需求是多樣化的,設計者要充分考慮這種多樣化的可能性,并以此為依據(jù)設計數(shù)據(jù)表之間的關聯(lián)關系。
2.6數(shù)據(jù)日志信息不全
前期軟件開發(fā)中數(shù)據(jù)庫的設計工作與后期軟件應用中對數(shù)據(jù)的分析工作很可能不是同一批人負責。這就需要設計者在設計數(shù)據(jù)庫時考慮到必要的數(shù)據(jù)日志信息,對數(shù)據(jù)庫的操作和時間變化等關鍵信息進行記錄,為后期數(shù)據(jù)的分析與維護工作降低難度。
3數(shù)據(jù)庫設計的基本原則
3.1建立數(shù)據(jù)表關聯(lián)關系
數(shù)據(jù)庫是由眾多的數(shù)據(jù)表組成的,表與表之間的關聯(lián)性在很大程度上決定了數(shù)據(jù)庫架構的合理性。尤其是當今的大數(shù)據(jù)時代,海量的數(shù)據(jù)需要由海量的數(shù)據(jù)表來進行儲存,數(shù)據(jù)與數(shù)據(jù)之間以及表與表之間存在錯綜復雜的關系。軟件工程師在設計數(shù)據(jù)庫時,要結合軟件的實際需求,強化表與表之間的必要聯(lián)系,提高數(shù)據(jù)庫架構的合理性和可應用性,這在后期數(shù)據(jù)庫的設計中至關重要。對于數(shù)據(jù)量較大的數(shù)據(jù)庫,可以靈活應用映射表,將各數(shù)據(jù)表進行關聯(lián)劃分,使數(shù)據(jù)表之間的關系簡潔明了[4]。
3.2合理選擇設計方式
不同的數(shù)據(jù)庫設計方式適用于不同軟件的開發(fā),設計方式?jīng)]有優(yōu)劣之分,對于設計方式的選擇要把握適合的原則,根據(jù)軟件的具體需求,選擇科學、合理、直觀、省力的方式。
常見的設計方式有兩種,一種是視圖集成模式。它是將數(shù)據(jù)庫的設計劃分為工作單元,針對不同的單元分別進行設計,最后將設計好的工作單元以視圖的模式集成在一起,作為后期工作分析的重要依據(jù),將整個視圖集成分析后,得出整體的分析結論,最后參考分析結論完成對數(shù)據(jù)庫的設計。另一種是集中設計模式,其側重于對全局的把握。首先對客戶的需求進行整體分析,然后根據(jù)分析結果為數(shù)據(jù)庫進行全局建模,最后根據(jù)構建的數(shù)據(jù)庫模型完成數(shù)據(jù)庫的設計工作。兩種模式各有優(yōu)劣,視圖集成模式的優(yōu)點在于可以分攤設計工作量,模塊化、精細化的設計更具可操作性。其劣勢在于對宏觀的把握不足,在后期視圖整合的過程中難度較大。集中設計模式的優(yōu)點在于對軟件的整體把控度較高。但其缺點在于對于大型的軟件工程項目而言,這種方式實施起來的難度較大。軟件工程師要根據(jù)具體開發(fā)的軟件項目,選擇適合的數(shù)據(jù)庫設計模式[5]。
3.3深度分析用戶需求
計算機軟件的開發(fā)是供人使用的,隨著當今社會的不斷發(fā)展進步,人們的需求也隨之提高,軟件也開始朝多樣化的趨勢發(fā)展。而軟件的多樣性,從另一個角度反映出功能需求的多樣性,因此.數(shù)據(jù)庫的設計乃至計算機軟件的開發(fā)都要以客戶的需求為宗旨,所以對用戶需求的分析就顯得格外重要。用戶的需求不同,應用的領域不同,對數(shù)據(jù)庫的要求也不盡相同。通常來講,應用在不同領域的軟件,數(shù)據(jù)庫的設計差異也較大,如企業(yè)員工的辦公系統(tǒng)、圖書館書籍的登記系統(tǒng)、醫(yī)療機構的專業(yè)系統(tǒng)、學生戶籍的管理系統(tǒng)等。需求不同決定了數(shù)據(jù)庫的層次不同,決定了設計者要選擇的設計方式和理念也不同,如何準確把握客戶的需求,是設計者數(shù)據(jù)庫設計的重點之一[6]。
3.4數(shù)據(jù)結構與軟件功能的契合度
數(shù)據(jù)庫架構的設計與搭建,是為了對軟件各模塊的后續(xù)程序開發(fā)提供服務。因此,對于數(shù)據(jù)庫的設計不能只局限于數(shù)據(jù)庫這一部分,而是要站在全局的角度綜合考慮,為后續(xù)的功能模塊開發(fā)提供便利。在開始數(shù)據(jù)庫的設計工作之前,首先要站在需求的角度,對軟件的整體架構進行宏觀把握;其次,要對軟件每一個功能模塊的邏輯性有初步的了解;最后,根據(jù)軟件整體運行流程的分析結果,決定數(shù)據(jù)庫的設計走向,既要保障每個功能模塊平穩(wěn)運行,也要提供對軟件整體的數(shù)據(jù)支撐[7]。
3.5留取空余字段空間
數(shù)據(jù)庫的設計工作往往都不是一氣呵成的,其中存在一定的變數(shù),主要有兩個方面的原因。一方面是用戶需求的變化。無論是在軟件的開發(fā)過程中,還是在之后的應用過程中,用戶的需求往往會隨著軟件開發(fā)和應用的進程而發(fā)生變化,這就要求數(shù)據(jù)庫的設計者根據(jù)變化調整數(shù)據(jù)庫架構或升級軟件功能模塊。另一方面,面對大量的用戶需求和多樣化的操作使用,在前期的數(shù)據(jù)庫設計過程中難免會因考慮不周導致后期出現(xiàn)紕漏,這就要軟件工程師對數(shù)據(jù)庫進行維護。因此,軟件工程師在數(shù)據(jù)庫的設計階段,要留足空余字段的空間,以便今后對數(shù)據(jù)庫進行維護和對數(shù)據(jù)庫架構進行升級,與此同時,空余字段空間的留取也有利于對數(shù)據(jù)庫信息操作行為進行記錄。
3.6數(shù)據(jù)庫設計的檢驗
在數(shù)據(jù)庫設計完成之后,要對其進行反復檢驗。一方面要對數(shù)據(jù)庫的物理架構進行檢驗。物理架構的檢驗主要針對數(shù)據(jù)庫設計的完整性,查看數(shù)據(jù)表的字段設計能否符合軟件功能的需求、是否存在信息設計遺漏的情況和物理架構不合理的情況。另一方面是功能性檢驗。主要檢測軟件功能模塊在運行過程中,對數(shù)據(jù)庫的處理情況是否高效準確,數(shù)據(jù)表的主鍵設置和表之間的關聯(lián)關系能否滿足功能模塊的合理需求。
4數(shù)據(jù)庫設計的未來發(fā)展
4.1更新設計理念
我國軟件開發(fā)行業(yè)對于數(shù)據(jù)庫的設計并沒有引起足夠的重視。有的軟件工程師在數(shù)據(jù)庫設計時,僅局限于完成設計,缺乏系統(tǒng)性的思維和宏觀視角的審視。數(shù)據(jù)是功能的基礎,數(shù)據(jù)庫設計是軟件項目開發(fā)的基礎。一個優(yōu)秀的數(shù)據(jù)庫設計者必然要具備頂層架構的思維能力,這就需要設計者首先轉變認知觀念,深化對數(shù)據(jù)庫設計重要性的認識,有意識地培養(yǎng)上位思考能力,從全局的角度把控數(shù)據(jù)庫的設計。
4.2提升設計水平
數(shù)據(jù)庫的設計工作不可能盡善盡美,每一個數(shù)據(jù)庫設計者都走在持續(xù)優(yōu)化數(shù)據(jù)庫以接近完美的路上。優(yōu)化設計是一個提升數(shù)據(jù)庫設計能力的過程,這就要從兩個方面人手。一方面,要善于總結歸納以往成功經(jīng)驗,對數(shù)據(jù)庫設計的優(yōu)劣有一個成熟、準確的判斷,優(yōu)秀的數(shù)據(jù)庫就像一件精美的藝術品,其底層邏輯和數(shù)據(jù)結構都讓人著迷。另一方面,要對數(shù)據(jù)庫未來的變化與發(fā)展有基本的預判。在數(shù)據(jù)庫設計契合軟件需求的基礎上,要打破當前數(shù)據(jù)的局限性,預判其在未來的升級空間。
4.3培養(yǎng)設計人才
就當前的行業(yè)現(xiàn)狀來看,對于數(shù)據(jù)庫設計而言,很多優(yōu)秀的軟件工程師并非軟件工程專業(yè)出身,而是由數(shù)學專業(yè)跨行業(yè)而來。這種現(xiàn)象不禁讓我們回頭反思數(shù)據(jù)庫設計者應具備的素質到底是什么。針對軟件專業(yè)技能的培訓、各種數(shù)據(jù)庫操作語言的學習等,專業(yè)技能固然重要,但比這更重要的是邏輯思維能力和對數(shù)據(jù)底層智慧的理解程度。因此,在對軟件工程人才的培養(yǎng)過程中,要有針對性地設置數(shù)據(jù)底層邏輯的學習科目,為我國數(shù)據(jù)庫高端人才的培養(yǎng)打下堅實的基礎。
5結束語
在網(wǎng)絡時代高速發(fā)展的背景下,軟件數(shù)據(jù)庫的設計與開發(fā)難度隨之增加,對數(shù)據(jù)庫設計者的要求也逐漸提高。為滿足大數(shù)據(jù)時代下的數(shù)據(jù)庫設計需求,本文通過研究數(shù)據(jù)庫設計對于軟件項目開發(fā)的重要性,歸納總結數(shù)據(jù)庫設計過程中常見的問題,并對此提出數(shù)據(jù)庫設計時需要把握的原則和可以應用的方法,緊跟時代潮流,緊隨行業(yè)發(fā)展,為我國軟件項目開發(fā)行業(yè)的數(shù)據(jù)庫設計者提供參考。