李艷玲
(長(zhǎng)治學(xué)院 計(jì)算機(jī)系,山西 長(zhǎng)治 046011)
“Access”是一門(mén)實(shí)踐性很強(qiáng)的計(jì)算機(jī)課程,是國(guó)內(nèi)多數(shù)高校非計(jì)算機(jī)專(zhuān)業(yè)的公共基礎(chǔ)課,也是全國(guó)計(jì)算機(jī)等級(jí)考試的科目之一,相當(dāng)一部分學(xué)生們有濃厚的學(xué)習(xí)愿望[1]。如何設(shè)計(jì)新型實(shí)驗(yàn)?zāi)J?,培養(yǎng)學(xué)生的學(xué)習(xí)興趣是值得思索的問(wèn)題。
在長(zhǎng)治學(xué)院理科類(lèi)非計(jì)算機(jī)專(zhuān)業(yè)的Access教學(xué)中,我們嘗試一系列改革,引入了新的實(shí)驗(yàn)設(shè)計(jì)案例,提高學(xué)生的動(dòng)手能力和分析問(wèn)題的能力,提升學(xué)生的自信心和成就感。
根據(jù)瑞士心理學(xué)家皮亞杰認(rèn)知發(fā)展理論的教學(xué)觀,錯(cuò)誤是有意義的學(xué)習(xí)所必需的。在Access教學(xué)過(guò)程中,運(yùn)行有錯(cuò)誤的實(shí)例,提出“為什么?”,然后解決問(wèn)題,告訴學(xué)生“不能這樣做”[2]。反面案例的設(shè)置幫助學(xué)生積累經(jīng)驗(yàn)教訓(xùn),加深印象,做實(shí)驗(yàn)時(shí)少走彎路,從而起到事半功倍的效果。
講解參照完整性與表之間的關(guān)聯(lián)時(shí),巧妙運(yùn)用反例提高學(xué)生解決問(wèn)題的能力。實(shí)際上數(shù)據(jù)庫(kù)中的每個(gè)表之間是相互獨(dú)立存在的。只有通過(guò)某些字段,才能在表與表之間建立關(guān)系,參照完整性則是數(shù)據(jù)表之間聯(lián)系的規(guī)則。Access使用參照完整性確保相關(guān)表中記錄之間關(guān)系的有效性,防止意外刪除或更改相關(guān)數(shù)據(jù)。筆者通過(guò)學(xué)生管理數(shù)據(jù)庫(kù)講授參照完整性包括的兩方面內(nèi)容:
(1)子表中不能增加主表里沒(méi)有的記錄。
即成績(jī)表中不能出現(xiàn)學(xué)生表里沒(méi)有的學(xué)生,教學(xué)中可以設(shè)置反例說(shuō)明該規(guī)則。在學(xué)生表和成績(jī)表之間建立一對(duì)多的關(guān)系,“學(xué)生”表的學(xué)號(hào)字段已設(shè)置為主鍵。我們?cè)诔煽?jī)表中輸入一條記錄:“07403202,04,99,T03”,該學(xué)生信息在作為主表的學(xué)生中不存在,表內(nèi)容如圖1所示。
圖1 學(xué)生表和成績(jī)表內(nèi)容
當(dāng)我們實(shí)施學(xué)生表和成績(jī)表的參照完整性約束時(shí),系統(tǒng)提示不能實(shí)施參照完整性,如圖2所示。此時(shí),教師啟發(fā)學(xué)生思考:第一,參照完整性約束規(guī)則對(duì)父表和子表的要求是什么?讓學(xué)生理解父表中沒(méi)有的記錄,子表是不能添加的,也就是兩個(gè)表中不能出現(xiàn)“學(xué)號(hào)”不相等的記錄。第二,哪條記錄不符合參照完整性約束?通過(guò)引導(dǎo),多數(shù)學(xué)生能找出學(xué)號(hào)為“07403202”的學(xué)生記錄在父表中是不存在的。第三,如何解決才能正確建立這個(gè)關(guān)系?當(dāng)然是在“學(xué)生表”中增加或者在“成績(jī)表”中刪除或修改該記錄。
圖2 不能實(shí)施參照完整性反例
(2)父表中不能刪除建立了參照完整性的子表內(nèi)容。
我們已正確建立“學(xué)生表”和“成績(jī)表”的參照完整性規(guī)則,教學(xué)中設(shè)計(jì)的反例是刪除學(xué)生表中“07403201,白華,女,英語(yǔ)0702,陜西,團(tuán)員,1996/4/16”的記錄。系統(tǒng)提示不能“刪除或改變?cè)撚涗洝?,如圖3所示。原因是“成績(jī)表”中包含了“學(xué)生表”的相關(guān)記錄,不能刪除或更改。然后引導(dǎo)學(xué)生通過(guò)勾選“級(jí)聯(lián)刪除”解決問(wèn)題,當(dāng)選中“級(jí)聯(lián)刪除復(fù)選框”時(shí),刪除父表中的記錄,Access將自動(dòng)刪除相關(guān)表的相關(guān)記錄。最后再引出對(duì)于另一個(gè)復(fù)選框“級(jí)聯(lián)更新”的講解,加深學(xué)生對(duì)“參照完整性”、“級(jí)聯(lián)更新”和“級(jí)聯(lián)刪除”的理解和認(rèn)識(shí)。
圖3 不能刪除記錄反例
數(shù)據(jù)查詢(xún)是數(shù)據(jù)庫(kù)的核心操作,SQL語(yǔ)言提供了SELECT語(yǔ)句進(jìn)行數(shù)據(jù)查詢(xún),該語(yǔ)句是SQL語(yǔ)言的核心,功能強(qiáng)、變化形式多[3]。SQL可以通過(guò)合計(jì)函數(shù)進(jìn)行分組計(jì)算查詢(xún),我們可以從學(xué)生、成績(jī)兩個(gè)表中查詢(xún)每個(gè)學(xué)生的學(xué)號(hào)、姓名和總分信息。學(xué)生可以很容易說(shuō)出相應(yīng)的SQL語(yǔ)句:SELECT學(xué)生.學(xué)號(hào),姓名,sum(成績(jī))AS總分FROM學(xué)生 INNER JOIN成績(jī) ON學(xué)生.學(xué)號(hào)=成績(jī).學(xué)號(hào) GROUP BY學(xué)生.學(xué)號(hào)。但是,系統(tǒng)提示"查詢(xún)中不包含作為合計(jì)函數(shù)一部分的特定表達(dá)式'姓名'"。在出現(xiàn)警告信息后,引導(dǎo)學(xué)生觀察哪里出現(xiàn)錯(cuò)誤了,應(yīng)該怎樣改正。
接下來(lái)教師可以重新強(qiáng)調(diào)一下分組查詢(xún)要注意的地方,當(dāng)我們采用GROUP BY短語(yǔ)按某字段進(jìn)行分組查詢(xún)時(shí),輸出選項(xiàng)中除了可以包含分組字段外,其他輸出選項(xiàng)必須是合計(jì)函數(shù)或含有合計(jì)函數(shù)的計(jì)算字段。學(xué)生就會(huì)理解SELECT后的'姓名'既不是分組字段,也沒(méi)有包含合計(jì)函數(shù),所以會(huì)出錯(cuò)。最后啟發(fā)學(xué)生輸出選項(xiàng)中的姓名換為合計(jì)函數(shù)FIRST(姓名)AS姓名或者按學(xué)號(hào)姓名分組,將其改為:GROUP BY 學(xué)生,學(xué)號(hào),姓名。
表達(dá)式的應(yīng)用是學(xué)習(xí)Access過(guò)程中的一個(gè)難點(diǎn)。它不僅用于查詢(xún)和篩選準(zhǔn)則,還用于有效性規(guī)則以及其他計(jì)算,由字段名、常量、運(yùn)算符和函數(shù)按規(guī)則組合而成,以產(chǎn)生某種運(yùn)算結(jié)果。盡管在所有的教材中,對(duì)表達(dá)式的描述篇幅都不長(zhǎng),但是表達(dá)式的應(yīng)用貫穿于整個(gè)Access的學(xué)習(xí)過(guò)程,學(xué)好它是掌握Access知識(shí)的關(guān)鍵。
而傳統(tǒng)的教學(xué)方法對(duì)學(xué)生完成“表達(dá)式實(shí)驗(yàn)”并不理想,抽象的常量、函數(shù)、運(yùn)算符等運(yùn)算對(duì)象的講解不夠直觀,學(xué)生感覺(jué)枯燥,影響教學(xué)效果。我們把表達(dá)式的講授安排在SQL部分,化抽象為形象,提高學(xué)生的實(shí)驗(yàn)興趣,實(shí)踐證實(shí)這是一種高效的學(xué)習(xí)方式。
在Access中,可以應(yīng)用SQL語(yǔ)句來(lái)實(shí)現(xiàn)數(shù)據(jù)的查詢(xún)與管理。建立表結(jié)構(gòu)語(yǔ)句是CREAT TABLE,SQL數(shù)據(jù)查詢(xún)可以通過(guò)SELECT語(yǔ)句實(shí)現(xiàn)。SELECT語(yǔ)句中包含的子句很多,其語(yǔ)句格式為:Select<輸出選項(xiàng)>From<數(shù)據(jù)來(lái)源表>[Where<篩選條件>][Group by<分組項(xiàng)目>[having<分組篩選條件>]][Order by<排序項(xiàng)目>]。我們?cè)诰毩?xí)表達(dá)式時(shí)將其簡(jiǎn)化為Select<表達(dá)式>[From<表名>]。當(dāng)表達(dá)式與表記錄無(wú)關(guān)時(shí),省略方括號(hào)中的缺省項(xiàng)。我們可以用如圖4所示實(shí)例說(shuō)明各種不同數(shù)據(jù)類(lèi)型,利用SELECT語(yǔ)句直觀形象,對(duì)結(jié)果的顯示也是一目了然。同樣的方法可以運(yùn)用在學(xué)生練習(xí)數(shù)學(xué)表達(dá)式中,通過(guò)SQL求解一元二次方程的根。首先創(chuàng)建“abc”表,其中包括a,b,c三個(gè)字段,均為雙精度f(wàn)loat類(lèi)型,表結(jié)構(gòu)如圖5所示。此時(shí)的表達(dá)式與表相關(guān),用“SELECT-FROM”結(jié)構(gòu)顯示所有方程的根,如圖5所示。
圖4 數(shù)據(jù)類(lèi)型實(shí)例
圖5 求解方程實(shí)根
通過(guò)新方法的嘗試,筆乾在指導(dǎo)學(xué)生實(shí)驗(yàn)的過(guò)程中,明顯感覺(jué)到學(xué)生的錯(cuò)誤減少了,在面對(duì)問(wèn)題時(shí)可以自己動(dòng)手解決,并能拓寬所學(xué)的知識(shí)面。結(jié)果表明,上機(jī)時(shí)很少有學(xué)生出現(xiàn)玩游戲、看視頻等行為,所以科學(xué)設(shè)置實(shí)驗(yàn)方案,能極大地激發(fā)學(xué)生的學(xué)習(xí)興趣,將學(xué)生引導(dǎo)到正確的軌道[4][5]。
[1]高翔.任務(wù)驅(qū)動(dòng)法在“Access 數(shù)據(jù)庫(kù)技術(shù)”教學(xué)中的實(shí)踐[J].計(jì)算機(jī)教育,2009,(23):139-141.
[2]從反面案例談學(xué)生解決問(wèn)題能力的培養(yǎng)-以程序設(shè)計(jì)基礎(chǔ)Access課程為例[J].計(jì)算機(jī)教育,2013,12(22):12-15.
[3]馬桂芳等.數(shù)據(jù)庫(kù)技術(shù)及應(yīng)用(Access)[M].北京:人民郵電出版社,2013.
[4]萬(wàn)華,常珊,涂淑琴.數(shù)據(jù)庫(kù)“Access”實(shí)驗(yàn)教學(xué)改革與實(shí)踐[J].中國(guó)電力教育,2013,(31):145-147.
[5]劉義良.計(jì)算機(jī)實(shí)驗(yàn)教學(xué)課堂行為管理的實(shí)踐及應(yīng)用[J].實(shí)驗(yàn)室研究與探索,2011,30(20):170-172.