薛 偉
(安徽工業大學 計算機科學與技術學院,安徽 馬鞍山 243032)
軟件工程的概念誕生于1968年在聯邦德國召開的“軟件可靠性與軟件危機”研討會。二十世紀七八十年代,各種新興軟件工程技術和方法陸續出現,如結構化編程、信息隱藏、面向對象開發等。如今,軟件工程已經發展成一門成熟的指導計算機軟件開發和維護的工程學科,主要是采用工程的概念、原理、技術、方法來開發和維護軟件,涉及到軟件生產的諸多方面。數據庫課程作為軟件工程專業的核心課程,也是很多非計算機專業的必修課程之一。數據庫技術主要研究如何高效地組織和存儲數據,以及如何快速地獲取和處理數據。對信息進行存儲、管理、處理和維護都是以數據庫為基礎的,隨著現代計算機硬件和軟件技術的飛速發展以及計算機在各行各業的廣泛應用,數據庫技術發展尤其迅速,引人注目。
繼物聯網、云計算之后,大數據是信息技術產業中最受關注的領域之一。數據已成為這個時代最核心的資源之一,對數據的高效挖掘可以使資源得到最大程度的利用,而在這個過程中數據庫技術發揮著至關重要的作用。數據庫技術的發展已成為先進信息技術的重要組成部分,是現代計算機信息系統和應用系統的基礎和核心。數據庫課程教學必須理論和實踐相結合,尤其要注重社會實踐環節,以滿足軟件工程專業人才培養的需要。
數據庫課程培養學生設計中小型數據庫的能力。目前,我校所開設的數據庫課程主要介紹的是關系型數據庫,具體包括關系型數據庫的基本理論、關系型數據庫標準語言(Structured Query Language,SQL)、數據庫規范化設計等。關系模型和SQL在數據庫世界占據著主導地位。
隨著大數據時代的到來,傳統的關系型數據庫技術在處理海量非結構化數據時顯得力不從心,暴露出很多問題,主要表現在三個方面:無法滿足海量數據的管理需求;無法滿足數據高并發的需求;無法滿足高可擴展性和高可用性的需求。因此,在新的應用需求驅動下,各種非關系型數據庫(Not Only SQL,NoSQL)由于其本身的特點得到了非常迅速的發展,并逐漸獲得市場的青睞。表1給出了非關系型數據庫(NoSQL)和關系型數據庫的簡單比較。可以看出,非關系型數據庫(NoSQL)可以更好地支持Web2.0應用。

