韋美雁
(湖南科技學(xué)院 計(jì)算機(jī)與通信工程系,湖南 永州 425199)
在計(jì)算機(jī)科學(xué)中,數(shù)據(jù)庫(kù)是十分重要且發(fā)展迅速的重要分支。隨著各種應(yīng)用領(lǐng)域?qū)?shù)據(jù)管理的需求越來(lái)越多,《數(shù)據(jù)庫(kù)原理及應(yīng)用》這門課程的重要性也日益顯著,它不僅是高校計(jì)算機(jī)類專業(yè)的主干課程,而且也成為許多非計(jì)算機(jī)專業(yè)學(xué)生的必修課或選修課程。亦即數(shù)據(jù)庫(kù)的操作和管理成為了大學(xué)通識(shí)教育的內(nèi)容,而“計(jì)算思維能力培養(yǎng)是大學(xué)通識(shí)教育的重要組成部分”[1]。在《數(shù)據(jù)庫(kù)原理及應(yīng)用》的教學(xué)中注重計(jì)算思維的培養(yǎng)是非常有意義的。
2006年3月,美國(guó)卡內(nèi)基·梅隆大學(xué)計(jì)算機(jī)科學(xué)系主任周以真(Jeannette M.Wing)教授在美國(guó)計(jì)算機(jī)權(quán)威期刊《Communications of the ACM》雜志上提出并定義了計(jì)算思維(Computational Thinking)。周教授認(rèn)為:計(jì)算思維是運(yùn)用計(jì)算機(jī)科學(xué)的基礎(chǔ)概念進(jìn)行問題求解、系統(tǒng)設(shè)計(jì)、以及人類行為理解等涵蓋計(jì)算機(jī)科學(xué)之廣度的一系列思維活動(dòng)。董榮勝教授在文獻(xiàn)[2]、[3]中定義:計(jì)算思維是運(yùn)用計(jì)算機(jī)科學(xué)的思想與方法進(jìn)行問題求解、系統(tǒng)設(shè)計(jì),以及人類行為理解等涵蓋計(jì)算機(jī)科學(xué)之廣度的一系列思維活動(dòng)。我們可以通俗的理解為:計(jì)算思維是以設(shè)計(jì)和構(gòu)造為特征,并以計(jì)算機(jī)學(xué)科為典型代表。
《數(shù)據(jù)庫(kù)原理與應(yīng)用》理論知識(shí)較多,包括關(guān)系數(shù)據(jù)庫(kù)、SQL基礎(chǔ)、數(shù)據(jù)庫(kù)的安全性和完整性、關(guān)系數(shù)據(jù)理論、數(shù)據(jù)庫(kù)設(shè)計(jì)、數(shù)據(jù)庫(kù)的編程、數(shù)據(jù)庫(kù)恢復(fù)技術(shù)和并發(fā)控制等方面。為了更好的培養(yǎng)學(xué)生的計(jì)算思維能力,在教學(xué)中注重對(duì)課程的教學(xué)設(shè)計(jì)是非常必要的。而就本課程而言,計(jì)算思維能力培養(yǎng)可從課堂教學(xué)和實(shí)踐教學(xué)中融入。
計(jì)算思維是以設(shè)計(jì)和構(gòu)造為特征?!稊?shù)據(jù)庫(kù)原理及應(yīng)用》正是一門討論如何設(shè)計(jì)和構(gòu)造數(shù)據(jù)庫(kù)系統(tǒng)的課程,因此對(duì)于課程的引入,我們首先要有個(gè)宏觀的體驗(yàn),例如在介紹數(shù)據(jù)庫(kù)保護(hù)時(shí)需要學(xué)生理解事務(wù)、并發(fā)控制等概念。我們從實(shí)例引入,諸如銀行系統(tǒng)進(jìn)行轉(zhuǎn)賬,要從甲賬戶轉(zhuǎn)帳100元到乙賬戶。這里要經(jīng)歷兩步,第一步從甲賬戶-100,第二步給乙賬戶+100。但是,若在系統(tǒng)剛好操作完第一步時(shí)停電了,那么這轉(zhuǎn)賬的事件是否已經(jīng)完成,數(shù)據(jù)庫(kù)系統(tǒng)的數(shù)據(jù)是否會(huì)出現(xiàn)異常?另如購(gòu)買車票,甲乙同時(shí)進(jìn)入購(gòu)票系統(tǒng)購(gòu)買火車票,此時(shí)他們讀取的數(shù)據(jù)是10票,那么,甲買6張,乙買5張,最后系統(tǒng)剩余多少?gòu)埰??讓他們體會(huì)事務(wù)在在處理時(shí),如果沒有一定的技術(shù)措施,那么將會(huì)發(fā)生造成數(shù)據(jù)的存取錯(cuò)誤,破壞數(shù)據(jù)的一致性和完整性,從而引入課程。
依然以“數(shù)據(jù)庫(kù)保護(hù)”這章的內(nèi)容來(lái)闡述我們結(jié)合計(jì)算思維的課堂教學(xué),引導(dǎo)學(xué)生學(xué)習(xí)領(lǐng)會(huì)計(jì)算思維的方法,從而更好的體會(huì)計(jì)算思維的設(shè)計(jì)與構(gòu)造的特點(diǎn)。
(1)事務(wù)概念簡(jiǎn)介:通過課程引入,同學(xué)們初步了解到維護(hù)數(shù)據(jù)庫(kù)數(shù)據(jù)一致性的基本手段是事務(wù),進(jìn)而介紹事務(wù)的四大特性和事務(wù)的處理模型,同時(shí)讓同學(xué)們對(duì)事務(wù)的ACID(原子性、一致性、隔離性、持續(xù)性)四大特性有充分的了解。
(2)事務(wù)并行異象:數(shù)據(jù)庫(kù)數(shù)據(jù)是共享的,那么事務(wù)的并行會(huì)出現(xiàn)的異?,F(xiàn)象有丟失數(shù)據(jù)修改,讀臟數(shù)據(jù),不可重復(fù)讀,產(chǎn)生“幽靈”數(shù)據(jù)。
(3)事務(wù)并行異象處理:為了避免異象(丟失數(shù)據(jù)、讀臟數(shù)據(jù)、不可重復(fù)讀、產(chǎn)生“幽靈”數(shù)據(jù))的發(fā)生,我們?cè)O(shè)計(jì)的處理措施是加鎖,那么加鎖如何設(shè)定規(guī)則?能達(dá)到預(yù)想的避免異象發(fā)生嗎?進(jìn)而引導(dǎo)學(xué)生去發(fā)現(xiàn)為了不丟失數(shù)據(jù)修改,我們應(yīng)該何時(shí)申請(qǐng)X(或者S)鎖,持鎖時(shí)間為多長(zhǎng),何時(shí)釋放鎖等問題。同樣,為了不讀臟數(shù)據(jù),我們又該如何設(shè)計(jì),為了可重復(fù)讀又該如何設(shè)計(jì)。通過這段課程介紹,讓學(xué)生充分體會(huì)計(jì)算機(jī)科學(xué)就是設(shè)計(jì)和構(gòu)造的科學(xué)。
在實(shí)踐課程中,為培養(yǎng)學(xué)生的計(jì)算思維能力,老師通過給出實(shí)驗(yàn)任務(wù),提出問題,讓學(xué)生或獨(dú)立或協(xié)作的去探索問題的解決方法,發(fā)現(xiàn)問題的本質(zhì)。
例如,要求學(xué)生創(chuàng)建一個(gè)數(shù)據(jù)庫(kù),其中包含三個(gè)表:學(xué)生表、課程表和 學(xué)生選課表,在創(chuàng)建時(shí)要給出各表的合適的屬性,選取合適的主碼,指出各表之間的聯(lián)系。在這個(gè)任務(wù)中,其實(shí)考察的是學(xué)生對(duì)數(shù)據(jù)完整性的理解。
數(shù)據(jù)完整性是一個(gè)非常重要的概念,在數(shù)據(jù)庫(kù)原理教材[4]中它的貫穿性得到了很好的體現(xiàn)。在理論部分,關(guān)系數(shù)據(jù)庫(kù)提出了它的相關(guān)概念;在設(shè)計(jì)部分,數(shù)據(jù)需求分析中數(shù)據(jù)滿足完整性約束的數(shù)據(jù)在數(shù)據(jù)字典中要加以體現(xiàn),并通過概念結(jié)構(gòu)、邏輯結(jié)構(gòu)設(shè)計(jì)來(lái)表達(dá);在實(shí)施部分常常利用觸發(fā)器、SQL語(yǔ)言、數(shù)據(jù)庫(kù)管理系統(tǒng)的基本功能等按照數(shù)據(jù)完整性約束的信息來(lái)具體加以實(shí)現(xiàn)。因此在實(shí)踐教學(xué)中引導(dǎo)學(xué)生在創(chuàng)建數(shù)據(jù)庫(kù)時(shí)對(duì)數(shù)據(jù)完整性的理解和應(yīng)用,能夠很好的培養(yǎng)學(xué)生的計(jì)算思維能力和創(chuàng)新能力。
數(shù)據(jù)完整性具體涉及到三方面,實(shí)體完整性、參照完整性、用戶自定義完整性[4][5]。實(shí)體完整性的是保證實(shí)體的唯一性,與其他實(shí)體的可區(qū)分性,因此主碼的設(shè)定非常重要,例如學(xué)生數(shù)據(jù)庫(kù)中的學(xué)生表,其主碼設(shè)定最好是“學(xué)號(hào)”而不是姓名或其他屬性;當(dāng)然我們的問題是,如果約定在該數(shù)據(jù)庫(kù)中,同一個(gè)班的同學(xué)的姓名是不同的,那么,除了“學(xué)號(hào)”可作為主碼,“姓名”是否可以作為主碼?我們平時(shí)在設(shè)定主碼時(shí)要注意什么?顯然,在這種條件下“姓名”是可以作為主碼的,因?yàn)樗鼙磉_(dá)實(shí)體的唯一性。
參照完整性指多個(gè)實(shí)體或表之間的關(guān)聯(lián)關(guān)系。在學(xué)生課程 ER圖(如圖一)中,有兩個(gè)實(shí)體“學(xué)生”、“課程”,還有一個(gè)聯(lián)系“選課”,該聯(lián)系方式是多對(duì)多的聯(lián)系。當(dāng)我們把該關(guān)系模式轉(zhuǎn)化為關(guān)系時(shí),除了實(shí)體轉(zhuǎn)換成相應(yīng)的表“學(xué)生表(sno,sname,ssex,sdept)”、“課程表(cno,cname,credit)”外,聯(lián)系“選課”也要轉(zhuǎn)換為表“選課表”,至于選課表屬性的設(shè)計(jì)初學(xué)者很茫然,其實(shí)我們?cè)诖酥恍璋盐找稽c(diǎn),與該聯(lián)系“選課”相關(guān)的實(shí)體是誰(shuí),在屬性中表現(xiàn)該實(shí)體就行,于是,我們可以設(shè)計(jì)其屬性為“(sno,cno,grade)”。顯然“選課表”中的課程號(hào)(cno)在“課程表”中應(yīng)該存在,“選課表”中出現(xiàn)的學(xué)生的學(xué)號(hào)(sno)在“學(xué)生表”中應(yīng)該存在,表中“sno、cno”屬性的取值要參照“學(xué)生表”和“課程表”的取值,這個(gè)屬性我們稱為外碼,而且它還有一個(gè)特點(diǎn),外碼屬性在父表中應(yīng)該是主碼屬性。如果在表的設(shè)計(jì)過程中未曾注意到參照完整性,那么就可能出現(xiàn)學(xué)生選課表中的學(xué)號(hào)或課程號(hào)不曾在學(xué)生表或課程表中出現(xiàn),即沒有該學(xué)生存在或者根本沒有開設(shè)該課程,但在我們卻在選課表中想憑空錄入成績(jī)是不可能的,就會(huì)導(dǎo)致錯(cuò)誤(數(shù)據(jù)不一致)。
用戶自定義完整性主要是指指明表中屬性的取值范圍(域),避免屬性的取值與應(yīng)用語(yǔ)義矛盾,例如性別取值非男即女,不能是其他。
“科學(xué)思維不僅是一切科學(xué)研究和技術(shù)發(fā)展的起點(diǎn),而且始終貫穿于科學(xué)研究和技術(shù)發(fā)展的全過程,是創(chuàng)新的靈魂”[6]。在計(jì)算機(jī)科學(xué)技術(shù)持續(xù)迅猛發(fā)展的今天,數(shù)據(jù)庫(kù)原理的重要作用顯然。而在素質(zhì)教育的今天,學(xué)生的能力培養(yǎng)尤為重要,在學(xué)生離開母校 N年之后,他或許已經(jīng)想不起在學(xué)校學(xué)過的ABCD,但只要他的計(jì)算思維能力(科學(xué)思維能力的一種)存在,那么就是我們的最大的成功。
圖1.學(xué)生課程ER圖
[1]陳國(guó)良,童榮勝.計(jì)算思維與大學(xué)生計(jì)算機(jī)基礎(chǔ)教育[J].中國(guó)大學(xué)教學(xué),2011,(1).
[2]董榮勝.計(jì)算機(jī)科學(xué)導(dǎo)論——思想與方法[M].北京:高等教育出版社,2007,(9).
[3]董榮勝,古天龍.計(jì)算思維與計(jì)算機(jī)方法論[J].計(jì)算機(jī)科學(xué),2009,36(1):1-4.
[4]何玉潔.數(shù)據(jù)庫(kù)原理與應(yīng)用教程[M].北京:機(jī)械工業(yè)出版社,2013,(6).
[5]王珊,薩師煊.數(shù)據(jù)庫(kù)系統(tǒng)概論[M].北京:高等教育出版社,2006,(5).
[6]科技部,等.關(guān)于創(chuàng)新方法工作的若干意見[EB/OL].http://www.gdstc.gov.cn.
湖南科技學(xué)院學(xué)報(bào)2014年10期