摘要:數(shù)據(jù)字典不僅是Oracle數(shù)據(jù)庫的基礎(chǔ)組成部分,它也為用戶提供了一個(gè)重要的獲取系統(tǒng)信息的工具。本文闡述了基于數(shù)據(jù)字典的Oracle課程聯(lián)機(jī)考試系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)方法。
關(guān)鍵詞:數(shù)據(jù)字典;oracle;考試系統(tǒng)
中圖分類號:TP393文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2008)28-0011-02
Design and Implementation of Examination System Based on Oracle Data Dictionary
QI Yao-long1,2
(1.School of Computer Science and Technology,North China Electric Power University,Baoding 071003,China;2.Computer Center of Hebei University,Baoding 071002,China)
Abstract: Not only is the data dictionary central to every Oracle database,it is an important tool for users who want to obtain the system informations. Based on which, an examination system is designed and implemented.
Key words: data dictionary;oracle;examination system
1 引言
Oracle是甲骨文公司推出的大型數(shù)據(jù)庫產(chǎn)品,它將數(shù)據(jù)庫技術(shù)和因特網(wǎng)技術(shù)融合在一起,是特別適合在因特網(wǎng)上進(jìn)行數(shù)據(jù)管理的大型數(shù)據(jù)庫開發(fā)平臺。隨著Oracle進(jìn)入微型計(jì)算機(jī)領(lǐng)域,國內(nèi)學(xué)習(xí)Oracle并使用其作為數(shù)據(jù)庫開發(fā)平臺的人越來越多,很多大型企事業(yè)單位和國家機(jī)關(guān)也開始將他們的核心應(yīng)用構(gòu)建在Oracle平臺之上。目前,國內(nèi)不少高校正在嘗試開設(shè)針對Oracle的選修課程,作為課程重要組成部分的聯(lián)機(jī)考試系統(tǒng)的建設(shè)勢在必行。
2 數(shù)據(jù)字典
數(shù)據(jù)字典(data dictionary)是Oracle數(shù)據(jù)庫的一個(gè)重要組成部分,是一組用于記錄數(shù)據(jù)庫信息的只讀表。數(shù)據(jù)字典中包含:數(shù)據(jù)庫中所有schema object(包括表、視圖、索引、簇、同義詞、序列、過程、函數(shù)、包、觸發(fā)器等)的定義;schema object的空間分配和使用情況;列的默認(rèn)值;完整性約束(integrity constraint)信息;數(shù)據(jù)庫用戶名;用戶的權(quán)限與角色;audit信息等。與數(shù)據(jù)庫內(nèi)的其他數(shù)據(jù)相同,數(shù)據(jù)字典也是以表及視圖的形式組織的,并可以通過SQL語句進(jìn)行訪問。在數(shù)據(jù)庫運(yùn)行期間,Oracle通過數(shù)據(jù)字典內(nèi)的信息來確定schema object是否存在,以及用戶是否具備相應(yīng)的權(quán)限。Oracle會持續(xù)地更新數(shù)據(jù)字典,以便反映數(shù)據(jù)庫在結(jié)構(gòu)、數(shù)據(jù)、授權(quán)和監(jiān)控等方面的變化。
數(shù)據(jù)字典包括三類主要的視圖:以“DBA_”開頭的視圖描述了數(shù)據(jù)庫中的所有對象、以“ALL_”開頭的視圖描述了當(dāng)前用戶可以訪問的對象、以“USER_”開頭的視圖描述了當(dāng)前用戶擁有的對象。數(shù)據(jù)字典有三個(gè)主要用途:Oracle利用數(shù)據(jù)字典來獲取關(guān)于用戶、方案對象及存儲結(jié)構(gòu)的信息;每當(dāng)數(shù)據(jù)庫中執(zhí)行了DDL語句后,Oracle將對數(shù)據(jù)字典進(jìn)行修改;所有Oracle用戶都可以使用數(shù)據(jù)字典來獲取關(guān)于數(shù)據(jù)庫的信息。
本考試系統(tǒng)主要完成對Oracle數(shù)據(jù)庫的無紙化考試和自動(dòng)閱卷功能??梢跃_地評閱所有schema object的創(chuàng)建、修改和刪除;存儲空間的分配;默認(rèn)值和約束的定義;數(shù)據(jù)的導(dǎo)入導(dǎo)出;多表查詢等等數(shù)據(jù)庫操作。借助Oracle數(shù)據(jù)字典,我們可以得到Oracle數(shù)據(jù)庫結(jié)構(gòu)的所有信息,這對于實(shí)現(xiàn)oracle課程聯(lián)機(jī)考試系統(tǒng)無疑是至關(guān)重要的。
3 架構(gòu)選擇
聯(lián)機(jī)考試系統(tǒng)的實(shí)現(xiàn)技術(shù)有多種, 可以采用客戶機(jī)/服務(wù)器(Client/Server,以下簡稱C/S)架構(gòu),也可以采用瀏覽器/服務(wù)器(Browser/Server,以下簡稱B/S)架構(gòu)。C/S架構(gòu)的優(yōu)點(diǎn)在于可以對學(xué)生機(jī)進(jìn)行完全的控制,但缺點(diǎn)是機(jī)房環(huán)境部署繁瑣;B/S架構(gòu)不能控制學(xué)生機(jī),但無需部署。系統(tǒng)架構(gòu)的選擇要根據(jù)課程的特點(diǎn)而定,目前高校已經(jīng)實(shí)現(xiàn)聯(lián)機(jī)考試的計(jì)算機(jī)課程主要包括《大學(xué)計(jì)算機(jī)基礎(chǔ)》、《C/C++程序設(shè)計(jì)》、《VB程序設(shè)計(jì)》、《Access數(shù)據(jù)庫》等,這些課程考試的初始答題環(huán)境和答題結(jié)果都生成并存儲于學(xué)生機(jī)上,采用C/S架構(gòu)可以很方便的將這些數(shù)據(jù)收集至服務(wù)器進(jìn)行評分和歸檔。而Oracle課程考試的初始答題環(huán)境和答題結(jié)果均在服務(wù)器的數(shù)據(jù)庫中,學(xué)生機(jī)只需要有Oracle客戶端程序即可答題,無需考慮學(xué)生機(jī)初始答題環(huán)境的生成和答題結(jié)果的收集,故采用B/S架構(gòu)較為適宜。
4 系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
4.1 系統(tǒng)關(guān)鍵模塊及功能
根據(jù)需求分析對考試系統(tǒng)的功能進(jìn)行分解,本系統(tǒng)要實(shí)現(xiàn)的功能模塊如圖1所示。
1) 系統(tǒng)接口:與高校選課系統(tǒng)的接口(獲取開課名單和選課學(xué)生名單);與高校教學(xué)評估和評價(jià)系統(tǒng)的接口(為使用數(shù)據(jù)挖掘技術(shù)進(jìn)行教學(xué)評估和評價(jià)積累成績數(shù)據(jù))等。
2) 用戶管理:教師管理員信息維護(hù);考生信息維護(hù);用戶權(quán)限管理;考生信息查詢和統(tǒng)計(jì)。
3) 試卷維護(hù):試題抽?。蛔詣?dòng)組卷;設(shè)置考試時(shí)間等。
4) 題庫維護(hù):題型管理;基于數(shù)據(jù)字典的試題管理;基于數(shù)據(jù)字典的評分規(guī)則管理等。
5) 考試管理:考試流程控制;基于數(shù)據(jù)字典的初始答題環(huán)境的生成;基于數(shù)據(jù)字典的自動(dòng)評分;考生答題結(jié)果的備份等。
6) 成績維護(hù):成績查詢、修改、統(tǒng)計(jì)、發(fā)布等。
4.2 前端設(shè)計(jì)
前端包括教師端和學(xué)生端,使用ASP.NET技術(shù),通過瀏覽器分別為考生及教師展現(xiàn)考生界面和教師后臺管理界面。ASP.NET是建立在公共語言運(yùn)行庫上的編程框架,可用于在服務(wù)器上生成功能強(qiáng)大的WEB應(yīng)用程序。相對于以前的ASP版本,它具有更強(qiáng)大的語言支持、更高的執(zhí)行效率和開發(fā)效率等優(yōu)點(diǎn)。需要說明的是,涉及到考試流程控制的部分使用了AJAX技術(shù)以實(shí)現(xiàn)富用戶端行為。
4.3 后端設(shè)計(jì)
除了前端用戶界面以外,考試系統(tǒng)的核心功能都以Package的形式被封裝在了Oracle數(shù)據(jù)庫中。這些Package隸屬于同一個(gè)具有DBA權(quán)限的Oracle帳戶。Package以加密的形式進(jìn)行封裝(Oracle在創(chuàng)建Package的時(shí)候支持加密創(chuàng)建),可以充分保護(hù)源代碼。
此外,系統(tǒng)中還有一些游離的衍生部件,比如每位考生的初始答題環(huán)境和答題結(jié)果,考試系統(tǒng)將每位考生的初始答題環(huán)境部署于考生自己的Oracle帳戶下,這些帳戶只有簡單的connect和resource角色權(quán)限,并且對其設(shè)置了CPU占用和存儲空間占用約束,這樣在保障系統(tǒng)安全的同時(shí)又能做到對考生環(huán)境的隔離。
4.4 編碼實(shí)現(xiàn)
服務(wù)器包括WEB服務(wù)器和數(shù)據(jù)庫服務(wù)器各一臺。WEB服務(wù)器采用的操作系統(tǒng)為Windows Server 2003,開發(fā)工具使用Visual Studio 2005;數(shù)據(jù)庫服務(wù)器采用的操作系統(tǒng)為Turbo Linux,數(shù)據(jù)庫采用Oracle 10g,開發(fā)工具使用PL/SQL Developer 7。PL/SQL Developer是一種集成的開發(fā)環(huán)境,專門用于開發(fā)、測試、調(diào)試和優(yōu)化Oracle PL/SQL存儲程序單元。
Oracle數(shù)據(jù)字典的使用在系統(tǒng)實(shí)現(xiàn)中大量出現(xiàn),它廣泛存在于試題管理、評分規(guī)則管理、考生初始答題環(huán)境的生成、考試流程控制、自動(dòng)評分等核心模塊中。以評分模塊為例,對“設(shè)置字段默認(rèn)值”操作點(diǎn)進(jìn)行評分的存儲過程使用了ALL_TAB_COLUMNS數(shù)據(jù)字典視圖,具體代碼如下:
CREATE OR REPLACE FUNCTION getDefaultValue(inColumnName IN VARCHAR2, inTableName IN VARCHAR2, inOwner IN VARCHAR2) RETURN VARCHAR2 IS
val VARCHAR2(32767);
BEGIN
SELECT DATA_DEFAULT INTO val FROM ALL_TAB_COLUMNS WHERE OWNER = inOwner AND TABLE_NAME = inTableName AND COLUMN_NAME = inColumnName;
IF val IS NOT NULL THEN
IF upper(REPLACE(val, chr(10), '')) = 'NULL' THEN
val := NULL;
END IF;
END IF;
RETURN val;
EXCEPTION
WHEN OTHERS THEN
val := NULL;
RETURN val;
END getDefaultValue;
5 結(jié)束語
數(shù)據(jù)字典作為Oracle數(shù)據(jù)庫的基礎(chǔ)組成部分,為用戶提供了完整的數(shù)據(jù)庫信息,基于數(shù)據(jù)字典可以準(zhǔn)確并高效的構(gòu)建試題、生成評分規(guī)則、自動(dòng)組卷和進(jìn)行機(jī)器評分。本系統(tǒng)投入使用后不僅對學(xué)生的學(xué)習(xí)進(jìn)行了客觀的考核,還減輕了教師工作量,提高了工作效率,取得了預(yù)期的效果。
參考文獻(xiàn):
[1] 李偉超,林國,張宏亮.新形勢下高校計(jì)算機(jī)基礎(chǔ)課教學(xué)內(nèi)容和方法的探討[J].實(shí)驗(yàn)室科學(xué),2006,4(2):29-31.
[2] 唐俊武.在線考試系統(tǒng)開發(fā)中的幾個(gè)問題及解決方法[J].計(jì)算機(jī)與數(shù)字工程,2005,33(08):144-147.
[3] 林行健.Oracle 10g數(shù)據(jù)庫管理、應(yīng)用與開發(fā)[M].北京:清華大學(xué)出版社,2005,3.