李偉光,孫沫麗
(長春光華學院電氣信息學院,吉林長春130033)
數據庫系統課程是計算機類專業的一門基礎課,該課程與程序設計類課程一樣,是實際管理信息系統開發必須使用的技術之一,其重要性不言而喻。該課程的實踐性很強,因此,在數據庫系統基本理論講解完之后,后面的課堂教學就全是基于某門數據庫的實踐教學,用來驗證相關的理論基礎。
以往的數據庫教學基本是按照教材的順序逐個講解數據庫設計涉及的知識點,知識點之間是離散的,關聯度比較小[1-2]。這樣的一輪教學之后,學生對數據庫系統設計缺少整體把握,數據庫系統分析與設計的能力鍛煉不夠。為了幫助學生提高數據庫系統分析與設計的能力,建議采用“全程案例式”教學進行數據庫系統課程教學改革。
“全程案例式”教學是指整門課程講授一個相對完整的案例(如學生借閱圖書管理系統),該案例與學生的日常生活息息相關,學生很容易理解這個案例涉及的實體及其相互關系,為進一步的設計打下一個良好的基礎。
數據庫系統設計大體分成以下6個階段:需求分析、概念結構設計、邏輯結構設計、物理結構設計、數據庫實施、數據庫運行和維護。在教學內容上也要圍繞這6個階段展開。
(1)需求分析。通過分析學生借閱圖書管理系統(針對學生的學情選擇適當的數據庫系統進行設計),確定該系統的實體包括學生和圖書兩部分,學生實體包括學號、姓名、性別、出生日期、籍貫、專業、所在學院等屬性,圖書實體包括圖書號、圖書名稱、作者、出版社、出版時間、定價等屬性。學生和圖書之間存在借閱關系,是一種多對多的聯系,而該聯系會生成兩個屬性,即借書日期和還書日期。
(2)概念結構設計。需求分析明確之后,設計該系統的概念結構,畫出E-R圖(實體—聯系圖,矩形代表實體,菱形代表聯系,橢圓代表屬性),見圖1。
(3)邏輯結構設計。概念結構確定之后,要設計該系統的邏輯結構,將以上的E-R圖變成二維表。其中,學生實體生成學生信息表,見表1;圖書實體生成圖書信息表,見表2;借閱聯系生成圖書借閱表,見表3。
(4)物理結構。除必要的參數(如數據庫文件名稱、大小、路徑等)之外,由所使用的數據庫管理系統完成,無需數據庫管理員處理。

圖1 學生選修課程E-R圖

表1 學生信息表

表2 圖書信息表

表3 圖書借閱表
(5)數據庫實施。實施過程包括對數據庫對象的相關操作,如DDL(創建、修改、刪除)、DML(增、刪、改、查)、DCL(授權、撤銷權限)等操作,讓學生通過該案例實現完整的數據庫操作練習。數據庫實施過程中包含很多常見操作,如視圖、索引、存儲過程、觸發器、游標等。在授課過程中主要講解3個問題,即是什么?有什么用?怎樣使用?例如,游標是什么?游標有什么用?怎樣使用游標?這樣可以讓學生清楚地知道每一個數據庫對象概念的內涵以及如何應用相應的數據庫對象進行相關操作。
(6)數據庫的運行和維護。對數據庫進行維護(如備份和恢復等)、數據庫安全管理等內容。
數據庫的操作基本上都可以通過管理工具和SQL語句完成,而SQL語句是核心,可以應用到不同的數據庫管理系統當中,因此熟練使用SQL語句在各部分內容中都是重點。
教師通過精講多練使學生掌握這部分內容,通過大量的練習使學生熟能生巧。例如,數據庫查詢部分,學生通過“學生借閱圖書系統”學習單表查詢、多表查詢、嵌套查詢等內容,然后通過“人力資源管理系統”的查詢工作進行輔助訓練,這樣學生就能夠比較熟練地使用查詢語句。
數據庫設計的難點包括多表查詢、存儲過程、觸發器、游標的使用等。
對于難點問題一定要講清楚概念,通過對比法、示例法等方法讓學生充分理解相關概念,然后使用幾個具體的例子進行相關設計,這樣就可以讓學生突破這些難點問題,達到深入淺出的效果。
數據庫系統課程要在實驗室進行授課,人手一機,每個學生都要完成學生借閱圖書系統的完整設計過程。
教師在授課過程中采用“全程案例式”教學方法,“講演練用”(教師講解、演示,學生練習、應用)一體化教學,每一部分教學內容都采用相關實例進行授課,然后給學生安排相關的實訓內容進行訓練。例如觸發器的使用,讓學生自主設計適當的聯動觸發器,保證多表之間關聯數據的一致性。
在課堂教學上采用一個統一的案例,每名學生都要完成該案例,讓學生自己根據生活實際提出問題的需求,再根據需求進行概要設計,設計系統的E-R圖,然后根據E-R圖設計系統的邏輯結構,將E-R圖按照轉換規則轉換成二維表。這樣就完成了關系數據庫的設計,物理結構設計只需要給出大小、存儲路徑、邏輯文件名、物理文件名等參數即可,其他由數據庫管理系統(如SQLServer)自動完成。
在數據庫對象的使用上會設計大量的應用實例,比如查詢,根據查詢語句的語法設計相應的查詢內容。首先由教師進行查詢實例的操作,給出分析及設計的結果,然后學生根據教師的演示進行練習,之后由教師設計相關練習題,由學生分析和設計,最后獨立設計SQL語句。教師根據設計情況記錄平時成績,再結合學生的出勤成績,給出學生平時總成績。
最后兩個教學周,學生分組進行實驗,5人一組,每組根據生活實際獨立設計一個數據庫管理系統。每個人要有明確的分工,要有一定的工作量。每組包含一名組長和一個技術支持,負責本組的分工協作、技術指導等工作。最后,每組學生要制作PPT文檔進行答辯,根據平時的分工合作和最后的答辯給出期末考核成績。
該課程的考核采用平時成績占40%、期末考核占60%的方式進行。平時成績分成兩部分,考勤占20%,實驗部分占80%。期末不采用筆試方式考核,而采用項目答辯的方式,5名學生組成一個項目小組,根據本學期所學內容設計一個實用的數據庫應用系統。期末考核占總成績的60%,即60分,其中工作量20分、知識點考查20分、答辯20分,見表4,這樣可以鍛煉學生的系統分析與設計、團隊合作、交流表達、文檔制作等能力。考核完全考查學生的能力,而不是考查學生對知識點的記憶。知識點可以通過查閱文獻獲得,不必死記硬背,而能力必須通過不斷練習才能獲得,這也是學生將來就業獲得入職資格的資本。

