李偉光,孫沫麗
(長春光華學(xué)院電氣信息學(xué)院,吉林長春130033)
數(shù)據(jù)庫系統(tǒng)課程是計(jì)算機(jī)類專業(yè)的一門基礎(chǔ)課,該課程與程序設(shè)計(jì)類課程一樣,是實(shí)際管理信息系統(tǒng)開發(fā)必須使用的技術(shù)之一,其重要性不言而喻。該課程的實(shí)踐性很強(qiáng),因此,在數(shù)據(jù)庫系統(tǒng)基本理論講解完之后,后面的課堂教學(xué)就全是基于某門數(shù)據(jù)庫的實(shí)踐教學(xué),用來驗(yàn)證相關(guān)的理論基礎(chǔ)。
以往的數(shù)據(jù)庫教學(xué)基本是按照教材的順序逐個(gè)講解數(shù)據(jù)庫設(shè)計(jì)涉及的知識(shí)點(diǎn),知識(shí)點(diǎn)之間是離散的,關(guān)聯(lián)度比較小[1-2]。這樣的一輪教學(xué)之后,學(xué)生對(duì)數(shù)據(jù)庫系統(tǒng)設(shè)計(jì)缺少整體把握,數(shù)據(jù)庫系統(tǒng)分析與設(shè)計(jì)的能力鍛煉不夠。為了幫助學(xué)生提高數(shù)據(jù)庫系統(tǒng)分析與設(shè)計(jì)的能力,建議采用“全程案例式”教學(xué)進(jìn)行數(shù)據(jù)庫系統(tǒng)課程教學(xué)改革。
“全程案例式”教學(xué)是指整門課程講授一個(gè)相對(duì)完整的案例(如學(xué)生借閱圖書管理系統(tǒng)),該案例與學(xué)生的日常生活息息相關(guān),學(xué)生很容易理解這個(gè)案例涉及的實(shí)體及其相互關(guān)系,為進(jìn)一步的設(shè)計(jì)打下一個(gè)良好的基礎(chǔ)。
數(shù)據(jù)庫系統(tǒng)設(shè)計(jì)大體分成以下6個(gè)階段:需求分析、概念結(jié)構(gòu)設(shè)計(jì)、邏輯結(jié)構(gòu)設(shè)計(jì)、物理結(jié)構(gòu)設(shè)計(jì)、數(shù)據(jù)庫實(shí)施、數(shù)據(jù)庫運(yùn)行和維護(hù)。在教學(xué)內(nèi)容上也要圍繞這6個(gè)階段展開。
(1)需求分析。通過分析學(xué)生借閱圖書管理系統(tǒng)(針對(duì)學(xué)生的學(xué)情選擇適當(dāng)?shù)臄?shù)據(jù)庫系統(tǒng)進(jìn)行設(shè)計(jì)),確定該系統(tǒng)的實(shí)體包括學(xué)生和圖書兩部分,學(xué)生實(shí)體包括學(xué)號(hào)、姓名、性別、出生日期、籍貫、專業(yè)、所在學(xué)院等屬性,圖書實(shí)體包括圖書號(hào)、圖書名稱、作者、出版社、出版時(shí)間、定價(jià)等屬性。學(xué)生和圖書之間存在借閱關(guān)系,是一種多對(duì)多的聯(lián)系,而該聯(lián)系會(huì)生成兩個(gè)屬性,即借書日期和還書日期。
(2)概念結(jié)構(gòu)設(shè)計(jì)。需求分析明確之后,設(shè)計(jì)該系統(tǒng)的概念結(jié)構(gòu),畫出E-R圖(實(shí)體—聯(lián)系圖,矩形代表實(shí)體,菱形代表聯(lián)系,橢圓代表屬性),見圖1。
(3)邏輯結(jié)構(gòu)設(shè)計(jì)。概念結(jié)構(gòu)確定之后,要設(shè)計(jì)該系統(tǒng)的邏輯結(jié)構(gòu),將以上的E-R圖變成二維表。其中,學(xué)生實(shí)體生成學(xué)生信息表,見表1;圖書實(shí)體生成圖書信息表,見表2;借閱聯(lián)系生成圖書借閱表,見表3。
(4)物理結(jié)構(gòu)。除必要的參數(shù)(如數(shù)據(jù)庫文件名稱、大小、路徑等)之外,由所使用的數(shù)據(jù)庫管理系統(tǒng)完成,無需數(shù)據(jù)庫管理員處理。
圖1 學(xué)生選修課程E-R圖
表1 學(xué)生信息表
表2 圖書信息表
表3 圖書借閱表
(5)數(shù)據(jù)庫實(shí)施。實(shí)施過程包括對(duì)數(shù)據(jù)庫對(duì)象的相關(guān)操作,如DDL(創(chuàng)建、修改、刪除)、DML(增、刪、改、查)、DCL(授權(quán)、撤銷權(quán)限)等操作,讓學(xué)生通過該案例實(shí)現(xiàn)完整的數(shù)據(jù)庫操作練習(xí)。數(shù)據(jù)庫實(shí)施過程中包含很多常見操作,如視圖、索引、存儲(chǔ)過程、觸發(fā)器、游標(biāo)等。在授課過程中主要講解3個(gè)問題,即是什么?有什么用?怎樣使用?例如,游標(biāo)是什么?游標(biāo)有什么用?怎樣使用游標(biāo)?這樣可以讓學(xué)生清楚地知道每一個(gè)數(shù)據(jù)庫對(duì)象概念的內(nèi)涵以及如何應(yīng)用相應(yīng)的數(shù)據(jù)庫對(duì)象進(jìn)行相關(guān)操作。
(6)數(shù)據(jù)庫的運(yùn)行和維護(hù)。對(duì)數(shù)據(jù)庫進(jìn)行維護(hù)(如備份和恢復(fù)等)、數(shù)據(jù)庫安全管理等內(nèi)容。
數(shù)據(jù)庫的操作基本上都可以通過管理工具和SQL語句完成,而SQL語句是核心,可以應(yīng)用到不同的數(shù)據(jù)庫管理系統(tǒng)當(dāng)中,因此熟練使用SQL語句在各部分內(nèi)容中都是重點(diǎn)。
教師通過精講多練使學(xué)生掌握這部分內(nèi)容,通過大量的練習(xí)使學(xué)生熟能生巧。例如,數(shù)據(jù)庫查詢部分,學(xué)生通過“學(xué)生借閱圖書系統(tǒng)”學(xué)習(xí)單表查詢、多表查詢、嵌套查詢等內(nèi)容,然后通過“人力資源管理系統(tǒng)”的查詢工作進(jìn)行輔助訓(xùn)練,這樣學(xué)生就能夠比較熟練地使用查詢語句。
數(shù)據(jù)庫設(shè)計(jì)的難點(diǎn)包括多表查詢、存儲(chǔ)過程、觸發(fā)器、游標(biāo)的使用等。
對(duì)于難點(diǎn)問題一定要講清楚概念,通過對(duì)比法、示例法等方法讓學(xué)生充分理解相關(guān)概念,然后使用幾個(gè)具體的例子進(jìn)行相關(guān)設(shè)計(jì),這樣就可以讓學(xué)生突破這些難點(diǎn)問題,達(dá)到深入淺出的效果。
數(shù)據(jù)庫系統(tǒng)課程要在實(shí)驗(yàn)室進(jìn)行授課,人手一機(jī),每個(gè)學(xué)生都要完成學(xué)生借閱圖書系統(tǒng)的完整設(shè)計(jì)過程。
教師在授課過程中采用“全程案例式”教學(xué)方法,“講演練用”(教師講解、演示,學(xué)生練習(xí)、應(yīng)用)一體化教學(xué),每一部分教學(xué)內(nèi)容都采用相關(guān)實(shí)例進(jìn)行授課,然后給學(xué)生安排相關(guān)的實(shí)訓(xùn)內(nèi)容進(jìn)行訓(xùn)練。例如觸發(fā)器的使用,讓學(xué)生自主設(shè)計(jì)適當(dāng)?shù)穆?lián)動(dòng)觸發(fā)器,保證多表之間關(guān)聯(lián)數(shù)據(jù)的一致性。
在課堂教學(xué)上采用一個(gè)統(tǒng)一的案例,每名學(xué)生都要完成該案例,讓學(xué)生自己根據(jù)生活實(shí)際提出問題的需求,再根據(jù)需求進(jìn)行概要設(shè)計(jì),設(shè)計(jì)系統(tǒng)的E-R圖,然后根據(jù)E-R圖設(shè)計(jì)系統(tǒng)的邏輯結(jié)構(gòu),將E-R圖按照轉(zhuǎn)換規(guī)則轉(zhuǎn)換成二維表。這樣就完成了關(guān)系數(shù)據(jù)庫的設(shè)計(jì),物理結(jié)構(gòu)設(shè)計(jì)只需要給出大小、存儲(chǔ)路徑、邏輯文件名、物理文件名等參數(shù)即可,其他由數(shù)據(jù)庫管理系統(tǒng)(如SQLServer)自動(dòng)完成。
在數(shù)據(jù)庫對(duì)象的使用上會(huì)設(shè)計(jì)大量的應(yīng)用實(shí)例,比如查詢,根據(jù)查詢語句的語法設(shè)計(jì)相應(yīng)的查詢內(nèi)容。首先由教師進(jìn)行查詢實(shí)例的操作,給出分析及設(shè)計(jì)的結(jié)果,然后學(xué)生根據(jù)教師的演示進(jìn)行練習(xí),之后由教師設(shè)計(jì)相關(guān)練習(xí)題,由學(xué)生分析和設(shè)計(jì),最后獨(dú)立設(shè)計(jì)SQL語句。教師根據(jù)設(shè)計(jì)情況記錄平時(shí)成績(jī),再結(jié)合學(xué)生的出勤成績(jī),給出學(xué)生平時(shí)總成績(jī)。
最后兩個(gè)教學(xué)周,學(xué)生分組進(jìn)行實(shí)驗(yàn),5人一組,每組根據(jù)生活實(shí)際獨(dú)立設(shè)計(jì)一個(gè)數(shù)據(jù)庫管理系統(tǒng)。每個(gè)人要有明確的分工,要有一定的工作量。每組包含一名組長和一個(gè)技術(shù)支持,負(fù)責(zé)本組的分工協(xié)作、技術(shù)指導(dǎo)等工作。最后,每組學(xué)生要制作PPT文檔進(jìn)行答辯,根據(jù)平時(shí)的分工合作和最后的答辯給出期末考核成績(jī)。
該課程的考核采用平時(shí)成績(jī)占40%、期末考核占60%的方式進(jìn)行。平時(shí)成績(jī)分成兩部分,考勤占20%,實(shí)驗(yàn)部分占80%。期末不采用筆試方式考核,而采用項(xiàng)目答辯的方式,5名學(xué)生組成一個(gè)項(xiàng)目小組,根據(jù)本學(xué)期所學(xué)內(nèi)容設(shè)計(jì)一個(gè)實(shí)用的數(shù)據(jù)庫應(yīng)用系統(tǒng)。期末考核占總成績(jī)的60%,即60分,其中工作量20分、知識(shí)點(diǎn)考查20分、答辯20分,見表4,這樣可以鍛煉學(xué)生的系統(tǒng)分析與設(shè)計(jì)、團(tuán)隊(duì)合作、交流表達(dá)、文檔制作等能力??己送耆疾閷W(xué)生的能力,而不是考查學(xué)生對(duì)知識(shí)點(diǎn)的記憶。知識(shí)點(diǎn)可以通過查閱文獻(xiàn)獲得,不必死記硬背,而能力必須通過不斷練習(xí)才能獲得,這也是學(xué)生將來就業(yè)獲得入職資格的資本。
表4 數(shù)據(jù)庫系統(tǒng)課程考核方式
學(xué)生5個(gè)人一組,其中包含一個(gè)組長和一個(gè)技術(shù)支持。經(jīng)過一個(gè)學(xué)期的學(xué)習(xí)之后,每組根據(jù)生活實(shí)際制作一個(gè)比較完整的數(shù)據(jù)庫管理系統(tǒng),每名學(xué)生都有明確的分工,這樣可以讓學(xué)生適應(yīng)企業(yè)開發(fā)流程以及分工合作。
學(xué)生要根據(jù)生活實(shí)際創(chuàng)建一個(gè)數(shù)據(jù)庫系統(tǒng),每個(gè)系統(tǒng)均不相同,至少包含5張表。以下操作除(1)之外均用SQL語句實(shí)現(xiàn)。
(1)根據(jù)系統(tǒng)分析,畫出E-R圖,生成數(shù)據(jù)表結(jié)構(gòu)。
(2)創(chuàng)建數(shù)據(jù)庫,創(chuàng)建表(至少5張),建立表約束(共5種,每種至少2個(gè))。
(3)錄入數(shù)據(jù),每個(gè)表至少10條記錄。
(4)對(duì)表中數(shù)據(jù)進(jìn)行插入、刪除、修改操作,每張表每種操作至少2次。
(5)對(duì)表中數(shù)據(jù)進(jìn)行查詢。
a.單表查詢。包括SELECT、WHERE、GROUPBY、ORDERBY等操作,每張表每種查詢至少執(zhí)行2次。
b.多表查詢。內(nèi)連接、外連接、嵌套查詢,每組不少于4個(gè)。
(6)創(chuàng)建視圖,不少于3個(gè)。
(7)建立索引,唯一索引與多值索引至少各1個(gè)。
(8)根據(jù)需要建立存儲(chǔ)過程,帶參、無參至少各1個(gè)。
(9)根據(jù)需要建立觸發(fā)器,至少3個(gè)(盡量建立級(jí)聯(lián)觸發(fā)器,保證相關(guān)數(shù)據(jù)的一致性)。
(10)根據(jù)需要建立游標(biāo),至少2個(gè)。
要完成該系統(tǒng),學(xué)生必須分組合作。首先對(duì)問題進(jìn)行詳細(xì)分析,畫出E-R圖。學(xué)生根據(jù)E-R圖設(shè)計(jì)表,錄入相關(guān)數(shù)據(jù),進(jìn)行相關(guān)操作。每組5人分工明確,各司其職,這樣可以培養(yǎng)學(xué)生分工合作和交流溝通的能力。
最后教師要求學(xué)生制作答辯PPT,將分工情況、每個(gè)人的工作、遇到的問題以及如何解決等內(nèi)容通過PPT進(jìn)行展示,最后結(jié)合平時(shí)成績(jī)給出綜合的評(píng)定結(jié)果。
整個(gè)學(xué)期講授一個(gè)完整的案例可以讓學(xué)生形成系統(tǒng)分析與設(shè)計(jì)的能力。當(dāng)然,在案例的選擇上要仔細(xì)斟酌,一定要選擇與學(xué)生能力相符的內(nèi)容進(jìn)行授課,這樣才能達(dá)到事半功倍的效果。
“全程案例式”教學(xué)方式可以進(jìn)行推廣,尤其在程序設(shè)計(jì)類課程中推廣,如C語言程序設(shè)計(jì)、面向?qū)ο蟪绦蛟O(shè)計(jì)、Java語言程序設(shè)計(jì)、數(shù)據(jù)庫系統(tǒng)設(shè)計(jì)等課程,還有其他相關(guān)課程,如數(shù)據(jù)庫應(yīng)用、計(jì)算機(jī)網(wǎng)絡(luò)等,都可以設(shè)計(jì)一個(gè)綜合案例,在整門課的授課期間講解該綜合案例,讓學(xué)生理解清楚,形成更穩(wěn)定的記憶,提高教學(xué)效果。
[1]涂文婕,陳芳信.基于案例教學(xué)法的數(shù)據(jù)庫原理及應(yīng)用課程教學(xué)[J].空軍預(yù)警學(xué)院學(xué)報(bào),2015,(29)4:310-312.
[2]肖輝輝,任務(wù)驅(qū)動(dòng)和案例結(jié)合的數(shù)據(jù)庫課程教改研究[J].電腦開發(fā)與應(yīng)用,2014(3):6-9.