謝美意
(華中科技大學 計算機學院,湖北 武漢430074)
數(shù)據(jù)庫技術是信息化建設的基石,在各領域中的應用非常廣泛,由此也導致了社會對數(shù)據(jù)庫技術人才的大量需求。為了滿足這一需求,在各高校的人才培養(yǎng)計劃中,不僅計算機及信息管理類專業(yè)一直將數(shù)據(jù)庫作為重要的基礎課程來對待,許多非計算機專業(yè)也開設了相關的課程。然而,值得注意的是,過去的近二十年是中國信息化社會從無到有的建設過程,因此這一期間需要大量的數(shù)據(jù)庫應用開發(fā)人員,但是隨著信息化建設的深入,新的信息系統(tǒng)的建設項目將逐漸減少,而對已有信息系統(tǒng)的管理、維護、優(yōu)化和整合的需求會越來越大。體現(xiàn)在人才需求上,則是對數(shù)據(jù)庫應用開發(fā)人員的需求將逐漸減少,而對高級的數(shù)據(jù)庫管理及調優(yōu)人員的需求將迅速增加。針對這一變化趨勢,在我校計算機專業(yè)“卓越工程師”班的培養(yǎng)計劃中,我們對數(shù)據(jù)庫課程的實踐環(huán)節(jié)進行了改革[1]。
數(shù)據(jù)庫相關課程主要包括“數(shù)據(jù)庫系統(tǒng)原理”(以下簡稱“原理”)和“數(shù)據(jù)庫課程設計”(以下簡稱“設計”)。“原理”課程介紹與數(shù)據(jù)庫技術相關的原理、理論與方法,除基礎理論外,大致可概括為數(shù)據(jù)庫設計和數(shù)據(jù)庫管理系統(tǒng)(DataBase Management System,以下簡稱DBMS)實現(xiàn)兩大部分[2-3]。“設計”課程是與“原理”課程配套的實踐環(huán)節(jié),其內容是完成一個數(shù)據(jù)庫應用系統(tǒng)的設計與實現(xiàn),以此來促進學生對“原理”教學內容的理解并提高實際動手能力[4-7]。
目前,隨著程序設計技術的發(fā)展和進步,數(shù)據(jù)庫應用開發(fā)的自動化程度越來越高,很多數(shù)據(jù)庫操作都被封裝在開發(fā)工具提供的組件中,程序員幾乎不需要了解底層的工作原理就可以方便地使用這些數(shù)據(jù)庫組件完成應用開發(fā),因此在數(shù)據(jù)庫課程設計的過程中,需要學生運用數(shù)據(jù)庫原理知識來解決的問題越來越少,這使得“設計”的內容實質上更接近于模板化的高級語言編程訓練。從教學效果來看,這樣的訓練內容雖然能有效地培養(yǎng)學生的數(shù)據(jù)庫應用開發(fā)能力,但是對于促進學生理解DBMS 的運行原理則沒有太大的幫助[8]。深入理解DBMS 的運行原理是數(shù)據(jù)庫管理人員的基本要求,現(xiàn)有的實踐內容顯然不利于培養(yǎng)具有深厚專業(yè)素養(yǎng)的高級數(shù)據(jù)庫人才。
“卓越工程師”人才的培養(yǎng),注重訓練的是學生分析和解決問題的實踐能力,而非不求甚解的機械化編程[9-10]。具體到數(shù)據(jù)庫系統(tǒng)中,一個優(yōu)秀的工程師應該能夠通過綜合分析DBMS 記錄的運行數(shù)據(jù)或者調整DBMS 參數(shù),來發(fā)現(xiàn)和解決系統(tǒng)中出現(xiàn)的性能問題、安全問題或者排除各類故障,而這些都是建立在深刻了解DBMS 運行原理的基礎之上的。為達到這一目的,我們嘗試將數(shù)據(jù)庫課程設計的內容改變?yōu)橐粋€簡單DBMS 的實現(xiàn)。這個變化,是將對學生的要求從“使用工具”的層面提升到“制造工具”的層面,其作用如下:
第一,在一個DBMS 的開發(fā)過程中,為了實現(xiàn)關系的定義、存儲、查詢和修改功能,學生必須運用“原理”中介紹的關系模型、關系代數(shù)、三級模式等理論知識并且將其有機地聯(lián)系起來,從而達到促進其理解數(shù)據(jù)庫系統(tǒng)工作原理并能靈活運用的目的。第二,DBMS 是復雜度較高的系統(tǒng)軟件,其中綜合體現(xiàn)了數(shù)據(jù)庫、操作系統(tǒng)、編譯、數(shù)據(jù)結構、算法、軟件工程等多門計算機知識和技術的實際運用。與應用程序開發(fā)相比,這樣的系統(tǒng)軟件開發(fā)顯然更有助于學生將各門課程所學的知識融匯貫通、加深理解[11]。相應的,課程改革的難點也體現(xiàn)在題目的復雜性上。要求學生從零開始,在較短的時間內完成一個完整DBMS 的設計與實現(xiàn)是不現(xiàn)實的,即使是功能簡化后的DBMS,其難度仍然很大,因此教師需要提供必要的工作基礎和實踐指導。為此,我們?yōu)閷W生規(guī)劃了一個簡單DBMS(以下稱HustBase)的體系結構框架,并預先提供了其中的部分模塊作為課程設計的開發(fā)基礎,使學生能在可控的時間內分階段完成訓練內容。
HustBase 是一個單用戶關系數(shù)據(jù)庫管理系統(tǒng),支持簡單的SQL 語言,其模塊結構及模塊間的調用關系如圖1所示。

