?

數據庫原理在線考試系統核心功能研究與設計

2020-10-17 09:55張旭東楊鵬斐
甘肅科技 2020年18期
關鍵詞:表達式語句題目

張旭東,楊鵬斐

(蘭州財經大學信息工程學院,甘肅 蘭州 730000)

1 概述

數據庫原理課程是信息管理類專業的核心課程,學生人數較多,對在線考試需求比較迫切。隨著互聯網技術的發展,B/S結構的在線考試系統已經在高校的部分課程中得到應用,如計算機基礎、C語言、數據庫基礎等課程,對通用考試系統的研究從未停止[1-3],但數據庫課程內容和考核方式的不同,考試系統的研究和設計仍停留在客觀題方面,主觀題方面的由于以簡答和論述題目以文字的方式呈現答案,數理類課程以字符和采用字符的邏輯推理為參考答案,計算機和信息管理類課程以圖表或程序的方式呈現[4],對主觀題自動考試和閱卷研究和系統,目前基本采用半自動化設定評分項、由教師在線評分的半自動化閱卷方式[5]。

文章以數據庫原理課程的在線考試和自動閱卷為背景,研究數據庫原來在線考試系統的核心功能。以SQL語句、E-R圖關系代數和關系規范化四類主觀題型的在線考試和閱卷為核心,提出實現數據原理課程在線考試系統的核心功能設計和實現方法。

2 國內外研究現狀

國外大量應用了軟件系統進行考試。Gerard Salton在提出的向量空間模型用于分析簡答問題中的英文文本相似度[6,7]。Vladimir Oleshchuk 等人提出了文本相似度計算方法,Carbone II等人提出的最大邊緣相關方法,這些算法作為填空、名詞解釋和簡答題型的閱卷算法[8]。在線考試系統的研究主要集中在詞法分析、語法分析、語義推斷方面[9,10]。

國內在在線考試系統方面的研究成果很多,但在數據庫原理考試系統的研究成果較少。在商用考試系統方面萬維捷通[11]研發的在線考試系統對于數據庫基礎課程的考試只支持圖形化界面的SQL執行和閱卷。清華泰豪網絡考試系統具有一定的代表性,該系統幾乎覆蓋了教學考試過程的各大環節,是一個功能完善的輔助教學系統,其主要功能有題庫創建與管理、自動組卷、在線練習、在線測試、自動統計并分析成績數據等[12]。全國計算機等級考試系統中實現了MySQL中的SQL語句和E-R圖在線考試,但該系統沒有公開。關系數據庫上機考試系統組卷算法的研究與探討[13]重點研究組卷,沒有體現出該課程核心內容題型。關系數據庫上機考試系統[14]一文中僅對SQL語句類題目的考試和閱卷進行了探討,對于課程整體內容的考試不具有全面性。數據庫原理無紙考試系統的設計與實現[15]一文中只總體設計了關系代數、SQL語言自動評分的方法。ORACLE數據庫上機考試系統的設計與實現[16]中設計ORACLE數據庫考試的考試系統,需要連接到數據庫管理工具進行操作。數據庫原理課程在線評卷系統的設計與實現[17]參考編輯距離和VSM在自然語言文本處理上的應用,重點在語法和詞法分析,在簡答、SQL語句和關系規范化方面有一定的參考價值、但沒有考慮E-R圖。論文[18-20]設計了關系代數轉為SQL語句的在線教學系統,無法用于在線考試。

現有研究成果和系統在在線考試過程中發揮了重要的作用,但研究內容或者只側重于系統的總體設計,并未全部涵蓋數據庫概論課程考試的所有內容。本文分析數據庫原理課程內容的特殊性,設計并實現針對該課程中四種常見題型考試系統核心功能,并結合現有考試系統的優點為數據庫原理課程提供較為全面的考核方法。

3 在線考試系統核心功能設計

數據庫原理在線考試系統的設計中,系統中輔助性的功能在包括用戶管理、題目管理、組卷、評卷、考試過程管理、成績管理等功能,這些現有考試系統中較為常見的功能在此不再詳細介紹,以下僅設計SQL語句、關系代數、函數依賴和E-R圖中核心知識點的在線考試和閱卷功能,將對每個功能的設計分為題目設置、考試過程、自動閱卷三部分展開,系統功能的設計選用ASP.NET和SQLServer。