表1 非關系型數據庫和關系型數據庫的簡單比較
簡單而言,非關系型數據庫是一種不同于關系型數據庫的設計方式,該數據庫支持MapReduce風格的編程,可以較好地應用于大數據的管理,一定程度上彌補了關系型數據庫在當前商業領域存在的某些缺陷。所以,應考慮將非關系型數據庫添加到的現有的數據庫教學中去。
1.理論教學。讓學生了解關系型數據庫和非關系型數據庫的不同點,掌握SQL的數據定義語言(表對象的創建、刪除、修改)、數據操縱語言(數據的增加、刪除、修改、查詢)以及數據控制語言(權限的授予與回收等);掌握NoSQL數據庫中表對象的創建與刪除,記錄的增刪改查等命令;掌握關系型數據庫中存儲過程與觸發器的創建和調用;了解大數據存儲相關技術與原理,包括分布式文件系統(HDFA)、分布式數據庫(HBase);了解大數據處理和分析的核心技術MapReduce;掌握大數據處理架構Hadoop的使用等。
2.實驗教學。在數據庫的學習中,理論教學與實驗教學是緊密聯系、相輔相成的。實驗應由基礎性實驗、驗證性實驗和綜合性實驗三部分組成。
基礎性實驗主要是讓初學者盡快熟悉數據庫的開發環境,可以安排應用程序的安裝。ORACLE的基本安裝配置主要包括3個步驟:安裝ORACLEXE、安裝JDK、安裝SQL DEVELOPER。而Hadoop的基本安裝配置主要包括5個步驟:創建Hadoop用戶、安裝Java、設置SSH登錄權限、單機安裝配置、偽分布式安裝配置。
驗證性實驗主要是利用軟件對所學知識進行鞏固,比如數據的增刪改查,存儲過程和觸發器的創建、修改、刪除等;熟悉HDFS以及HBase操作常用的Java API;熟練使用HDFS以及HBase操作常用的Shell命令;掌握用MapReduce解決一些常見的數據處理問題(去重、排序、挖掘等)。
綜合性實驗主要是針對具體的案例搭建數據庫平臺,比如學校管理信息系統的設計與開發、進銷存管理系統的設計與實現、機票預定信息系統的設計與實現等,還有搭建基于大數據的綜合健康服務平臺、城市智能監控綜合應用平臺等。在確定合適的實驗題目之后,教師要正確引導學生,讓學生在實驗中充分發揮主觀能動性,激發其學習熱情,釋放自身潛能。
3.教材修訂。現階段,我們采用的教材是由我校聯合安徽理工大學、安徽建筑工業學院(現安徽建筑大學)和安徽工程大學2010年編寫的《數據庫系統及應用》。在教學中我們發現該教材存在部分不妥之處,且所介紹的Oracle數據庫版本較低,部分例題的解答不夠嚴謹。如建立一個觸發器return_tri實現以下功能:當讀者歸還一本書時,在借閱表(bookLend)中更改歸還日期(returnDate),觸動觸發器(return_tri)將book表中的在館狀態(states)改為歸還。按照教材上的創建方式應為:
create or replace trigger return_tri after update on bookLend
for each row
begin
if updating then
update book set states = ‘在館’ where bookId = :new.bookId;
end if;
end;
/
這種建立方式并不嚴謹,如果修改bookLend表中某一條記錄的借書日期而不是歸還日期(returnDate),此時觸發器return_tri也會被觸發,從而使得book表中對應圖書的在館狀態發生變化。這顯然是不符合實際要求的,應該把觸發器的觸發級別建立到具體的字段上。上述代碼可以修改如下:
create or replace trigger return_tri after update of returnDate on bookLend
for each row
begin
if updating then
update book set states = ‘在館’ where bookId = :new.bookId;
end if;
end;
/
應對教材進行修訂,更正存在的錯誤,統一全書的教學案例,讓教材的邏輯性更強。完善教材中例題的SQL語句,并添加非關系型數據庫章節。此外,在教材中可以補充難度適當、實用性強的閱讀材料,豐富教材內容。
數據庫課程一般在大二下學期開設,學生的英語水平已經滿足課程教學要求,且課堂使用的客戶端SQL Developer可以設置為英文界面,故可以考慮實行雙語教學。一方面可以提高學生英文文獻的閱讀和理解能力,另一方面可以提升學生的英語交流能力。
雙語教學在國外發展時間較長,在多年的教學實踐中,已形成多種不同的雙語教學模式,如浸沒法雙語教學、學科式雙語教學、過渡性雙語教學。其中,過渡性雙語教學比較符合我國高等學校的實際情況。該模式允許前期一段時間以母語教學作為過渡期,以避免學生因不適應全英文的教學而產生厭學心理。此外,教學模式、教案設計等都應做相應的改變。
多媒體課件把文字、圖形、圖像、視頻等多種素材進行集成,在一定程度上可以優化教學方式、活躍課堂氛圍、提升教學質量,對傳統課堂教學的改革起到很大的推動作用。例如數據流圖、數據庫恢復過程等很難用純語言表達清楚的內容,可以用動畫的形式來輔助講解。
此外,教育信息化是教育發展的必然趨勢。基于網絡視頻的教學模式越來越普遍,這種模式可以打破時間和地域的限制,讓學生可以隨時隨地進行課程的預習和復習,并且有足夠的時間和教師溝通,從而提高學習的主動性和學習效果。
本課程現階段采用“平時成績(40%)+考試成績(60%)”的方式進行考核,沒有將對學生數據庫課程設計情況的考核納入進來,數據庫課程設計是作為一門獨立開設的實驗課程,單獨打分。數據庫課程設計是學生學完數據庫課程之后在學期末獨立開設的一個綜合實踐教學環節。課程設計對于鞏固數據庫知識,培養學生的實際動手能力和提高學生綜合素質十分必要。但部分學生參加課程設計的積極性不高,導致該門課程無法通過。如果將課程設計的成績計入到數據庫課程的平時成績予以考核,則可以杜絕上述現象的發生。我們對考核方式進行了改革(見表2),調整后的考核方式增加了課程設計的考核,降低了平時作業和期末考試所占的比重,取得了較好的效果。

表2 課程考核指標及所占比例
隨著大數據時代的到來,越來越多的數據庫建立在非關系之上,關系型數據庫和非關系型數據庫將相互補充,共同發展。高校課程教學應充分考慮大數據時代對數據庫技術提出的新要求,不斷對課程進行研究和探索,培養滿足社會需求的優秀軟件工程人才。