圖1 HustBase 模塊結構圖
頁面管理:數(shù)據(jù)庫中所有的數(shù)據(jù)、元數(shù)據(jù)和索引數(shù)據(jù)均以分頁文件的形式存儲在磁盤上。頁面管理模塊的功能包括:創(chuàng)建、銷毀、打開和關閉分頁文件,從指定文件中讀取指定頁面,在指定文件中添加、刪除及修改頁面等,所有頁面的存取操作均通過緩沖區(qū)進行。
記錄管理:數(shù)據(jù)表中的數(shù)據(jù)以記錄為單位存取。記錄管理模塊用于管理存儲在分頁文件中的數(shù)據(jù)表記錄,本模塊依賴于底層的頁面管理模塊。頁面管理模塊以頁面為單位實現(xiàn)文件級別的I/O,而記錄管理模塊則以記錄為單位實現(xiàn)數(shù)據(jù)表級的讀寫。
索引管理:HustBase 通過索引為查詢提供快速訪問路徑。索引管理模塊用于管理存儲在分頁文件中的索引記錄。與數(shù)據(jù)表不同的是,索引采用B+樹結構來組織索引記錄。索引管理模塊同樣依賴于底層的頁面管理模塊。
系統(tǒng)管理:系統(tǒng)管理模塊提供數(shù)據(jù)定義功能,包括數(shù)據(jù)表和索引的創(chuàng)建和刪除。系統(tǒng)管理模塊的功能依賴于記錄管理模塊和索引管理模塊。
數(shù)據(jù)操縱:數(shù)據(jù)操縱模塊用于執(zhí)行用戶的SELECT、INSERT、DELETE 和UPDATE 命令,并向客戶返回最終的查詢結果集。本模塊的功能依賴于記錄管理模塊、索引管理模塊和系統(tǒng)管理模塊。
語法分析:語法分析模塊提供對SQL 命令的語法分析,并將分析結果以語法樹的形式提供給系統(tǒng)管理模塊和查詢處理模塊,以便其做進一步的分析和處理。
用戶界面:HustBase 提供基于命令行的交互式界面,允許用戶輸入SQL 命令,并能接收和顯示返回結果。
改革后的數(shù)據(jù)庫課程設計課時安排為4 周,按周次劃分為4 個階段。除去已預先提供的用戶界面、語法分析和頁面管理模塊,學生還需要自己動手實現(xiàn)記錄管理、索引管理、系統(tǒng)管理和數(shù)據(jù)操縱模塊,才能完成整個Hust-Base 系統(tǒng)的開發(fā)。具體課程內容安排如表1 所示。