3.1 SQL語句

SQL語句的是數據庫原理課程中核心內容之一,每次考試中需要設計大量的題目考查學生對SQL的掌握情況。SQL語句分為數據定義、數據操縱、數據查詢和數據控制四種類型你,本文主要對數據操縱、數據查詢兩種類型的SQL語句設計考試功能。SQL語句正確性的判定分為兩步,分別是語法正確和執行結果正確,語法的正確性采取語句合法性檢查,并提交到SQL語句到數據庫管理工具編譯獲取語法錯誤,執行結果的正確性通過比對實現。

SQL語句題目設置按照兩層樹結構,其中樹根節點為題目主題干,多個葉子節點中,每個葉子節點為一個SQL語句的問題,每個問題稱為子題目。根節點中的主題干包含對查詢目標數據庫進行描述和解釋,以及創建該查詢目標數據庫的SQL腳本。葉子節點中的子題目設定問題的精確描述和該問題對應的答案。

SQL語句的考試過程是抽題和答題過程的結合。按照主題干個數和每個主題干包含的子題目數量進行抽題,并設置每個子題目的分值。當學生進入該題目進行考試時,系統首先根據考試主題干中的SQL腳本創建臨時數據庫,并為當前考生授權使用該臨時數據庫的權限,考試過程中學生在文本框中提交答案,頁面中提示語法錯誤和執行結果。

算法1 SQL語句題閱卷輸入:題目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獲取語法錯誤*/6:SETPARSEONLY ON andexecS_SQLinDB 7:if(catch ex)8:Return Message ex.message 9:SETPARSEONLY OFF 10:/*執行SQL比較結果,取得Score*/11:execSQL-S and SQL-A in DB 12:return Score compare(RS,RA)

提交后閱卷功能對SQL語句正確性的判斷有三個步驟,如算法1 SQL語句題閱卷算法所示,算法輸入有三個題目Id、提交的SQL語句S_SQL和正確答案SQL語句SQL-A(SQL-Answer)。首先用正則表達式檢查SQL-S(SQL-Student)語句語法的正確性。算法2-4行通過正則表達式匹配出SQL注入問題,再次算法6-8行,通過SQL-S提交到數據庫執行獲取語法錯誤,SET PARSEONLY為ON時只檢查語法錯誤,不實際執行,獲取到的異常信息在ex中,并在系統中提示。如無語法錯誤,則如算法11-12行所示,提交到數據庫中執行SQL-S語句得到執行結果RS,執行SQL-A語句得到執行結果RA,并將其RS在RA中按照逐行檢索的方式進行比對,如果結果一致則獲得該題目所對應的分數Score,上述閱卷過程中比對沒有完全一致,則該題目不得分。在比對過程中為保證閱卷結果的合理性,首先對兩個執行結果中的表字段的集合進行比對,列的集合相等則繼續比對行,最后對執行結果中元組進行排序并逐行比對,行的比對過程,將列排序后逐一展開。

3.2 關系代數

關系代數的學習和理解有助于學生理解和掌握關系數據庫的理論基礎,從而將實踐內容和數據理論知識聯系起來。數據庫原理課程中的關系代數主要是 6 種關系運算,分別是并(∪)、交(∩)、差(-)、選擇(σ)、投影(∏)和自然連接用表示,關系運算中還需要設計關系運算符、邏輯運算符、算數運算符和表達式界定符,所有符號結合起來形成關系表達式錄入功能。

關系代數的考試功能設計分為題目和答案兩部分,題目中上傳待計算的關系和文字描述關系計算需求,正確答案按照圖形界面設計的關系表達錄入系統并存儲,關系表達式中的條件表達式和投影用“[]”符號標記,操作界面中設計下標開始和結束標記。錄入的答案將被轉換為關系表達式語句,錄入多條相同的參考答案,語句中選擇轉為select、投影轉為project、連接轉為join的關鍵字,并交差三種的規則相同,并將圖形界面中顯示具有下標二維關系表示轉為用“[]”標記條件部分的一維表示方式,便于閱卷。

如式(1)所示的關系表達式,其中R、S為兩個關系,R.Sid為R的外鍵,將其存儲為一維的關系表達式為