表4 數據庫系統課程考核方式
學生5個人一組,其中包含一個組長和一個技術支持。經過一個學期的學習之后,每組根據生活實際制作一個比較完整的數據庫管理系統,每名學生都有明確的分工,這樣可以讓學生適應企業開發流程以及分工合作。
學生要根據生活實際創建一個數據庫系統,每個系統均不相同,至少包含5張表。以下操作除(1)之外均用SQL語句實現。
(1)根據系統分析,畫出E-R圖,生成數據表結構。
(2)創建數據庫,創建表(至少5張),建立表約束(共5種,每種至少2個)。
(3)錄入數據,每個表至少10條記錄。
(4)對表中數據進行插入、刪除、修改操作,每張表每種操作至少2次。
(5)對表中數據進行查詢。
a.單表查詢。包括SELECT、WHERE、GROUPBY、ORDERBY等操作,每張表每種查詢至少執行2次。
b.多表查詢。內連接、外連接、嵌套查詢,每組不少于4個。
(6)創建視圖,不少于3個。
(7)建立索引,唯一索引與多值索引至少各1個。
(8)根據需要建立存儲過程,帶參、無參至少各1個。
(9)根據需要建立觸發器,至少3個(盡量建立級聯觸發器,保證相關數據的一致性)。
(10)根據需要建立游標,至少2個。
要完成該系統,學生必須分組合作。首先對問題進行詳細分析,畫出E-R圖。學生根據E-R圖設計表,錄入相關數據,進行相關操作。每組5人分工明確,各司其職,這樣可以培養學生分工合作和交流溝通的能力。
最后教師要求學生制作答辯PPT,將分工情況、每個人的工作、遇到的問題以及如何解決等內容通過PPT進行展示,最后結合平時成績給出綜合的評定結果。
整個學期講授一個完整的案例可以讓學生形成系統分析與設計的能力。當然,在案例的選擇上要仔細斟酌,一定要選擇與學生能力相符的內容進行授課,這樣才能達到事半功倍的效果。
“全程案例式”教學方式可以進行推廣,尤其在程序設計類課程中推廣,如C語言程序設計、面向對象程序設計、Java語言程序設計、數據庫系統設計等課程,還有其他相關課程,如數據庫應用、計算機網絡等,都可以設計一個綜合案例,在整門課的授課期間講解該綜合案例,讓學生理解清楚,形成更穩定的記憶,提高教學效果。
[1]涂文婕,陳芳信.基于案例教學法的數據庫原理及應用課程教學[J].空軍預警學院學報,2015,(29)4:310-312.
[2]肖輝輝,任務驅動和案例結合的數據庫課程教改研究[J].電腦開發與應用,2014(3):6-9.