毛海霞
摘要:數據庫設計是軟件系統開發的前提基礎。高中信息技術學業水平考試系統的開發的關鍵也是數據庫設計。根據系統需求,設計出合理、高效的數據庫、數據表,是系統流暢運行是關鍵;數據庫設計需要遵循什么原則呢?
關鍵詞:數據庫設計;原則
一個軟件系統的設計,首先要調查研究,然后根據需求去設計完善的數據庫。數據庫是整個系統開發應用的關鍵,是軟件設計的起點,起到決定性的作用,所以,要對數據庫設計重視起來。本文結合高中信息技術學業水平考試系統的開發,談談數據庫設計需要遵循的原則。
一、調查研究,確定字段
設計一個軟件,必須與客戶溝通,了解客戶需求,根據需求設計數據庫。本系統是我們一線教師根據學業水平考試的實際情況,熟悉B/S模式下的系統存在的問題,了解實際需求,即使如此,各位老師的意見也是不同的,需要集中起來,一起討論、研究、探討實際需求,形成文檔,讓大家都清楚數據庫的設計。
系統需求:
(1)系統為C/S模式;
(2)題目類型:單選題、多選題、簡答題、程序題;
(3)有良好的人機交互界面;
(4)隨機出題;
(5)防止利用計算機作弊;
……
根據系統需求,最基本的表有三個:學生信息表、題目表、學生成績表。
以學生信息表為例,學生信息表必需要有的字段為:序號、考生姓名、學校、班級、登錄帳號、登錄密碼、相片7個基本的字段,考慮到需要記錄考生的登錄、等待考試、考試、結束考試這四個狀態,所以需要增加一個考試狀態的字段,另外還要記錄考試開始考試時間、結束考試時間等信息,還需要增加幾個字段,分別是開考時間、考試用時,考試指令、考試場次4個字段。考生信息表見下表
從學生信息表的設計來看,每個字段都有他必要的意義,設計好的每一個字段,已經清楚其在程序中如何去運用這些字段,各張表的聯系在程序中是如何體現的。也就是說數據庫設計后,程序中所有的實現思路和實現方式在程序員的腦海中就已經考慮過了。如果達不到這種程度,那么進入編碼階段后,所設計的數據庫無法支持,這時再回過頭來修改數據庫,將是非常麻煩的事,將造成一系列無法預測的問題。
二、字段命名規范
1.字段有意義且易理解,最好是能夠表達字段含義的英文單詞,但由于我們英語水平還是有所欠缺,也可以用漢語拼音縮寫來命名。還可以用漢字。
2.系統中所有屬于內碼,即僅用于標識唯一性和程序內部用到的標識性字段,字段名稱建議取為ID,采用類型為整型或長整型。
3.不要在數據庫表字段中包含數據類型,如:datetime
4.不能使用數據庫關鍵字,如:datetime、name等
三、字段設計合理
數據表設計時,字段設計要合理,主要體現在兩個方面,一個是字段類型,另一個是字段長度。字段類型過于明確,造成可發揮、可拓展的空間太小。字段長度過長,浪費磁盤空間,過短,不能保存完整信息。如上術的學生信息表中的證件號,類型為nchar,長度18,就是考慮到學生的身份證是唯一的,可以用身份證作為證件號,所以設計的時候就取身份證的長度18位。
四、考慮到效率和優化問題
一開始就要分析哪些表會存儲較多的數據量,對于數據量較大的表的設計往往是粗粒度的,也會冗余一些必要的字段,以達到盡量用最少的表、最弱的表關系去存儲海量的數據。并且在設計表時,一般都會對主鍵建立索引,含有大數據量的表更是要建立索引以提高查詢性能。對于含有計算、數據交互、統計這類需求時,還要考慮是否有必要采用存儲過程。
五、設計合理的表關聯
若多張表之間的關系復雜,建議采用第三張映射表來關聯維護兩張表之間的關系,以降低表之間的直接耦合度。若多張表涉及到大數據量的問題,表結構盡量簡單,關聯也要盡可能避免。
本系統的表間關系不算復雜,無需使用第三張映射表來建立關聯。如學考生信息表與成績表之間就存在關聯,兩表通過證件號來關聯,證件號在考生信息表中是唯一的,成績表的證件號可以多次出現,因為考試類型可以不一樣,兩表通過證件號建立一對多的關聯。當在考生信息表中刪除某一個學生時,成績表的關聯的學生的成績全部刪除,從而保證數據的正確性。
數據庫的設計在系統開發過程中起到舉足輕重的作用,系統需求相輔相成,只有認真對系統需求進行認真仔細地分析與研究,才能設計出合理、高效的數據庫。而合理、高效的數據庫,可以使系統開發少走彎路,提高效率。本系統的設計就是遵循這樣的一個規律:首先設計合理高效的數據庫,再開始系統的設計開發工作。
參考文獻:
[1](英)迪尤遜著,董明等譯.SQL Server 2005基礎教程人民郵電出版社,2006
[2]張宇.Access數據庫應用技術.中國鐵道出版社,2006
(作者單位:廣西南寧市橫縣橫州中學 530300)