用戶界面中顯示的表達式時通過JavaScript將關系運算關鍵字顯示為對應的符號,并對“[]”標記部分顯示對應的下標進行還原顯示。

圖1 關系表達式樹

關系代數的考試過程和題目上傳的功能相同。關系代數題目閱卷功能的設計中,首先將兩個關系表達式轉為轉換為如圖1所示的表達式樹。關系表達式中每個關系運算符是一個非葉子節點,關系為葉子節點,非葉子節點中包含條件表達式。投影project的條件為屬性的結合,不做任何轉換,存儲為集合。投影project和選擇select為單目運算符號,運算對象一個關系或者一個關系運算,將運算對方放置在右子樹中。非葉子節點中的條件表達式也轉為表達式樹,其中單目運算符的運算對象在右子樹,條件表達式中的運算符按照優先級分級,優先級高的運算符放在運算符低的運算符的葉子節點中,先進行計算,條件中到的所有小于和不大于關系轉為等級的大于和不小于關系,以方便比較,條件表達式存儲在CE-T(ConditionalExpression Tree)中,分別是CE-ST和 CE-AT。

算法2 關系代數題閱卷輸入:題目Id,提交RA-S,答案集合RA-A輸出:Score 1:/*轉為表達式樹*/2:RA-ST transform(RA-S)3:RA-AT transform(RA-A)4:/*比較表達式樹*/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 分數

關系代數閱卷如算法2所示,比較學生提交答案RA-S(RelationalAlgebra-Student)和正確答案集合RA-A (RelationalAlgebra-Answer)某一個生成表達樹的一致性,采用自底向上的比較方法,從RAS第一個非葉子節點開始,在RA-A中查找相同的節點,并將兩個非葉子節點的左右子樹進行比較,相等則繼續比較兩個非葉子節點中的條件表達式樹CEST和CE-AT,如果條件表達式也相等則標記該節點和葉子節點已訪問,重復以上步驟,至兩個樹種所有節點都被訪問過,則該題目獲得題目分值,否則為0。在表達式條件表達式匹配過程中,如果非葉子節點中的上級運算符在相同優先級,則向上找到所有的相同優先級元素符,將其自己節點合并在同一集合中,答案CE-AT中也進行相同的操作進行比較。

3.3 最小函數依賴

函數依賴部分的知識分為候選鍵判斷、關系規范化、最小函數依賴集和關系分解,其中候選鍵選擇、范式考試是填空題,關系分解問題分解后為多個關系的集合,在閱卷中可以通過簡單的答案相等性判斷得到分數。最小函數依賴求解過程需要函數依賴的推理,關系R<U,F>中,U為屬性的集合,F為屬性依賴集合,其中屬性依賴用“->”表示。題目的設計過程中單獨存儲原始待計算關系,以便于后期閱卷,題干中文字的要求每一小題作為一項,以便于分值的計算。最小函數依賴的正確答案不唯一,在設計題目時只給出參考答案,在閱卷過程中并比將學生給出最小依賴集與參考答案進行比較或分析的出分值。

最小依賴集答題過程中用戶只需要提交最小依賴集結果,不需要中間的推理過程。答案的書寫按照關系R中屬性依賴關系F的格式,在提交答案是檢查輸入格式的合法性。閱卷過程如算法3所示,其中FD-S(Functional Dependency-Student)為學生提交的最小函數依賴。FD-Q(FunctionalDependency-Question)為題目中的原始關系函數依賴。

算法3 最小函數依賴題閱卷輸入:題目Id,提交FD-S,原始關系函數依賴FD-Q輸出:Score 1:/*對FD-S再求最小依賴*/2:if(FD-S 中左/右部長度>1 orFD-S 有重復項)3:return Score 0 4:R-FD Armstrong公理求FD-S的最小函數依賴5:if(R-FD !=FD_S)6:return Score 0 7:/*計算FD_S與FD-Q是否等價*/8:else if(FD-QFD-Q)9:return Score 分數

最小函數依賴題目的閱卷分為兩個步驟,算法1-4行是對FD-S用Armstrong公理重新計算最小函數依賴,算法5-6行判斷如果是最小函數依賴,則在7-9行再次計算FD-S和FD-Q中的F是否等價,計算FD-S是否能夠和FD-Q相互覆蓋。

3.4 E-R圖

