摘要:數(shù)據(jù)庫課程是計算機專業(yè)重要的專業(yè)基礎課程。如何教好這門課,如何讓抽象的的理論知識真正“活”起來是教育工作者亟待解決的問題。開設數(shù)據(jù)庫實踐學期,帶領學生完成一個數(shù)據(jù)庫系統(tǒng)從設計到開發(fā)的全過程是解決這個問題的一種探索。本文介紹了這一探索的思路,以及出現(xiàn)的問題和解決的方法。
關鍵詞:數(shù)據(jù)庫實踐教學;分組教學;案例設計
中圖分類號:G642文獻標識碼:B
作為計算機專業(yè)重要的專業(yè)基礎課程——數(shù)據(jù)庫,因為它相比其他專業(yè)課程較易理解,大多數(shù)本科高校將其安排在學生的大二或大三學年進行。但教學中單純介紹SQL語言和數(shù)據(jù)庫設計往往讓學生摸不著頭腦:到底什么時候做數(shù)據(jù)庫設計?SQL語言是如何與高級編程語言配合開發(fā)出真正意義上的數(shù)據(jù)庫系統(tǒng)?這些問題的解答可能要牽涉到后面的高級編程語言設計和軟件工程等課程的介紹,但卻是此時學生最關心和最常見的問題。如果這些問題解決了,相信不光有助于數(shù)據(jù)庫課程的理解,同時也會對后面其他專業(yè)課程學習讓學生有個整體的了解和系統(tǒng)的把握。由此,我校從2000年建院之初就安排在數(shù)據(jù)庫課程結束后的一個月里開設數(shù)據(jù)庫實踐學期,組織學生完成一個小型數(shù)據(jù)庫項目的設計與開發(fā)?,F(xiàn)在這個教學活動已經(jīng)過5屆學生參與,教學體系已近成熟,教學效果良好?,F(xiàn)把我們的教學思路和方法介紹如下。
1教學重要解決的問題
(1) 實踐學期不同于普通理論學期,教學的中心應放在學生實踐上,教師在此過程中不能再以講授者身份出現(xiàn),而是作為課堂活動的指導者引導和幫助學生解決實踐中出現(xiàn)的問題。
(2) 現(xiàn)在教學班通常有六七十位學生,如果一位教師想同時解決這么多學生出現(xiàn)的問題難免力不從心。如何在減輕教師上課壓力的同時帶動所有學生的學習熱情,解決學習者水平差距帶來的實踐進度的矛盾?
(3) 此時的學生剛剛接觸一兩門編程語言,沒有程序開發(fā)經(jīng)驗,如何選擇合適的開發(fā)語言和數(shù)據(jù)庫軟件?
(4) 如果開發(fā)的數(shù)據(jù)庫項目在前臺設計上占用了太多的時間,學生可能就體會不到這個學期實踐的真正意義,弱化了數(shù)據(jù)庫的作用,也不能很好的把學過的數(shù)據(jù)庫理論知識付與實踐。那么如何設計開發(fā)項目?
2分組教學
對上面提出的前兩個問題:如何定位學生和教師在實踐活動中的作用,如何帶動所有學生的學習熱情。探索的方法是:采用軟件公司常用的開發(fā)模式——分組。
根據(jù)軟件開發(fā)的經(jīng)驗,通常一個組內(nèi)成員不超過6人。把學生按5~6人一組劃分,每組由學生自由推選一名小組長。組內(nèi)人員的工作分配可根據(jù)項目內(nèi)容劃分。教師負責小組長的管理,組長定期向教師匯報本組的開發(fā)情況,根據(jù)組員開發(fā)情況給每個人打分,并將組內(nèi)出現(xiàn)的難以解決的問題由教師來解答。但在此過程中要注意處理好幾個問題:
(1) 如何分組、分項目
在教學過程中,學生們往往喜歡選擇和自己的好朋友分在一個組里,可能出現(xiàn)學習好的扎堆,學習不好的都湊在一起的情況。如果這樣,可能會造成學習好的組實踐成績領先很多,讓其他組高不可及;學習不好的組“臭味相投”,組內(nèi)又沒有“明白”的人可以請教,越發(fā)“破罐子破摔”。所以,教師應向班干部們了解每個學生的學習情況,對分組成員仔細甑別,盡量讓每個組按學習的成績均勻分布。此外,把一個宿舍的分在一組,男女生均勻分布,也是不錯的策略。
根據(jù)項目內(nèi)容,教師根據(jù)功能把項目分成多個耦合度較小的模塊??梢砸勒諏W生的學習成績,分配給好學生難度較大或者功能較多的模塊,而把難度較低或功能較少的安排給學習較差的學生。
(2) 如何打分
學生的實踐得分包括組長打分、教師打分和其他項目加分三個部分,具體給分政策教師一定要在上課之初就向?qū)W生公布。
把項目開發(fā)過程分為幾個階段,在每個階段結束后,組長對本組成員在開發(fā)中的表現(xiàn)打分。為了防止有些組長的“老好人”心理,可能給組員打分過高,教師可根據(jù)打分的結果,對每個組作抽查。對打明顯“人情分”的組,作為懲罰,對整個小組成員成績予以下調(diào)。當然,每個組長的打分標準可能不同,教師就要在打分之前制定明確和易操作的給分標準,一般經(jīng)過兩三次組內(nèi)打分,組長的打分尺度就掌握得差不多了。
在學期結束前組織學生答辯。請每個學生到臺前介紹自己開發(fā)的思路、開發(fā)內(nèi)容以及其中遇到的難點問題和自己的解決方法。教師和其他學生在臺下聆聽,并就此提問。因為每個學生都有了自己的開發(fā)體驗,在提問的環(huán)節(jié)往往學生的提問更尖銳,更熱烈。通過答辯的表現(xiàn)教師予以打分。
為了形成組內(nèi)互助,組間競爭的學習氛圍,在學期結束時可以把每個組員的成績之和作為本組的最后成績,組間進行排名,給排名靠前的組成員統(tǒng)一加分。這樣的方法很好的減輕了教師上課的壓力,同時鍛煉了學生的開發(fā)能力,培養(yǎng)了學生良好的團隊合作精神。
3教學軟件選取
我們選擇C++ Builder作為項目開發(fā)前臺語言,SQL Server作為后臺數(shù)據(jù)庫管理軟件。
根據(jù)我院的教學安排,學生現(xiàn)已學過Java語言,有了一定面向?qū)ο笳Z言基礎,但因為Java界面設計較占用時間,容易使得教學過程朝前臺開發(fā)方向傾斜。所以選擇C++ Builder這一有快速開發(fā)特點的工具軟件,同時兼顧了C++語言與Java語言格式較相似,學生較容易理解和掌握的特點。
SQL Server是一種較流行的數(shù)據(jù)庫管理軟件,安裝過程較簡單,空間占用較小,與數(shù)據(jù)庫理論知識能較好對應。通常的前臺開發(fā)軟件都與它留有接口,學生學習過程較快。
4案例設計
基于上面的開發(fā)軟件特點,項目案例選擇C/S架構。此外,根據(jù)學生的水平,教師在案例選擇上還須兼顧規(guī)模中等,數(shù)據(jù)復雜性中等,功能劃分明確,學生熟悉等特點。
我們設計了一個名為“中超足球聯(lián)賽管理系統(tǒng)”的項目。項目功能包括:球隊管理、球員管理、比賽進程管理和積分榜等幾個功能。這些功能完全涵蓋了對球隊、球員、比賽情況等數(shù)據(jù)的增、刪、改、查的基本操作。項目主要涉及4張表,包括球隊表、球員表、比賽進程表和積分表。表間的ER圖見下圖。
由上圖可見,該案例表較簡單,表間關系沒有過于復雜,但涉及到了主碼約束、外碼約束、取值約束等數(shù)據(jù)庫的基本理論概念。此外,為實現(xiàn)積分榜等功能,教師還可對數(shù)據(jù)庫知識作適當擴展,補充存儲過程和觸發(fā)器等一些在數(shù)據(jù)庫理論教材中出現(xiàn)較少的內(nèi)容。這樣既擴展了學生的視野,也讓學生體會到好的后臺數(shù)據(jù)庫的設計會對整個項目開發(fā)起到事半功倍的效果。
項目對前臺界面要求不高,可重用,可鼓勵學生盡可能多關注對后臺數(shù)據(jù)庫的設計。例如,需要的信息如何組織?如何設計出項目基本ER圖?如何將ER圖轉(zhuǎn)換為具體的數(shù)據(jù)表?如何對數(shù)據(jù)庫規(guī)范化?如果是多個用戶同時訪問數(shù)據(jù)庫,如何解決數(shù)據(jù)庫并發(fā)的問題?當數(shù)據(jù)規(guī)模很大,數(shù)據(jù)庫備份和恢復就成為非常重要的功能,等等。教師可以根據(jù)學生的理解情況,在項目開發(fā)過程中加入上述內(nèi)容,或者分組討論,或者交由學有余力的學生來完善功能,相信學生通過實踐活動能真正看到課本上的知識“活”了起來。
此外,第一次開發(fā)完整的數(shù)據(jù)庫往往讓學生很興奮,他們會希望做一些自己感興趣項目,這時教師可幫助他們進行分析、整理和功能劃分,不必強制做一個項目。
5教學過程
我們的實踐學期總體分為兩個部分,前一部分由教師帶領學生做好基礎知識的回顧和工具軟件的使用介紹;后一部分由學生分組完成項目的設計與開發(fā)。兩個部分也可以交叉進行,但要始終把后一部份做為整個教學的中心,保證教學的重點以學生為主,教師為輔,實踐貫穿始終。
6結束語
我們的數(shù)據(jù)庫實踐教學已近6年,如何更好地將理論知識轉(zhuǎn)化為實踐能力是我們始終堅持解決的問題。5屆學生對僅為期一個月的實踐教學感觸頗深,為他們今后的專業(yè)學習及未來的畢業(yè)設計都打下了扎實的基礎。
參考文獻:
[1] 毛翼飛等. 數(shù)據(jù)庫技能實訓教程[M]. 大連:東軟電子出版社,2006.
[2] 翟國棟. 非計算機專業(yè)數(shù)據(jù)庫課程設計教學研究[J]. 教育探索,2007,(5):106-107.
[3] 馮曉紅,盧啟衡. 文科專業(yè)數(shù)據(jù)庫教學的探索與實踐[J]. 教學研究,2007,(6):14-17.