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