E-R圖是從現實到機器之間溝通的主要工具,E-R圖的在線繪制工具在網絡中已有很多,但在考試系統中的應用還沒有被廣泛應用。E-R圖在線考試功能分為繪圖、圖形轉為XML文檔提交答案、XML文檔轉為關系并閱卷三項主要功能。E-R圖題目設計為兩部分文字,其中題目要求為文字,和繪制答案E-R圖。在繪圖功能中選擇較為成熟的JointJS,JointJS是一個基于SVG的圖形化工具庫,graph和paper定義畫布,攜帶的元素element滿足繪制E-R圖的需求,并可以自定義元素,頁面上的操作觸發view的事件,通過回調函數獲取model完成繪圖功能,繪制好的E-R圖需要存儲和還原,在JointJS 中 提 供 了 EXPORT_URL、SAVE_URL、OPEN_URL屬性,傳入對應的URL即可傳入后臺,其中EXPORT_URL將繪制結果導出成圖片,在顯示中可方便縮放,修改時OPEN_URL加載XML文件并還原繪圖,SAVE_URL屬性指定存儲URL,URL的接收方法中string類型的參數xml存儲繪圖結果文件,文件類型為XML。

E-R圖的閱卷過程中,解析提交的和答案XML文件,將XML文件轉換為內存對象的集合,并比較兩個對象集中對應項目的數量,按照數量比例給定分值。

算法4 E-R圖閱卷輸入:題目Id,提交ER-S,答案ER-A輸出:Score 1:/*解析ER-S和ER-A轉為對象集*/2:ER-SE transformToEntities(ER-S)3:ER-AE transformToEntities(ER-A)4:/*查找ER-SE中實體名在ER-AE實體名的集合為EC*/5:EC=find(ER-SE實體名 in ER-AE實體名)8:return Score

E-R圖的閱卷如算法4所示。輸入題目Id,提交ER-S(E-R-Student),答案 ER-A(E-R-Answer),將其解析為內存對象的集合ER-SE和ER-AE。XML文檔中對實體、屬性、關系都以mxCell元素加Vertex屬性,style屬性區分三者,rounded為實體,ellipse為實體屬性,rhombus為實體關系,邊用mxCell元素的Edge屬性區分。實體和屬性的關聯是實體屬性中Source屬性指定實體,實體之間的關系查找rhombus標記屬性聯系兩個Edge,并將其關聯元素中fontStyle=4(主屬性)的元素組合成新的實體對象的屬性。XML轉換為實體的集合,每個實體轉為“{實體名(屬性 1,屬性 2,…) Identity(屬性 1,屬性 2,…)}”的格式,屬性之間“,”分隔,關鍵字之間空格分隔,實體之間的關聯也作為一個實體,轉換過程如算法1-3所示。算法5-8行計算分值,查找集合ER-SE對象中的每個實體名是否在ER-AE中存在,按照存在的比例減去分值,并將兩個集合中存在的實體按照相同的方法計算屬性,主屬性比較對應實體中對應屬性的IsIdentity標記,并按照比例減去分值,加上題目設定分值得到E-R圖最終得分。

4 總結

文章研究并設計了數據庫原理在線考試系統中SQL語句、關系代數、函數依賴、E-R圖四種題型的在線考試功能,并將其應用到日常課程測試和期末考試中,研究設計功能加入在線考試系統中能夠滿足基本的考試需求。在SQL語句的設計過程中沒有加入語義分析技術,如果學生提交的答案部分正確時,無法推斷出按正確比例計算的成績,關系代數功能的閱卷規則和分值判定方法不夠精準,后期計劃加入詞法分析和語法分析,最小函數依賴求解問題只判斷了結果過的正確性,沒有檢查推理過程。設計的四種題型在線考試功能,在閱卷環節分值判斷的合理性還有待更多的實踐應用的檢驗。在數據庫原來課程中關系分解也是重要的學習和考核內容之一,在本文中暫未涉及,在未來的研究中將進一步研究它的在線考試功能設計。

猜你喜歡
表達式語句題目
唐朝“高考”的詩歌題目
重點:語句銜接
一個混合核Hilbert型積分不等式及其算子范數表達式
表達式轉換及求值探析
關于題目的要求
本期練習類題目參考答案及提示
淺析C語言運算符及表達式的教學誤區
追根求源
我喜歡
議C語言中循環語句
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合