張旭東,楊鵬斐
(蘭州財(cái)經(jīng)大學(xué)信息工程學(xué)院,甘肅 蘭州 730000)
數(shù)據(jù)庫(kù)原理課程是信息管理類(lèi)專(zhuān)業(yè)的核心課程,學(xué)生人數(shù)較多,對(duì)在線考試需求比較迫切。隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展,B/S結(jié)構(gòu)的在線考試系統(tǒng)已經(jīng)在高校的部分課程中得到應(yīng)用,如計(jì)算機(jī)基礎(chǔ)、C語(yǔ)言、數(shù)據(jù)庫(kù)基礎(chǔ)等課程,對(duì)通用考試系統(tǒng)的研究從未停止[1-3],但數(shù)據(jù)庫(kù)課程內(nèi)容和考核方式的不同,考試系統(tǒng)的研究和設(shè)計(jì)仍停留在客觀題方面,主觀題方面的由于以簡(jiǎn)答和論述題目以文字的方式呈現(xiàn)答案,數(shù)理類(lèi)課程以字符和采用字符的邏輯推理為參考答案,計(jì)算機(jī)和信息管理類(lèi)課程以圖表或程序的方式呈現(xiàn)[4],對(duì)主觀題自動(dòng)考試和閱卷研究和系統(tǒng),目前基本采用半自動(dòng)化設(shè)定評(píng)分項(xiàng)、由教師在線評(píng)分的半自動(dòng)化閱卷方式[5]。
文章以數(shù)據(jù)庫(kù)原理課程的在線考試和自動(dòng)閱卷為背景,研究數(shù)據(jù)庫(kù)原來(lái)在線考試系統(tǒng)的核心功能。以SQL語(yǔ)句、E-R圖關(guān)系代數(shù)和關(guān)系規(guī)范化四類(lèi)主觀題型的在線考試和閱卷為核心,提出實(shí)現(xiàn)數(shù)據(jù)原理課程在線考試系統(tǒng)的核心功能設(shè)計(jì)和實(shí)現(xiàn)方法。
國(guó)外大量應(yīng)用了軟件系統(tǒng)進(jìn)行考試。Gerard Salton在提出的向量空間模型用于分析簡(jiǎn)答問(wèn)題中的英文文本相似度[6,7]。Vladimir Oleshchuk 等人提出了文本相似度計(jì)算方法,Carbone II等人提出的最大邊緣相關(guān)方法,這些算法作為填空、名詞解釋和簡(jiǎn)答題型的閱卷算法[8]。在線考試系統(tǒng)的研究主要集中在詞法分析、語(yǔ)法分析、語(yǔ)義推斷方面[9,10]。
國(guó)內(nèi)在在線考試系統(tǒng)方面的研究成果很多,但在數(shù)據(jù)庫(kù)原理考試系統(tǒng)的研究成果較少。在商用考試系統(tǒng)方面萬(wàn)維捷通[11]研發(fā)的在線考試系統(tǒng)對(duì)于數(shù)據(jù)庫(kù)基礎(chǔ)課程的考試只支持圖形化界面的SQL執(zhí)行和閱卷。清華泰豪網(wǎng)絡(luò)考試系統(tǒng)具有一定的代表性,該系統(tǒng)幾乎覆蓋了教學(xué)考試過(guò)程的各大環(huán)節(jié),是一個(gè)功能完善的輔助教學(xué)系統(tǒng),其主要功能有題庫(kù)創(chuàng)建與管理、自動(dòng)組卷、在線練習(xí)、在線測(cè)試、自動(dòng)統(tǒng)計(jì)并分析成績(jī)數(shù)據(jù)等[12]。全國(guó)計(jì)算機(jī)等級(jí)考試系統(tǒng)中實(shí)現(xiàn)了MySQL中的SQL語(yǔ)句和E-R圖在線考試,但該系統(tǒng)沒(méi)有公開(kāi)。關(guān)系數(shù)據(jù)庫(kù)上機(jī)考試系統(tǒng)組卷算法的研究與探討[13]重點(diǎn)研究組卷,沒(méi)有體現(xiàn)出該課程核心內(nèi)容題型。關(guān)系數(shù)據(jù)庫(kù)上機(jī)考試系統(tǒng)[14]一文中僅對(duì)SQL語(yǔ)句類(lèi)題目的考試和閱卷進(jìn)行了探討,對(duì)于課程整體內(nèi)容的考試不具有全面性。數(shù)據(jù)庫(kù)原理無(wú)紙考試系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[15]一文中只總體設(shè)計(jì)了關(guān)系代數(shù)、SQL語(yǔ)言自動(dòng)評(píng)分的方法。ORACLE數(shù)據(jù)庫(kù)上機(jī)考試系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[16]中設(shè)計(jì)ORACLE數(shù)據(jù)庫(kù)考試的考試系統(tǒng),需要連接到數(shù)據(jù)庫(kù)管理工具進(jìn)行操作。數(shù)據(jù)庫(kù)原理課程在線評(píng)卷系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[17]參考編輯距離和VSM在自然語(yǔ)言文本處理上的應(yīng)用,重點(diǎn)在語(yǔ)法和詞法分析,在簡(jiǎn)答、SQL語(yǔ)句和關(guān)系規(guī)范化方面有一定的參考價(jià)值、但沒(méi)有考慮E-R圖。論文[18-20]設(shè)計(jì)了關(guān)系代數(shù)轉(zhuǎn)為SQL語(yǔ)句的在線教學(xué)系統(tǒng),無(wú)法用于在線考試。
現(xiàn)有研究成果和系統(tǒng)在在線考試過(guò)程中發(fā)揮了重要的作用,但研究?jī)?nèi)容或者只側(cè)重于系統(tǒng)的總體設(shè)計(jì),并未全部涵蓋數(shù)據(jù)庫(kù)概論課程考試的所有內(nèi)容。本文分析數(shù)據(jù)庫(kù)原理課程內(nèi)容的特殊性,設(shè)計(jì)并實(shí)現(xiàn)針對(duì)該課程中四種常見(jiàn)題型考試系統(tǒng)核心功能,并結(jié)合現(xiàn)有考試系統(tǒng)的優(yōu)點(diǎn)為數(shù)據(jù)庫(kù)原理課程提供較為全面的考核方法。
數(shù)據(jù)庫(kù)原理在線考試系統(tǒng)的設(shè)計(jì)中,系統(tǒng)中輔助性的功能在包括用戶管理、題目管理、組卷、評(píng)卷、考試過(guò)程管理、成績(jī)管理等功能,這些現(xiàn)有考試系統(tǒng)中較為常見(jiàn)的功能在此不再詳細(xì)介紹,以下僅設(shè)計(jì)SQL語(yǔ)句、關(guān)系代數(shù)、函數(shù)依賴和E-R圖中核心知識(shí)點(diǎn)的在線考試和閱卷功能,將對(duì)每個(gè)功能的設(shè)計(jì)分為題目設(shè)置、考試過(guò)程、自動(dòng)閱卷三部分展開(kāi),系統(tǒng)功能的設(shè)計(jì)選用ASP.NET和SQLServer。
SQL語(yǔ)句的是數(shù)據(jù)庫(kù)原理課程中核心內(nèi)容之一,每次考試中需要設(shè)計(jì)大量的題目考查學(xué)生對(duì)SQL的掌握情況。SQL語(yǔ)句分為數(shù)據(jù)定義、數(shù)據(jù)操縱、數(shù)據(jù)查詢和數(shù)據(jù)控制四種類(lèi)型你,本文主要對(duì)數(shù)據(jù)操縱、數(shù)據(jù)查詢兩種類(lèi)型的SQL語(yǔ)句設(shè)計(jì)考試功能。SQL語(yǔ)句正確性的判定分為兩步,分別是語(yǔ)法正確和執(zhí)行結(jié)果正確,語(yǔ)法的正確性采取語(yǔ)句合法性檢查,并提交到SQL語(yǔ)句到數(shù)據(jù)庫(kù)管理工具編譯獲取語(yǔ)法錯(cuò)誤,執(zhí)行結(jié)果的正確性通過(guò)比對(duì)實(shí)現(xiàn)。
SQL語(yǔ)句題目設(shè)置按照兩層樹(shù)結(jié)構(gòu),其中樹(shù)根節(jié)點(diǎn)為題目主題干,多個(gè)葉子節(jié)點(diǎn)中,每個(gè)葉子節(jié)點(diǎn)為一個(gè)SQL語(yǔ)句的問(wèn)題,每個(gè)問(wèn)題稱為子題目。根節(jié)點(diǎn)中的主題干包含對(duì)查詢目標(biāo)數(shù)據(jù)庫(kù)進(jìn)行描述和解釋?zhuān)约皠?chuàng)建該查詢目標(biāo)數(shù)據(jù)庫(kù)的SQL腳本。葉子節(jié)點(diǎn)中的子題目設(shè)定問(wèn)題的精確描述和該問(wèn)題對(duì)應(yīng)的答案。
SQL語(yǔ)句的考試過(guò)程是抽題和答題過(guò)程的結(jié)合。按照主題干個(gè)數(shù)和每個(gè)主題干包含的子題目數(shù)量進(jìn)行抽題,并設(shè)置每個(gè)子題目的分值。當(dāng)學(xué)生進(jìn)入該題目進(jìn)行考試時(shí),系統(tǒng)首先根據(jù)考試主題干中的SQL腳本創(chuàng)建臨時(shí)數(shù)據(jù)庫(kù),并為當(dāng)前考生授權(quán)使用該臨時(shí)數(shù)據(jù)庫(kù)的權(quán)限,考試過(guò)程中學(xué)生在文本框中提交答案,頁(yè)面中提示語(yǔ)法錯(cuò)誤和執(zhí)行結(jié)果。
算法1 SQL語(yǔ)句題閱卷輸入:題目Id,提交SQL-S,答案 SQL-A輸出:Score,Message 1:/*檢查SQL注入*/2:Pattern ("\b(and|exec|insert|select|...)\b|(\*|;|\+|'|%)")3:if(Pattern.IsMath(SQL-S))4:Return Message warning 5:/*編譯SQL獲取語(yǔ)法錯(cuò)誤*/6:SETPARSEONLY ON andexecS_SQLinDB 7:if(catch ex)8:Return Message ex.message 9:SETPARSEONLY OFF 10:/*執(zhí)行SQL比較結(jié)果,取得Score*/11:execSQL-S and SQL-A in DB 12:return Score compare(RS,RA)
提交后閱卷功能對(duì)SQL語(yǔ)句正確性的判斷有三個(gè)步驟,如算法1 SQL語(yǔ)句題閱卷算法所示,算法輸入有三個(gè)題目Id、提交的SQL語(yǔ)句S_SQL和正確答案SQL語(yǔ)句SQL-A(SQL-Answer)。首先用正則表達(dá)式檢查SQL-S(SQL-Student)語(yǔ)句語(yǔ)法的正確性。算法2-4行通過(guò)正則表達(dá)式匹配出SQL注入問(wèn)題,再次算法6-8行,通過(guò)SQL-S提交到數(shù)據(jù)庫(kù)執(zhí)行獲取語(yǔ)法錯(cuò)誤,SET PARSEONLY為ON時(shí)只檢查語(yǔ)法錯(cuò)誤,不實(shí)際執(zhí)行,獲取到的異常信息在ex中,并在系統(tǒng)中提示。如無(wú)語(yǔ)法錯(cuò)誤,則如算法11-12行所示,提交到數(shù)據(jù)庫(kù)中執(zhí)行SQL-S語(yǔ)句得到執(zhí)行結(jié)果RS,執(zhí)行SQL-A語(yǔ)句得到執(zhí)行結(jié)果RA,并將其RS在RA中按照逐行檢索的方式進(jìn)行比對(duì),如果結(jié)果一致則獲得該題目所對(duì)應(yīng)的分?jǐn)?shù)Score,上述閱卷過(guò)程中比對(duì)沒(méi)有完全一致,則該題目不得分。在比對(duì)過(guò)程中為保證閱卷結(jié)果的合理性,首先對(duì)兩個(gè)執(zhí)行結(jié)果中的表字段的集合進(jìn)行比對(duì),列的集合相等則繼續(xù)比對(duì)行,最后對(duì)執(zhí)行結(jié)果中元組進(jìn)行排序并逐行比對(duì),行的比對(duì)過(guò)程,將列排序后逐一展開(kāi)。
關(guān)系代數(shù)的學(xué)習(xí)和理解有助于學(xué)生理解和掌握關(guān)系數(shù)據(jù)庫(kù)的理論基礎(chǔ),從而將實(shí)踐內(nèi)容和數(shù)據(jù)理論知識(shí)聯(lián)系起來(lái)。數(shù)據(jù)庫(kù)原理課程中的關(guān)系代數(shù)主要是 6 種關(guān)系運(yùn)算,分別是并(∪)、交(∩)、差(-)、選擇(σ)、投影(∏)和自然連接用表示,關(guān)系運(yùn)算中還需要設(shè)計(jì)關(guān)系運(yùn)算符、邏輯運(yùn)算符、算數(shù)運(yùn)算符和表達(dá)式界定符,所有符號(hào)結(jié)合起來(lái)形成關(guān)系表達(dá)式錄入功能。
關(guān)系代數(shù)的考試功能設(shè)計(jì)分為題目和答案兩部分,題目中上傳待計(jì)算的關(guān)系和文字描述關(guān)系計(jì)算需求,正確答案按照?qǐng)D形界面設(shè)計(jì)的關(guān)系表達(dá)錄入系統(tǒng)并存儲(chǔ),關(guān)系表達(dá)式中的條件表達(dá)式和投影用“[]”符號(hào)標(biāo)記,操作界面中設(shè)計(jì)下標(biāo)開(kāi)始和結(jié)束標(biāo)記。錄入的答案將被轉(zhuǎn)換為關(guān)系表達(dá)式語(yǔ)句,錄入多條相同的參考答案,語(yǔ)句中選擇轉(zhuǎn)為select、投影轉(zhuǎn)為project、連接轉(zhuǎn)為join的關(guān)鍵字,并交差三種的規(guī)則相同,并將圖形界面中顯示具有下標(biāo)二維關(guān)系表示轉(zhuǎn)為用“[]”標(biāo)記條件部分的一維表示方式,便于閱卷。
如式(1)所示的關(guān)系表達(dá)式,其中R、S為兩個(gè)關(guān)系,R.Sid為R的外鍵,將其存儲(chǔ)為一維的關(guān)系表達(dá)式為
用戶界面中顯示的表達(dá)式時(shí)通過(guò)JavaScript將關(guān)系運(yùn)算關(guān)鍵字顯示為對(duì)應(yīng)的符號(hào),并對(duì)“[]”標(biāo)記部分顯示對(duì)應(yīng)的下標(biāo)進(jìn)行還原顯示。
圖1 關(guān)系表達(dá)式樹(shù)
關(guān)系代數(shù)的考試過(guò)程和題目上傳的功能相同。關(guān)系代數(shù)題目閱卷功能的設(shè)計(jì)中,首先將兩個(gè)關(guān)系表達(dá)式轉(zhuǎn)為轉(zhuǎn)換為如圖1所示的表達(dá)式樹(shù)。關(guān)系表達(dá)式中每個(gè)關(guān)系運(yùn)算符是一個(gè)非葉子節(jié)點(diǎn),關(guān)系為葉子節(jié)點(diǎn),非葉子節(jié)點(diǎn)中包含條件表達(dá)式。投影project的條件為屬性的結(jié)合,不做任何轉(zhuǎn)換,存儲(chǔ)為集合。投影project和選擇select為單目運(yùn)算符號(hào),運(yùn)算對(duì)象一個(gè)關(guān)系或者一個(gè)關(guān)系運(yùn)算,將運(yùn)算對(duì)方放置在右子樹(shù)中。非葉子節(jié)點(diǎn)中的條件表達(dá)式也轉(zhuǎn)為表達(dá)式樹(shù),其中單目運(yùn)算符的運(yùn)算對(duì)象在右子樹(shù),條件表達(dá)式中的運(yùn)算符按照優(yōu)先級(jí)分級(jí),優(yōu)先級(jí)高的運(yùn)算符放在運(yùn)算符低的運(yùn)算符的葉子節(jié)點(diǎn)中,先進(jìn)行計(jì)算,條件中到的所有小于和不大于關(guān)系轉(zhuǎn)為等級(jí)的大于和不小于關(guān)系,以方便比較,條件表達(dá)式存儲(chǔ)在CE-T(ConditionalExpression Tree)中,分別是CE-ST和 CE-AT。
算法2 關(guān)系代數(shù)題閱卷輸入:題目Id,提交RA-S,答案集合RA-A輸出:Score 1:/*轉(zhuǎn)為表達(dá)式樹(shù)*/2:RA-ST transform(RA-S)3:RA-AT transform(RA-A)4:/*比較表達(dá)式樹(shù)*/5:while (RA-ST and RA-AT and unvisited)6: s=RA-ST->rightchild->parent 7:a=find(s in RA-AT)8:if(compare(s,a)=true)9:compare(CE-ST,CE-AT)10:sets,a visited 11 s=s->parent 12:loop 13:if(RA-ST and RA-AT and visited)14:return Score 分?jǐn)?shù)
關(guān)系代數(shù)閱卷如算法2所示,比較學(xué)生提交答案RA-S(RelationalAlgebra-Student)和正確答案集合RA-A (RelationalAlgebra-Answer)某一個(gè)生成表達(dá)樹(shù)的一致性,采用自底向上的比較方法,從RAS第一個(gè)非葉子節(jié)點(diǎn)開(kāi)始,在RA-A中查找相同的節(jié)點(diǎn),并將兩個(gè)非葉子節(jié)點(diǎn)的左右子樹(shù)進(jìn)行比較,相等則繼續(xù)比較兩個(gè)非葉子節(jié)點(diǎn)中的條件表達(dá)式樹(shù)CEST和CE-AT,如果條件表達(dá)式也相等則標(biāo)記該節(jié)點(diǎn)和葉子節(jié)點(diǎn)已訪問(wèn),重復(fù)以上步驟,至兩個(gè)樹(shù)種所有節(jié)點(diǎn)都被訪問(wèn)過(guò),則該題目獲得題目分值,否則為0。在表達(dá)式條件表達(dá)式匹配過(guò)程中,如果非葉子節(jié)點(diǎn)中的上級(jí)運(yùn)算符在相同優(yōu)先級(jí),則向上找到所有的相同優(yōu)先級(jí)元素符,將其自己節(jié)點(diǎn)合并在同一集合中,答案CE-AT中也進(jìn)行相同的操作進(jìn)行比較。
函數(shù)依賴部分的知識(shí)分為候選鍵判斷、關(guān)系規(guī)范化、最小函數(shù)依賴集和關(guān)系分解,其中候選鍵選擇、范式考試是填空題,關(guān)系分解問(wèn)題分解后為多個(gè)關(guān)系的集合,在閱卷中可以通過(guò)簡(jiǎn)單的答案相等性判斷得到分?jǐn)?shù)。最小函數(shù)依賴求解過(guò)程需要函數(shù)依賴的推理,關(guān)系R<U,F>中,U為屬性的集合,F(xiàn)為屬性依賴集合,其中屬性依賴用“->”表示。題目的設(shè)計(jì)過(guò)程中單獨(dú)存儲(chǔ)原始待計(jì)算關(guān)系,以便于后期閱卷,題干中文字的要求每一小題作為一項(xiàng),以便于分值的計(jì)算。最小函數(shù)依賴的正確答案不唯一,在設(shè)計(jì)題目時(shí)只給出參考答案,在閱卷過(guò)程中并比將學(xué)生給出最小依賴集與參考答案進(jìn)行比較或分析的出分值。
最小依賴集答題過(guò)程中用戶只需要提交最小依賴集結(jié)果,不需要中間的推理過(guò)程。答案的書(shū)寫(xiě)按照關(guān)系R中屬性依賴關(guān)系F的格式,在提交答案是檢查輸入格式的合法性。閱卷過(guò)程如算法3所示,其中FD-S(Functional Dependency-Student)為學(xué)生提交的最小函數(shù)依賴。FD-Q(FunctionalDependency-Question)為題目中的原始關(guān)系函數(shù)依賴。
算法3 最小函數(shù)依賴題閱卷輸入:題目Id,提交FD-S,原始關(guān)系函數(shù)依賴FD-Q輸出:Score 1:/*對(duì)FD-S再求最小依賴*/2:if(FD-S 中左/右部長(zhǎng)度>1 orFD-S 有重復(fù)項(xiàng))3:return Score 0 4:R-FD Armstrong公理求FD-S的最小函數(shù)依賴5:if(R-FD !=FD_S)6:return Score 0 7:/*計(jì)算FD_S與FD-Q是否等價(jià)*/8:else if(FD-QFD-Q)9:return Score 分?jǐn)?shù)
最小函數(shù)依賴題目的閱卷分為兩個(gè)步驟,算法1-4行是對(duì)FD-S用Armstrong公理重新計(jì)算最小函數(shù)依賴,算法5-6行判斷如果是最小函數(shù)依賴,則在7-9行再次計(jì)算FD-S和FD-Q中的F是否等價(jià),計(jì)算FD-S是否能夠和FD-Q相互覆蓋。
E-R圖是從現(xiàn)實(shí)到機(jī)器之間溝通的主要工具,E-R圖的在線繪制工具在網(wǎng)絡(luò)中已有很多,但在考試系統(tǒng)中的應(yīng)用還沒(méi)有被廣泛應(yīng)用。E-R圖在線考試功能分為繪圖、圖形轉(zhuǎn)為XML文檔提交答案、XML文檔轉(zhuǎn)為關(guān)系并閱卷三項(xiàng)主要功能。E-R圖題目設(shè)計(jì)為兩部分文字,其中題目要求為文字,和繪制答案E-R圖。在繪圖功能中選擇較為成熟的JointJS,JointJS是一個(gè)基于SVG的圖形化工具庫(kù),graph和paper定義畫(huà)布,攜帶的元素element滿足繪制E-R圖的需求,并可以自定義元素,頁(yè)面上的操作觸發(fā)view的事件,通過(guò)回調(diào)函數(shù)獲取model完成繪圖功能,繪制好的E-R圖需要存儲(chǔ)和還原,在JointJS 中 提 供 了 EXPORT_URL、SAVE_URL、OPEN_URL屬性,傳入對(duì)應(yīng)的URL即可傳入后臺(tái),其中EXPORT_URL將繪制結(jié)果導(dǎo)出成圖片,在顯示中可方便縮放,修改時(shí)OPEN_URL加載XML文件并還原繪圖,SAVE_URL屬性指定存儲(chǔ)URL,URL的接收方法中string類(lèi)型的參數(shù)xml存儲(chǔ)繪圖結(jié)果文件,文件類(lèi)型為XML。
E-R圖的閱卷過(guò)程中,解析提交的和答案XML文件,將XML文件轉(zhuǎn)換為內(nèi)存對(duì)象的集合,并比較兩個(gè)對(duì)象集中對(duì)應(yīng)項(xiàng)目的數(shù)量,按照數(shù)量比例給定分值。
算法4 E-R圖閱卷輸入:題目Id,提交ER-S,答案ER-A輸出:Score 1:/*解析ER-S和ER-A轉(zhuǎn)為對(duì)象集*/2:ER-SE transformToEntities(ER-S)3:ER-AE transformToEntities(ER-A)4:/*查找ER-SE中實(shí)體名在ER-AE實(shí)體名的集合為EC*/5:EC=find(ER-SE實(shí)體名 in ER-AE實(shí)體名)8:return Score
E-R圖的閱卷如算法4所示。輸入題目Id,提交ER-S(E-R-Student),答案 ER-A(E-R-Answer),將其解析為內(nèi)存對(duì)象的集合ER-SE和ER-AE。XML文檔中對(duì)實(shí)體、屬性、關(guān)系都以mxCell元素加Vertex屬性,style屬性區(qū)分三者,rounded為實(shí)體,ellipse為實(shí)體屬性,rhombus為實(shí)體關(guān)系,邊用mxCell元素的Edge屬性區(qū)分。實(shí)體和屬性的關(guān)聯(lián)是實(shí)體屬性中Source屬性指定實(shí)體,實(shí)體之間的關(guān)系查找rhombus標(biāo)記屬性聯(lián)系兩個(gè)Edge,并將其關(guān)聯(lián)元素中fontStyle=4(主屬性)的元素組合成新的實(shí)體對(duì)象的屬性。XML轉(zhuǎn)換為實(shí)體的集合,每個(gè)實(shí)體轉(zhuǎn)為“{實(shí)體名(屬性 1,屬性 2,…) Identity(屬性 1,屬性 2,…)}”的格式,屬性之間“,”分隔,關(guān)鍵字之間空格分隔,實(shí)體之間的關(guān)聯(lián)也作為一個(gè)實(shí)體,轉(zhuǎn)換過(guò)程如算法1-3所示。算法5-8行計(jì)算分值,查找集合ER-SE對(duì)象中的每個(gè)實(shí)體名是否在ER-AE中存在,按照存在的比例減去分值,并將兩個(gè)集合中存在的實(shí)體按照相同的方法計(jì)算屬性,主屬性比較對(duì)應(yīng)實(shí)體中對(duì)應(yīng)屬性的IsIdentity標(biāo)記,并按照比例減去分值,加上題目設(shè)定分值得到E-R圖最終得分。
文章研究并設(shè)計(jì)了數(shù)據(jù)庫(kù)原理在線考試系統(tǒng)中SQL語(yǔ)句、關(guān)系代數(shù)、函數(shù)依賴、E-R圖四種題型的在線考試功能,并將其應(yīng)用到日常課程測(cè)試和期末考試中,研究設(shè)計(jì)功能加入在線考試系統(tǒng)中能夠滿足基本的考試需求。在SQL語(yǔ)句的設(shè)計(jì)過(guò)程中沒(méi)有加入語(yǔ)義分析技術(shù),如果學(xué)生提交的答案部分正確時(shí),無(wú)法推斷出按正確比例計(jì)算的成績(jī),關(guān)系代數(shù)功能的閱卷規(guī)則和分值判定方法不夠精準(zhǔn),后期計(jì)劃加入詞法分析和語(yǔ)法分析,最小函數(shù)依賴求解問(wèn)題只判斷了結(jié)果過(guò)的正確性,沒(méi)有檢查推理過(guò)程。設(shè)計(jì)的四種題型在線考試功能,在閱卷環(huán)節(jié)分值判斷的合理性還有待更多的實(shí)踐應(yīng)用的檢驗(yàn)。在數(shù)據(jù)庫(kù)原來(lái)課程中關(guān)系分解也是重要的學(xué)習(xí)和考核內(nèi)容之一,在本文中暫未涉及,在未來(lái)的研究中將進(jìn)一步研究它的在線考試功能設(shè)計(jì)。