表1 數(shù)據(jù)庫課程設計課程內容安排
HustBase 系統(tǒng)的開發(fā)環(huán)境為Windows 操作系統(tǒng)及Visual C+ +,開發(fā)語言為C 語言。為保證良好的模塊獨立性,除用戶界面模塊外,其它模塊均采用鏈接庫的形式實現(xiàn)。每個模塊必須按規(guī)定的格式對外提供調用接口,但是模塊內部的實現(xiàn)方法則不做統(tǒng)一規(guī)定。這樣要求,一方面可以方便教師進行階段性的模塊功能檢查,另一方面可以為學生設計及優(yōu)化模塊的實現(xiàn)方案提供更大的自由度。
一是指導方法。指導教師在課程開始時簡要講解系統(tǒng)的結構和工作原理,具體內容則通過資料的形式由學生自行學習。教師的工作重點是引導學生利用所學的知識形成具體的設計方案。由于課程要求只規(guī)定了每個模塊針對上層模塊的接口函數(shù)形式和功能,因此學生采用的模塊內部設計方案可能各不相同,設計錯誤也難以避免,這就要求教師能隨時發(fā)現(xiàn)其中的問題,指出改進方向,但同時也要注重鼓勵學生積極思考,避免過度限制學生思路[12]。二是實踐形式。考慮到系統(tǒng)實現(xiàn)的工作量較大,根據(jù)學生程度,實踐內容采取2 ~3 人小組的形式合作完成。教師應鼓勵學生在實踐過程中進行充分的小組內討論,以使每個人均能全面了解本小組的實現(xiàn)方案,并承擔合理的工作量;但在考核前,不鼓勵過多的小組間交流,以免各小組的設計方案失去其獨特性,也為教師最終評定成績帶來困難。三是考核方式。課程考核采用階段檢查與完結報告相結合的方式進行。在課程實踐過程中,教師按模塊對各小組提交的代碼進行階段性驗收,各模塊功能的正確性由與該模塊配套的檢查程序進行驗證,同時對小組間代碼進行比對,以防止相互抄襲。課程結束時,學生以小組為單位提交課程設計報告并公開答辯。
為突出“卓越工程師計劃”的人才培養(yǎng)特點,本文提出的數(shù)據(jù)庫課程設計內容從設計與實現(xiàn)一個DBMS 的角度出發(fā),將訓練重點放在對數(shù)據(jù)庫系統(tǒng)內部工作原理的理解和應用上,同時強調學生綜合運用所學的計算機專業(yè)知識來分析和解決實踐中遇到的問題,因此更有利于培養(yǎng)創(chuàng)新能力強、適應經(jīng)濟社會發(fā)展需要的高質量工程技術人才。
[1]林 健.“卓越工程師教育培養(yǎng)計劃”專業(yè)培養(yǎng)方案研究[J].清華大學教育研究,2011(2):47 -55.
[2]王 珊,薩師煊.數(shù)據(jù)庫系統(tǒng)概論[M].北京:高等教育出版社,2006.
[3]Ullman J D,Widom J.數(shù)據(jù)庫系統(tǒng)基礎教程[M].岳麗華,金培權,萬壽紅,等譯.北京:機械工業(yè)出版社,2011.
[4]林 巧,丁革建.數(shù)據(jù)庫課程設計的項目化實驗教學方法[J].實驗室研究與探索,2009,28(4):131 -132,139.
[5]于凌云.項目教學法在數(shù)據(jù)庫教學中的實踐與探索[J].職業(yè)教育研究,2008(2):66 -67.
[6]趙慧敏,楊鑫華,牛一捷.數(shù)據(jù)庫課程設計實踐教學改革探索[J].當代教育論壇,2011(8):49 -51.
[7]王法玉,肖迎元,張 穎.數(shù)據(jù)庫系統(tǒng)課程設計實踐教學改革研究[J].計算機教育,2010(9):150 -152.
[8]何福保,吳德道,胡開華.基于項目模擬實訓的《數(shù)據(jù)庫課程設計》教學方法研究[J].福建電腦,2012(1):31 -32.
[9]林 健.面向卓越工程師培養(yǎng)的研究性學習[J].高等工程教育研究,2011(6):5 -15.
[10]林 健.注重卓越工程教育本質 創(chuàng)新工程人才培養(yǎng)模式[J].中國高等教育,2011(6):19 -21.
[11]Garcia-Molina H,Ullman J D,Widom J.數(shù)據(jù)庫系統(tǒng)實現(xiàn)[M].楊冬青,吳 愈 青,包小源,等譯.北京:機械工業(yè)出版社,2010.
[12]林 健.勝任卓越工程師培養(yǎng)的工科教師隊伍建設[J].高等工程教育研究,2012(1):1 -14.