謝美意
(華中科技大學(xué) 計(jì)算機(jī)學(xué)院,湖北 武漢430074)
數(shù)據(jù)庫(kù)技術(shù)是信息化建設(shè)的基石,在各領(lǐng)域中的應(yīng)用非常廣泛,由此也導(dǎo)致了社會(huì)對(duì)數(shù)據(jù)庫(kù)技術(shù)人才的大量需求。為了滿足這一需求,在各高校的人才培養(yǎng)計(jì)劃中,不僅計(jì)算機(jī)及信息管理類專業(yè)一直將數(shù)據(jù)庫(kù)作為重要的基礎(chǔ)課程來對(duì)待,許多非計(jì)算機(jī)專業(yè)也開設(shè)了相關(guān)的課程。然而,值得注意的是,過去的近二十年是中國(guó)信息化社會(huì)從無到有的建設(shè)過程,因此這一期間需要大量的數(shù)據(jù)庫(kù)應(yīng)用開發(fā)人員,但是隨著信息化建設(shè)的深入,新的信息系統(tǒng)的建設(shè)項(xiàng)目將逐漸減少,而對(duì)已有信息系統(tǒng)的管理、維護(hù)、優(yōu)化和整合的需求會(huì)越來越大。體現(xiàn)在人才需求上,則是對(duì)數(shù)據(jù)庫(kù)應(yīng)用開發(fā)人員的需求將逐漸減少,而對(duì)高級(jí)的數(shù)據(jù)庫(kù)管理及調(diào)優(yōu)人員的需求將迅速增加。針對(duì)這一變化趨勢(shì),在我校計(jì)算機(jī)專業(yè)“卓越工程師”班的培養(yǎng)計(jì)劃中,我們對(duì)數(shù)據(jù)庫(kù)課程的實(shí)踐環(huán)節(jié)進(jìn)行了改革[1]。
數(shù)據(jù)庫(kù)相關(guān)課程主要包括“數(shù)據(jù)庫(kù)系統(tǒng)原理”(以下簡(jiǎn)稱“原理”)和“數(shù)據(jù)庫(kù)課程設(shè)計(jì)”(以下簡(jiǎn)稱“設(shè)計(jì)”)。“原理”課程介紹與數(shù)據(jù)庫(kù)技術(shù)相關(guān)的原理、理論與方法,除基礎(chǔ)理論外,大致可概括為數(shù)據(jù)庫(kù)設(shè)計(jì)和數(shù)據(jù)庫(kù)管理系統(tǒng)(DataBase Management System,以下簡(jiǎn)稱DBMS)實(shí)現(xiàn)兩大部分[2-3]?!霸O(shè)計(jì)”課程是與“原理”課程配套的實(shí)踐環(huán)節(jié),其內(nèi)容是完成一個(gè)數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn),以此來促進(jìn)學(xué)生對(duì)“原理”教學(xué)內(nèi)容的理解并提高實(shí)際動(dòng)手能力[4-7]。
目前,隨著程序設(shè)計(jì)技術(shù)的發(fā)展和進(jìn)步,數(shù)據(jù)庫(kù)應(yīng)用開發(fā)的自動(dòng)化程度越來越高,很多數(shù)據(jù)庫(kù)操作都被封裝在開發(fā)工具提供的組件中,程序員幾乎不需要了解底層的工作原理就可以方便地使用這些數(shù)據(jù)庫(kù)組件完成應(yīng)用開發(fā),因此在數(shù)據(jù)庫(kù)課程設(shè)計(jì)的過程中,需要學(xué)生運(yùn)用數(shù)據(jù)庫(kù)原理知識(shí)來解決的問題越來越少,這使得“設(shè)計(jì)”的內(nèi)容實(shí)質(zhì)上更接近于模板化的高級(jí)語言編程訓(xùn)練。從教學(xué)效果來看,這樣的訓(xùn)練內(nèi)容雖然能有效地培養(yǎng)學(xué)生的數(shù)據(jù)庫(kù)應(yīng)用開發(fā)能力,但是對(duì)于促進(jìn)學(xué)生理解DBMS 的運(yùn)行原理則沒有太大的幫助[8]。深入理解DBMS 的運(yùn)行原理是數(shù)據(jù)庫(kù)管理人員的基本要求,現(xiàn)有的實(shí)踐內(nèi)容顯然不利于培養(yǎng)具有深厚專業(yè)素養(yǎng)的高級(jí)數(shù)據(jù)庫(kù)人才。
“卓越工程師”人才的培養(yǎng),注重訓(xùn)練的是學(xué)生分析和解決問題的實(shí)踐能力,而非不求甚解的機(jī)械化編程[9-10]。具體到數(shù)據(jù)庫(kù)系統(tǒng)中,一個(gè)優(yōu)秀的工程師應(yīng)該能夠通過綜合分析DBMS 記錄的運(yùn)行數(shù)據(jù)或者調(diào)整DBMS 參數(shù),來發(fā)現(xiàn)和解決系統(tǒng)中出現(xiàn)的性能問題、安全問題或者排除各類故障,而這些都是建立在深刻了解DBMS 運(yùn)行原理的基礎(chǔ)之上的。為達(dá)到這一目的,我們嘗試將數(shù)據(jù)庫(kù)課程設(shè)計(jì)的內(nèi)容改變?yōu)橐粋€(gè)簡(jiǎn)單DBMS 的實(shí)現(xiàn)。這個(gè)變化,是將對(duì)學(xué)生的要求從“使用工具”的層面提升到“制造工具”的層面,其作用如下:
第一,在一個(gè)DBMS 的開發(fā)過程中,為了實(shí)現(xiàn)關(guān)系的定義、存儲(chǔ)、查詢和修改功能,學(xué)生必須運(yùn)用“原理”中介紹的關(guān)系模型、關(guān)系代數(shù)、三級(jí)模式等理論知識(shí)并且將其有機(jī)地聯(lián)系起來,從而達(dá)到促進(jìn)其理解數(shù)據(jù)庫(kù)系統(tǒng)工作原理并能靈活運(yùn)用的目的。第二,DBMS 是復(fù)雜度較高的系統(tǒng)軟件,其中綜合體現(xiàn)了數(shù)據(jù)庫(kù)、操作系統(tǒng)、編譯、數(shù)據(jù)結(jié)構(gòu)、算法、軟件工程等多門計(jì)算機(jī)知識(shí)和技術(shù)的實(shí)際運(yùn)用。與應(yīng)用程序開發(fā)相比,這樣的系統(tǒng)軟件開發(fā)顯然更有助于學(xué)生將各門課程所學(xué)的知識(shí)融匯貫通、加深理解[11]。相應(yīng)的,課程改革的難點(diǎn)也體現(xiàn)在題目的復(fù)雜性上。要求學(xué)生從零開始,在較短的時(shí)間內(nèi)完成一個(gè)完整DBMS 的設(shè)計(jì)與實(shí)現(xiàn)是不現(xiàn)實(shí)的,即使是功能簡(jiǎn)化后的DBMS,其難度仍然很大,因此教師需要提供必要的工作基礎(chǔ)和實(shí)踐指導(dǎo)。為此,我們?yōu)閷W(xué)生規(guī)劃了一個(gè)簡(jiǎn)單DBMS(以下稱HustBase)的體系結(jié)構(gòu)框架,并預(yù)先提供了其中的部分模塊作為課程設(shè)計(jì)的開發(fā)基礎(chǔ),使學(xué)生能在可控的時(shí)間內(nèi)分階段完成訓(xùn)練內(nèi)容。
HustBase 是一個(gè)單用戶關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng),支持簡(jiǎn)單的SQL 語言,其模塊結(jié)構(gòu)及模塊間的調(diào)用關(guān)系如圖1所示。
圖1 HustBase 模塊結(jié)構(gòu)圖
頁(yè)面管理:數(shù)據(jù)庫(kù)中所有的數(shù)據(jù)、元數(shù)據(jù)和索引數(shù)據(jù)均以分頁(yè)文件的形式存儲(chǔ)在磁盤上。頁(yè)面管理模塊的功能包括:創(chuàng)建、銷毀、打開和關(guān)閉分頁(yè)文件,從指定文件中讀取指定頁(yè)面,在指定文件中添加、刪除及修改頁(yè)面等,所有頁(yè)面的存取操作均通過緩沖區(qū)進(jìn)行。
記錄管理:數(shù)據(jù)表中的數(shù)據(jù)以記錄為單位存取。記錄管理模塊用于管理存儲(chǔ)在分頁(yè)文件中的數(shù)據(jù)表記錄,本模塊依賴于底層的頁(yè)面管理模塊。頁(yè)面管理模塊以頁(yè)面為單位實(shí)現(xiàn)文件級(jí)別的I/O,而記錄管理模塊則以記錄為單位實(shí)現(xiàn)數(shù)據(jù)表級(jí)的讀寫。
索引管理:HustBase 通過索引為查詢提供快速訪問路徑。索引管理模塊用于管理存儲(chǔ)在分頁(yè)文件中的索引記錄。與數(shù)據(jù)表不同的是,索引采用B+樹結(jié)構(gòu)來組織索引記錄。索引管理模塊同樣依賴于底層的頁(yè)面管理模塊。
系統(tǒng)管理:系統(tǒng)管理模塊提供數(shù)據(jù)定義功能,包括數(shù)據(jù)表和索引的創(chuàng)建和刪除。系統(tǒng)管理模塊的功能依賴于記錄管理模塊和索引管理模塊。
數(shù)據(jù)操縱:數(shù)據(jù)操縱模塊用于執(zhí)行用戶的SELECT、INSERT、DELETE 和UPDATE 命令,并向客戶返回最終的查詢結(jié)果集。本模塊的功能依賴于記錄管理模塊、索引管理模塊和系統(tǒng)管理模塊。
語法分析:語法分析模塊提供對(duì)SQL 命令的語法分析,并將分析結(jié)果以語法樹的形式提供給系統(tǒng)管理模塊和查詢處理模塊,以便其做進(jìn)一步的分析和處理。
用戶界面:HustBase 提供基于命令行的交互式界面,允許用戶輸入SQL 命令,并能接收和顯示返回結(jié)果。
改革后的數(shù)據(jù)庫(kù)課程設(shè)計(jì)課時(shí)安排為4 周,按周次劃分為4 個(gè)階段。除去已預(yù)先提供的用戶界面、語法分析和頁(yè)面管理模塊,學(xué)生還需要自己動(dòng)手實(shí)現(xiàn)記錄管理、索引管理、系統(tǒng)管理和數(shù)據(jù)操縱模塊,才能完成整個(gè)Hust-Base 系統(tǒng)的開發(fā)。具體課程內(nèi)容安排如表1 所示。
表1 數(shù)據(jù)庫(kù)課程設(shè)計(jì)課程內(nèi)容安排
HustBase 系統(tǒng)的開發(fā)環(huán)境為Windows 操作系統(tǒng)及Visual C+ +,開發(fā)語言為C 語言。為保證良好的模塊獨(dú)立性,除用戶界面模塊外,其它模塊均采用鏈接庫(kù)的形式實(shí)現(xiàn)。每個(gè)模塊必須按規(guī)定的格式對(duì)外提供調(diào)用接口,但是模塊內(nèi)部的實(shí)現(xiàn)方法則不做統(tǒng)一規(guī)定。這樣要求,一方面可以方便教師進(jìn)行階段性的模塊功能檢查,另一方面可以為學(xué)生設(shè)計(jì)及優(yōu)化模塊的實(shí)現(xiàn)方案提供更大的自由度。
一是指導(dǎo)方法。指導(dǎo)教師在課程開始時(shí)簡(jiǎn)要講解系統(tǒng)的結(jié)構(gòu)和工作原理,具體內(nèi)容則通過資料的形式由學(xué)生自行學(xué)習(xí)。教師的工作重點(diǎn)是引導(dǎo)學(xué)生利用所學(xué)的知識(shí)形成具體的設(shè)計(jì)方案。由于課程要求只規(guī)定了每個(gè)模塊針對(duì)上層模塊的接口函數(shù)形式和功能,因此學(xué)生采用的模塊內(nèi)部設(shè)計(jì)方案可能各不相同,設(shè)計(jì)錯(cuò)誤也難以避免,這就要求教師能隨時(shí)發(fā)現(xiàn)其中的問題,指出改進(jìn)方向,但同時(shí)也要注重鼓勵(lì)學(xué)生積極思考,避免過度限制學(xué)生思路[12]。二是實(shí)踐形式??紤]到系統(tǒng)實(shí)現(xiàn)的工作量較大,根據(jù)學(xué)生程度,實(shí)踐內(nèi)容采取2 ~3 人小組的形式合作完成。教師應(yīng)鼓勵(lì)學(xué)生在實(shí)踐過程中進(jìn)行充分的小組內(nèi)討論,以使每個(gè)人均能全面了解本小組的實(shí)現(xiàn)方案,并承擔(dān)合理的工作量;但在考核前,不鼓勵(lì)過多的小組間交流,以免各小組的設(shè)計(jì)方案失去其獨(dú)特性,也為教師最終評(píng)定成績(jī)帶來困難。三是考核方式。課程考核采用階段檢查與完結(jié)報(bào)告相結(jié)合的方式進(jìn)行。在課程實(shí)踐過程中,教師按模塊對(duì)各小組提交的代碼進(jìn)行階段性驗(yàn)收,各模塊功能的正確性由與該模塊配套的檢查程序進(jìn)行驗(yàn)證,同時(shí)對(duì)小組間代碼進(jìn)行比對(duì),以防止相互抄襲。課程結(jié)束時(shí),學(xué)生以小組為單位提交課程設(shè)計(jì)報(bào)告并公開答辯。
為突出“卓越工程師計(jì)劃”的人才培養(yǎng)特點(diǎn),本文提出的數(shù)據(jù)庫(kù)課程設(shè)計(jì)內(nèi)容從設(shè)計(jì)與實(shí)現(xiàn)一個(gè)DBMS 的角度出發(fā),將訓(xùn)練重點(diǎn)放在對(duì)數(shù)據(jù)庫(kù)系統(tǒng)內(nèi)部工作原理的理解和應(yīng)用上,同時(shí)強(qiáng)調(diào)學(xué)生綜合運(yùn)用所學(xué)的計(jì)算機(jī)專業(yè)知識(shí)來分析和解決實(shí)踐中遇到的問題,因此更有利于培養(yǎng)創(chuàng)新能力強(qiáng)、適應(yīng)經(jīng)濟(jì)社會(huì)發(fā)展需要的高質(zhì)量工程技術(shù)人才。
[1]林 健.“卓越工程師教育培養(yǎng)計(jì)劃”專業(yè)培養(yǎng)方案研究[J].清華大學(xué)教育研究,2011(2):47 -55.
[2]王 珊,薩師煊.數(shù)據(jù)庫(kù)系統(tǒng)概論[M].北京:高等教育出版社,2006.
[3]Ullman J D,Widom J.數(shù)據(jù)庫(kù)系統(tǒng)基礎(chǔ)教程[M].岳麗華,金培權(quán),萬壽紅,等譯.北京:機(jī)械工業(yè)出版社,2011.
[4]林 巧,丁革建.數(shù)據(jù)庫(kù)課程設(shè)計(jì)的項(xiàng)目化實(shí)驗(yàn)教學(xué)方法[J].實(shí)驗(yàn)室研究與探索,2009,28(4):131 -132,139.
[5]于凌云.項(xiàng)目教學(xué)法在數(shù)據(jù)庫(kù)教學(xué)中的實(shí)踐與探索[J].職業(yè)教育研究,2008(2):66 -67.
[6]趙慧敏,楊鑫華,牛一捷.數(shù)據(jù)庫(kù)課程設(shè)計(jì)實(shí)踐教學(xué)改革探索[J].當(dāng)代教育論壇,2011(8):49 -51.
[7]王法玉,肖迎元,張 穎.數(shù)據(jù)庫(kù)系統(tǒng)課程設(shè)計(jì)實(shí)踐教學(xué)改革研究[J].計(jì)算機(jī)教育,2010(9):150 -152.
[8]何福保,吳德道,胡開華.基于項(xiàng)目模擬實(shí)訓(xùn)的《數(shù)據(jù)庫(kù)課程設(shè)計(jì)》教學(xué)方法研究[J].福建電腦,2012(1):31 -32.
[9]林 健.面向卓越工程師培養(yǎng)的研究性學(xué)習(xí)[J].高等工程教育研究,2011(6):5 -15.
[10]林 健.注重卓越工程教育本質(zhì) 創(chuàng)新工程人才培養(yǎng)模式[J].中國(guó)高等教育,2011(6):19 -21.
[11]Garcia-Molina H,Ullman J D,Widom J.數(shù)據(jù)庫(kù)系統(tǒng)實(shí)現(xiàn)[M].楊冬青,吳 愈 青,包小源,等譯.北京:機(jī)械工業(yè)出版社,2010.
[12]林 健.勝任卓越工程師培養(yǎng)的工科教師隊(duì)伍建設(shè)[J].高等工程教育研究,2012(1):1 -14.