黃欣
摘要:針對(duì)目前數(shù)據(jù)庫(kù)課程中教學(xué)案例選取存在的問(wèn)題,分析和研究了國(guó)內(nèi)主流數(shù)據(jù)庫(kù)課程教材中所設(shè)計(jì)的案例數(shù)據(jù)庫(kù),提出以論壇數(shù)據(jù)庫(kù)“simpleforumdb”作為課程的教學(xué)和實(shí)驗(yàn)案例數(shù)據(jù)庫(kù),并給出該案例數(shù)據(jù)庫(kù)的詳細(xì)設(shè)計(jì)。
關(guān)鍵詞:數(shù)據(jù)庫(kù);課程教學(xué);案例數(shù)據(jù)庫(kù)設(shè)計(jì)
中圖分類(lèi)號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2015)31-0001-02
Optimal Design of Case Database in Database Course Teaching
HUANG Xin
(Jiaxing Technician College Department of Trade and Tourism,Jiaxing 314036, China)
Abstract:Aiming at the problem of selecting the teaching cases in, we analysis and research the case database designed int the domestic and mainstream textbook of database course. We propose a forum database named “simpleforumdb” as teaching and laboratorial case, and the detailed design of this database is given at the mean time.
Key words:database;course teaching;case database design
數(shù)據(jù)庫(kù)技術(shù)是現(xiàn)代IT技術(shù)的重要支撐技術(shù),是構(gòu)建各類(lèi)信息系統(tǒng)與應(yīng)用系統(tǒng)的核心技術(shù)和重要基礎(chǔ)[1]。教育部的相關(guān)文件指出“當(dāng)代大學(xué)生應(yīng)具備利用數(shù)據(jù)庫(kù)技術(shù)對(duì)信息進(jìn)行管理、加工和處理的意識(shí)與能力,用以解決本專(zhuān)業(yè)領(lǐng)域中的問(wèn)題的能力”[2]。
國(guó)內(nèi)主流數(shù)據(jù)庫(kù)課程教材在組織內(nèi)容時(shí),雖然有的側(cè)重?cái)?shù)據(jù)庫(kù)實(shí)現(xiàn)原理的介紹,有的以某一數(shù)據(jù)庫(kù)管理系統(tǒng)(如Oracle、MySQL等)為平臺(tái)介紹數(shù)據(jù)庫(kù)技術(shù)的應(yīng)用,有的兼顧理論和技術(shù),但無(wú)一例外都引入了一個(gè)或多個(gè)數(shù)據(jù)庫(kù)教學(xué)項(xiàng)目作為貫穿全書(shū)各章節(jié)、演示數(shù)據(jù)庫(kù)關(guān)鍵概念和技術(shù)的案例。許多在教學(xué)中廣泛使用的案例數(shù)據(jù)庫(kù)較為簡(jiǎn)單,與實(shí)際工程項(xiàng)目相差較大,不能很好地覆蓋數(shù)據(jù)庫(kù)課程所有知識(shí)點(diǎn),導(dǎo)致學(xué)生在未來(lái)工作中遇到實(shí)際項(xiàng)目時(shí)無(wú)法快速上手。如何設(shè)計(jì)合理的教學(xué)案例數(shù)據(jù)庫(kù)已成為數(shù)據(jù)庫(kù)課程教學(xué)亟待解決的重要課題。
1 主流數(shù)據(jù)庫(kù)課程教材使用的案例數(shù)據(jù)庫(kù)分析
下面從本專(zhuān)科兩個(gè)教學(xué)層次,選取兩本主流數(shù)據(jù)庫(kù)課程教材中引入的案例數(shù)據(jù)庫(kù)加以分析各自的優(yōu)點(diǎn)和不足。
1.1 圖書(shū)管理系統(tǒng)數(shù)據(jù)庫(kù)
由南京師范大學(xué)鄭阿奇教授主編的數(shù)據(jù)庫(kù)課程系列教材被列為普通高等學(xué)校國(guó)家級(jí)規(guī)劃教材,在職業(yè)院校和應(yīng)用型本科院校的數(shù)據(jù)庫(kù)課程教學(xué)中廣泛使用。該教材以圖書(shū)管理系統(tǒng)數(shù)據(jù)庫(kù)作為教學(xué)案例[3]。
1.1.1 圖書(shū)管理系統(tǒng)數(shù)據(jù)庫(kù)邏輯結(jié)構(gòu)
圖書(shū)管理系統(tǒng)數(shù)據(jù)庫(kù)的邏輯結(jié)構(gòu)[3]如下:
1)管理員表:Administrator(角色名,密碼,備注)
2)讀者表:TReader(借書(shū)證號(hào),密碼,姓名,性別,出生時(shí)間,專(zhuān)業(yè),借書(shū)量,照片,備注,聯(lián)系方式)
3)圖書(shū)表:TBook(ISBN,書(shū)名,作譯者,出版社,出版年月,價(jià)格,復(fù)本量,庫(kù)存量,分類(lèi)號(hào),內(nèi)容提要,封面照片)
4)借閱表:TLend(借書(shū)證號(hào),ISBN,圖書(shū)ID,借書(shū)時(shí)間,應(yīng)還時(shí)間)
5)還書(shū)表:HLend(編號(hào),借書(shū)證號(hào),ISBN,圖書(shū)ID,借書(shū)時(shí)間,還書(shū)時(shí)間)
6)借出表:TBLend(圖書(shū)ID,ISBN,是否借出)
1.1.2 圖書(shū)管理系統(tǒng)數(shù)據(jù)庫(kù)設(shè)計(jì)分析
優(yōu)點(diǎn):圖書(shū)管理系統(tǒng)數(shù)據(jù)庫(kù)設(shè)計(jì)較為完整,學(xué)習(xí)者不難結(jié)合其他程序設(shè)計(jì)語(yǔ)言(如C#、JSP、ASP.NET等)構(gòu)造出一個(gè)實(shí)用的數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)作為課程設(shè)計(jì)。另外,該案例數(shù)據(jù)庫(kù)的屬性較為豐富,可涵蓋SQL語(yǔ)言的主要數(shù)據(jù)類(lèi)型。
不足:第一,可能是為了方便數(shù)據(jù)查詢(xún),圖書(shū)管理系統(tǒng)數(shù)據(jù)庫(kù)設(shè)計(jì)上存在不規(guī)范問(wèn)題:部分表沒(méi)有達(dá)到3NF的規(guī)范化要求。例如在借閱表TLend中,存在非主屬性ISBN對(duì)碼(借書(shū)證號(hào), 圖書(shū)ID , 借書(shū)時(shí)間)的部分函數(shù)依賴(lài)[4]。還書(shū)表HLend也存在類(lèi)似問(wèn)題。改進(jìn)的方法是從借閱表TLend和還書(shū)表HLend中去除屬性ISBN,同時(shí)在TLend中加入“編號(hào)”屬性作為該表的主碼。第二,圖書(shū)管理系統(tǒng)數(shù)據(jù)庫(kù)的設(shè)計(jì)存在冗余問(wèn)題,部分屬性屬于冗余屬性,可以從相關(guān)表中去除[4]。例如圖書(shū)表TBook中每本書(shū)的“復(fù)本量”和“庫(kù)存量”可通過(guò)對(duì)借出表TBLend中相關(guān)記錄進(jìn)行聚集函數(shù)查詢(xún)(使用函數(shù)count)得到,所以這兩個(gè)屬性應(yīng)該從圖書(shū)表Tbook中去除(如果存在,為了維護(hù)數(shù)據(jù)完整性系統(tǒng)將付出很大的性能代價(jià))。第三,和企業(yè)實(shí)際工程項(xiàng)目相比,圖書(shū)管理系統(tǒng)數(shù)據(jù)庫(kù)略顯簡(jiǎn)單。
1.2 學(xué)生選課數(shù)據(jù)庫(kù)
由中國(guó)人民大學(xué)王珊和薩師煊兩位教授編著的《數(shù)據(jù)庫(kù)系統(tǒng)概論》一書(shū)引入的案例數(shù)據(jù)庫(kù)——學(xué)生選課數(shù)據(jù)庫(kù)在國(guó)內(nèi)多數(shù)本科院校授課時(shí)廣泛采用[5]。《數(shù)據(jù)庫(kù)系統(tǒng)概論》也是國(guó)內(nèi)第一部介紹數(shù)據(jù)庫(kù)的教材,一直被國(guó)內(nèi)大多數(shù)本科院校作為課程教材和主要教學(xué)參考書(shū)。
1.2.1 學(xué)生選課數(shù)據(jù)庫(kù)邏輯結(jié)構(gòu)
學(xué)生選課數(shù)據(jù)庫(kù)的邏輯結(jié)構(gòu)[5]如下:
1)學(xué)生表:Student(Sno,Sname,Ssex,Sage,Sdept),其中屬性Sno表示學(xué)號(hào),Sname表示學(xué)生姓名,Ssex表示學(xué)生性別,Sage表示學(xué)生年齡,Sdept表示學(xué)生所在系。
2)課程表:課程表Course(Cno,Cname,Cpno,Ccredit),其中屬性Cno表示課程號(hào),Cname表示課程名,Cpno表示先修課程的課程號(hào),Ccredit表示課程學(xué)分。
3)選課表:選課表SC(Sno,Cno,Grade),其中屬性Grade表示選課成績(jī)。
1.2.2 學(xué)生選課數(shù)據(jù)庫(kù)設(shè)計(jì)分析
優(yōu)點(diǎn):學(xué)生選課數(shù)據(jù)庫(kù)由學(xué)生表Student,課程表Course和選課表SC構(gòu)成。該案例數(shù)據(jù)庫(kù)設(shè)計(jì)相當(dāng)簡(jiǎn)潔且符合關(guān)系規(guī)范化要求,因而在國(guó)內(nèi)數(shù)據(jù)庫(kù)課程教學(xué)中廣泛采用。
不足:第一,由于組成數(shù)據(jù)庫(kù)的表的數(shù)量較少,屬性定義不能完全涵蓋SQL語(yǔ)言的主要數(shù)據(jù)類(lèi)型(如在定義學(xué)生選課數(shù)據(jù)庫(kù)的表時(shí)無(wú)法使用日期時(shí)間類(lèi)型)。第二,學(xué)生表Student的屬性Sage是派生屬性,應(yīng)改為Sbirthdate(學(xué)生出生日期)較為合理,且可在定義時(shí)使用日期時(shí)間類(lèi)型。第三,相比企業(yè)實(shí)際工程項(xiàng)目,學(xué)生選課數(shù)據(jù)庫(kù)過(guò)于簡(jiǎn)單。教師在講授復(fù)雜查詢(xún)技術(shù)、存儲(chǔ)過(guò)程、觸發(fā)器等內(nèi)容時(shí),設(shè)計(jì)例題會(huì)比較勉強(qiáng),無(wú)法設(shè)計(jì)出實(shí)用性強(qiáng)的例題(有時(shí)僅僅為了說(shuō)明相關(guān)理論或技術(shù)而舉例,無(wú)法讓學(xué)生理解該理論或技術(shù)的實(shí)際價(jià)值)。
2 案例數(shù)據(jù)庫(kù)的優(yōu)化設(shè)計(jì)
2.1 設(shè)計(jì)良好的案例數(shù)據(jù)庫(kù)應(yīng)滿(mǎn)足的條件
基于前面對(duì)主流數(shù)據(jù)庫(kù)課程教材中引入的案例數(shù)據(jù)庫(kù)的分析,我們認(rèn)為一個(gè)設(shè)計(jì)合理、實(shí)用、新穎,具有較高教學(xué)價(jià)值的案例數(shù)據(jù)庫(kù)應(yīng)該滿(mǎn)足:
1) 案例數(shù)據(jù)庫(kù)應(yīng)來(lái)源于真實(shí)工程項(xiàng)目或?qū)?shí)際項(xiàng)目進(jìn)行簡(jiǎn)化,具有一定的實(shí)用性、啟發(fā)性和創(chuàng)新性,能完整貫穿數(shù)據(jù)庫(kù)課程主要知識(shí)點(diǎn),對(duì)學(xué)生進(jìn)行數(shù)據(jù)庫(kù)知識(shí)學(xué)習(xí)和技能訓(xùn)練起到良好的輔助效果[6]。
2) 案例數(shù)據(jù)庫(kù)的所有數(shù)據(jù)表應(yīng)符合關(guān)系規(guī)范化要求,所有數(shù)據(jù)表均應(yīng)達(dá)到3NF甚至BCNF。
3) 案例數(shù)據(jù)庫(kù)的數(shù)據(jù)表數(shù)量應(yīng)當(dāng)在5~6個(gè)最為適宜。實(shí)踐教學(xué)表明,如果案例數(shù)據(jù)庫(kù)中表的數(shù)量太多,對(duì)于初學(xué)者而言,在學(xué)習(xí)多表連接查詢(xún)或嵌套查詢(xún)時(shí)會(huì)有一定的干擾;表的數(shù)量太少,在講授存儲(chǔ)過(guò)程、觸發(fā)器等內(nèi)容時(shí),教師不易設(shè)計(jì)例題。
4) 構(gòu)成案例數(shù)據(jù)庫(kù)的數(shù)據(jù)表中應(yīng)包含較多的屬性,這樣才能涵蓋SQL語(yǔ)言的主要數(shù)據(jù)類(lèi)型,以便讓學(xué)生接觸和理解各種數(shù)據(jù)類(lèi)型的使用方法。畢竟對(duì)于任何程序設(shè)計(jì)語(yǔ)言而言,數(shù)據(jù)類(lèi)型始終是最基礎(chǔ)、最重要的教學(xué)內(nèi)容之一。
5) 案例數(shù)據(jù)庫(kù)的記錄數(shù)量要達(dá)到一定規(guī)模,以便能更好地滿(mǎn)足教學(xué)和實(shí)驗(yàn)的需求。
2.2 論壇數(shù)據(jù)庫(kù)“simpleforumdb”
論壇模塊是各類(lèi)網(wǎng)站中必備的模塊之一[7],也是學(xué)習(xí)各種程序設(shè)計(jì)語(yǔ)言最理想的入門(mén)項(xiàng)目。我們?cè)趯?duì)“嘉興人網(wǎng)”、“天涯”等典型論壇結(jié)構(gòu)分析的基礎(chǔ)上,設(shè)計(jì)出論壇數(shù)據(jù)庫(kù)“simpleforumdb”項(xiàng)目作為課程的案例數(shù)據(jù)庫(kù)。該案例數(shù)據(jù)庫(kù)具有很好的工程項(xiàng)目背景且符合前文提到的設(shè)計(jì)良好的案例數(shù)據(jù)庫(kù)應(yīng)滿(mǎn)足的條件,可用于實(shí)際項(xiàng)目(或?qū)ζ渖约痈脑欤8]。論壇數(shù)據(jù)庫(kù)“simpleforumdb”的邏輯結(jié)構(gòu)如下:
1) 用戶(hù)等級(jí)表:rank(rankno, rankname, minimumintegral),其中屬性rankno表示等級(jí)編號(hào),屬性rankname表示等級(jí)名稱(chēng),屬性minimumintegral表示達(dá)到某級(jí)別的最低積分。
2) 用戶(hù)表:user(username,emailaddress, password, registerdate, integral, userrank, status, lastactivetime, lastenunciabletime),其中屬性u(píng)sername表示用戶(hù)名,屬性emailaddress表示電子郵箱地址,屬性password表示密碼,屬性registerdate表示注冊(cè)日期,屬性integral表示用戶(hù)積分,屬性u(píng)serrank表示用戶(hù)等級(jí),屬性status表示狀態(tài)(是否在線(xiàn)),屬性lastactivetime表示上次活躍時(shí)間,屬性lastenunciabletime表示上次發(fā)表時(shí)間。
3) 版塊表:column(columnid, columnname, moderator, columndescription, parentcolumnid),其中屬性columnid表示版塊編號(hào),屬性columnname表示版塊名稱(chēng),屬性moderator表示版主的用戶(hù)名,屬性columndescription表示版塊說(shuō)明,屬性parentcolumnid表示父版塊編號(hào)。
4) 主帖表:mainpost(mainpostid, belongedcolumnid, poster, title, content, posttime, clickrate),屬性mainpostid表示主帖編號(hào),屬性belongedcolumnid表示主帖所屬版塊編號(hào),屬性poster表示發(fā)表主帖用戶(hù)的用戶(hù)名,屬性title表示主帖標(biāo)題,屬性content表示主帖內(nèi)容,屬性posttime表示發(fā)帖時(shí)間,屬性clickrate表示點(diǎn)擊率。
5) 跟帖表:replypost(replypostid, belongedmainpostid, replyer, replycontent, replytime),屬性replypostid表示跟帖編號(hào),屬性belongedmainpostid表示跟帖所回復(fù)的主帖編號(hào),屬性replyer表示回復(fù)用戶(hù)的用戶(hù)名,屬性replycontent表示回復(fù)內(nèi)容,屬性replytime表示回復(fù)時(shí)間。
3 結(jié)束語(yǔ)
通過(guò)對(duì)現(xiàn)有的國(guó)內(nèi)主流數(shù)據(jù)庫(kù)教材中引入的案例數(shù)據(jù)庫(kù)進(jìn)行比較分析,我們?cè)O(shè)計(jì)了具有較強(qiáng)工程背景和較高教學(xué)價(jià)值的案例數(shù)據(jù)庫(kù)——論壇數(shù)據(jù)庫(kù)“simpleforumdb”,以取代傳統(tǒng)的圖書(shū)管理系統(tǒng)數(shù)據(jù)庫(kù)和學(xué)生選課數(shù)據(jù)庫(kù),用于數(shù)據(jù)庫(kù)課程教學(xué)和實(shí)驗(yàn)教學(xué)。實(shí)踐表明,教學(xué)案例數(shù)據(jù)庫(kù)的優(yōu)化設(shè)計(jì)對(duì)于改善教學(xué)效果,提高學(xué)生實(shí)踐能力,培養(yǎng)學(xué)生的創(chuàng)新精神起到重要作用,最大限度地滿(mǎn)足了教師教學(xué)和學(xué)生實(shí)驗(yàn)的需求。
參考文獻(xiàn):
[1] 朱敏.SQL Server課程教學(xué)方法探究[J].新課程·中旬, 2014, 5(1): 96-97.
[2] 教育部高等學(xué)校非計(jì)算機(jī)專(zhuān)業(yè)計(jì)算機(jī)基礎(chǔ)課程教學(xué)指導(dǎo)分委員會(huì).關(guān)于進(jìn)一步加強(qiáng)高校計(jì)算機(jī)基礎(chǔ)教學(xué)的基點(diǎn)意見(jiàn)[M].北京: 高等教育出版社, 2004.
[3] 鄭阿奇.SQL Server 2008應(yīng)用實(shí)踐教程[M].北京: 電子工業(yè)出版社, 2010:14-21.
[4] 西爾伯沙茨(Silberschatz A.)等著,數(shù)據(jù)庫(kù)系統(tǒng)概論(原書(shū)第6版)[M]. 楊冬青,等,譯.北京:機(jī)械工業(yè)出版社,2012:184-189.
[5] 薩師煊,王珊.數(shù)據(jù)庫(kù)系統(tǒng)概論[M]. 4版.北京: 高等教育出版社, 2006:28-33.
[6] 張歡枝.案例教學(xué)法在SQL Server數(shù)據(jù)庫(kù)教學(xué)中的運(yùn)用研究[J].計(jì)算機(jī)光盤(pán)軟件與應(yīng)用,2013,2:270.
[7] 付逍遙.基于SSH架構(gòu)的論壇系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].福建電腦, 2015, 7: 107.
[8] 胡秉璽.網(wǎng)上論壇系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[D].西安電子科技大學(xué),2014:10-20.