摘要:數據字典不僅是Oracle數據庫的基礎組成部分,它也為用戶提供了一個重要的獲取系統信息的工具。本文闡述了基于數據字典的Oracle課程聯機考試系統的設計和實現方法。
關鍵詞:數據字典;oracle;考試系統
中圖分類號:TP393文獻標識碼: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是甲骨文公司推出的大型數據庫產品,它將數據庫技術和因特網技術融合在一起,是特別適合在因特網上進行數據管理的大型數據庫開發平臺。隨著Oracle進入微型計算機領域,國內學習Oracle并使用其作為數據庫開發平臺的人越來越多,很多大型企事業單位和國家機關也開始將他們的核心應用構建在Oracle平臺之上。目前,國內不少高校正在嘗試開設針對Oracle的選修課程,作為課程重要組成部分的聯機考試系統的建設勢在必行。
2 數據字典
數據字典(data dictionary)是Oracle數據庫的一個重要組成部分,是一組用于記錄數據庫信息的只讀表。數據字典中包含:數據庫中所有schema object(包括表、視圖、索引、簇、同義詞、序列、過程、函數、包、觸發器等)的定義;schema object的空間分配和使用情況;列的默認值;完整性約束(integrity constraint)信息;數據庫用戶名;用戶的權限與角色;audit信息等。與數據庫內的其他數據相同,數據字典也是以表及視圖的形式組織的,并可以通過SQL語句進行訪問。在數據庫運行期間,Oracle通過數據字典內的信息來確定schema object是否存在,以及用戶是否具備相應的權限。Oracle會持續地更新數據字典,以便反映數據庫在結構、數據、授權和監控等方面的變化。
數據字典包括三類主要的視圖:以“DBA_”開頭的視圖描述了數據庫中的所有對象、以“ALL_”開頭的視圖描述了當前用戶可以訪問的對象、以“USER_”開頭的視圖描述了當前用戶擁有的對象。數據字典有三個主要用途:Oracle利用數據字典來獲取關于用戶、方案對象及存儲結構的信息;每當數據庫中執行了DDL語句后,Oracle將對數據字典進行修改;所有Oracle用戶都可以使用數據字典來獲取關于數據庫的信息。
本考試系統主要完成對Oracle數據庫的無紙化考試和自動閱卷功能。可以精確地評閱所有schema object的創建、修改和刪除;存儲空間的分配;默認值和約束的定義;數據的導入導出;多表查詢等等數據庫操作。借助Oracle數據字典,我們可以得到Oracle數據庫結構的所有信息,這對于實現oracle課程聯機考試系統無疑是至關重要的。
3 架構選擇
聯機考試系統的實現技術有多種, 可以采用客戶機/服務器(Client/Server,以下簡稱C/S)架構,也可以采用瀏覽器/服務器(Browser/Server,以下簡稱B/S)架構。C/S架構的優點在于可以對學生機進行完全的控制,但缺點是機房環境部署繁瑣;B/S架構不能控制學生機,但無需部署。系統架構的選擇要根據課程的特點而定,目前高校已經實現聯機考試的計算機課程主要包括《大學計算機基礎》、《C/C++程序設計》、《VB程序設計》、《Access數據庫》等,這些課程考試的初始答題環境和答題結果都生成并存儲于學生機上,采用C/S架構可以很方便的將這些數據收集至服務器進行評分和歸檔。而Oracle課程考試的初始答題環境和答題結果均在服務器的數據庫中,學生機只需要有Oracle客戶端程序即可答題,無需考慮學生機初始答題環境的生成和答題結果的收集,故采用B/S架構較為適宜。
4 系統設計與實現
4.1 系統關鍵模塊及功能
根據需求分析對考試系統的功能進行分解,本系統要實現的功能模塊如圖1所示。
1) 系統接口:與高校選課系統的接口(獲取開課名單和選課學生名單);與高校教學評估和評價系統的接口(為使用數據挖掘技術進行教學評估和評價積累成績數據)等。
2) 用戶管理:教師管理員信息維護;考生信息維護;用戶權限管理;考生信息查詢和統計。
3) 試卷維護:試題抽取;自動組卷;設置考試時間等。
4) 題庫維護:題型管理;基于數據字典的試題管理;基于數據字典的評分規則管理等。
5) 考試管理:考試流程控制;基于數據字典的初始答題環境的生成;基于數據字典的自動評分;考生答題結果的備份等。
6) 成績維護:成績查詢、修改、統計、發布等。
4.2 前端設計
前端包括教師端和學生端,使用ASP.NET技術,通過瀏覽器分別為考生及教師展現考生界面和教師后臺管理界面。ASP.NET是建立在公共語言運行庫上的編程框架,可用于在服務器上生成功能強大的WEB應用程序。相對于以前的ASP版本,它具有更強大的語言支持、更高的執行效率和開發效率等優點。需要說明的是,涉及到考試流程控制的部分使用了AJAX技術以實現富用戶端行為。
4.3 后端設計
除了前端用戶界面以外,考試系統的核心功能都以Package的形式被封裝在了Oracle數據庫中。這些Package隸屬于同一個具有DBA權限的Oracle帳戶。Package以加密的形式進行封裝(Oracle在創建Package的時候支持加密創建),可以充分保護源代碼。
此外,系統中還有一些游離的衍生部件,比如每位考生的初始答題環境和答題結果,考試系統將每位考生的初始答題環境部署于考生自己的Oracle帳戶下,這些帳戶只有簡單的connect和resource角色權限,并且對其設置了CPU占用和存儲空間占用約束,這樣在保障系統安全的同時又能做到對考生環境的隔離。
4.4 編碼實現
服務器包括WEB服務器和數據庫服務器各一臺。WEB服務器采用的操作系統為Windows Server 2003,開發工具使用Visual Studio 2005;數據庫服務器采用的操作系統為Turbo Linux,數據庫采用Oracle 10g,開發工具使用PL/SQL Developer 7。PL/SQL Developer是一種集成的開發環境,專門用于開發、測試、調試和優化Oracle PL/SQL存儲程序單元。
Oracle數據字典的使用在系統實現中大量出現,它廣泛存在于試題管理、評分規則管理、考生初始答題環境的生成、考試流程控制、自動評分等核心模塊中。以評分模塊為例,對“設置字段默認值”操作點進行評分的存儲過程使用了ALL_TAB_COLUMNS數據字典視圖,具體代碼如下:
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 結束語
數據字典作為Oracle數據庫的基礎組成部分,為用戶提供了完整的數據庫信息,基于數據字典可以準確并高效的構建試題、生成評分規則、自動組卷和進行機器評分。本系統投入使用后不僅對學生的學習進行了客觀的考核,還減輕了教師工作量,提高了工作效率,取得了預期的效果。
參考文獻:
[1] 李偉超,林國,張宏亮.新形勢下高校計算機基礎課教學內容和方法的探討[J].實驗室科學,2006,4(2):29-31.
[2] 唐俊武.在線考試系統開發中的幾個問題及解決方法[J].計算機與數字工程,2005,33(08):144-147.
[3] 林行健.Oracle 10g數據庫管理、應用與開發[M].北京:清華大學出版社,2005,3.