摘要:對象關系數據庫能結合單一的關系數據庫系統和單一的面向對象數據庫系統本身具有的優勢,并且克服各自的局限性,成為新的研究和討論方向。AMOS II是最新的一代對象關系數據庫,具有強大的面向對象的功能。它提供了眾多的下一代數據庫技術所應具有的特征和功能。通過對AMOS II應用案例程序的介紹,充分體現了對象-關系數據庫的優勢。
關鍵詞:對象關系數據庫;面向對象;AMOS II
中圖分類號:TP311文獻標識碼:A文章編號:1009-3044(2008)34-2016-02
A New Generation of Object-Relational Database: AMOSII
LIU Yan-hong1,2
(1.Nanjing Institute of Industry Technology Information Engineering, Nanjing 210046, China; 2.Nanjing University of Aeronautics and AstronauticsCollege of Information Science and Technology,Nanjing210016,China)
Abstract: Object-relational database can be combined with a single relational database system and a single object-oriented database system. It overcomes their limitations and is a new direction for research and discussion. AMOS II is the latest generation of object-relational database and has powerful object-oriented features. It provides the features and functions that a large number of next-generation database should have. The case of AMOS II fully reflects the advanced nature of the relational database.
Key words: object-relational database; object oriented; AMOS II
1 引言
隨著數據庫技術的發展,原有的數據庫系統很難適應新的應用領域中的復雜對象和這些對象的復雜行為的需求。新的應用需求推動了數據庫技術的研究, 其中最重要的研究方向之一就是使用一種與人們認識客觀事物的過程一致的方法, 這就是面向對象的方法。這種方法大大提高軟件開發的效率。對象關系數據庫是面向對象技術與數據庫技術相結合的產物。
2 對象-關系數據庫
對象關系數據庫兼有關系數據庫和面向對象的數據庫兩方面的特征。即它除了具有原來關系數據庫的種種特點外,還應該提供以下特點:
1) 允許用戶擴充基本數據類型。即允許用戶根據應用需求自己定義數據類型、函數和操作符,而且一經定義,這些新的數據類型、函數和操作符將存放在數據庫管理系統核心中,可供所有用戶公用。
2) 能夠在SQL中支持復雜對象。由多種基本類型或用戶定義的類型構成的對象。能夠支持子類對超類的各種特性的繼承,支持數據繼承和函數繼承,支持多重繼承,支持函數重載。能夠提供功能強大的通用規則系統,而且規則系統與其他的對象-關系能力是集成為一體的。
3 新一代對象關系數據庫的優勢
3.1 傳統的關系數據庫的缺陷
傳統的關系數據庫局限性為:
1) 面向機器的語法數據結構,數據模型單一,數據類型簡單、固定。
2) 不能依據某一類型的數據類型來擴展數據類型。
3) 結構與行為完全分離。
4) 存儲管理的對象有限,事物處理能力較差。
3.2 新一代對象關系數據庫的特征和功能
1) 數據庫應支持復雜的數據類型,并能存儲和處理復雜對象。還要具備支持用戶自定類型和可擴展能力。
2) 數據庫必須對其它系統開放。
3) 系統必須具有可移植性,可連接性,可擴展性和可互操作性。實現程序設計語言和數據庫語言的無縫的集成。
4 AMOS II應用案例分析
AMOS II是最新一代的對象關系數據庫,它充分體現了對象關系數據庫的強大功能。
4.1 學生課程成績查詢案例
有若干學生,學生信息包括學號,姓名,班級。有若干選修課程,課程信息包括課程號,課程名,成績。實現功能:1、通過查詢語句,可以查看所有的學生信息和課程信息。2、輸入學生信息如姓名,可以查看到他所選課程的相關內容。3、輸入課程名稱可以查看到選這門課的學生姓名。4、輸入學生姓名,可以統計出該生選的所有課程名稱和課程數。
4.2 案例設計與分析
1) AMOS II具有面向對象數據庫的特點。
在OODB中, 用類來描述對象的結構特征和行為特征。它有下面的定義形式:
class < 類名> [ (參數表) ]properties
{類的特征}
在本案例中課程和學生類設計如下:
create type kecheng properties(
sid charstring,//課程號//
sname charstring,//課程名//
scoreinteger //期末成績//
);
create type student properties(
tidcharstring,//學生號//
tname charstring,//學生姓名//
banjicharstring //班級//
);
創建kecheng的對象并且賦值用以下命令:
create kecheng(sid, sname,score) instances
:s1(\"01\",\"Chinese\",91),:s2(\"02\",\"English\",90),
…;
創建student的對象并且賦值用以下命令:
create student (tid, tname, banji) instances
:t1(\"08001\",\"zhangsan\",\"3ban\"),
:t2(\"08002\",\"lisi\", \"4ban\"),
…;
函數設計舉例如下:
create function o_derect(student nonkey)->
//輸入參數student類,返回該學生所選課程的
create function sname(kecheng nonkey)->charstring as stored;
create function tname(student nonkey)->charstring as stored;
create function tid(student nonkey)->charstring as stored;
…;
以上定義的源代碼保存在文件lyh.amosql中。AMOSQL類似于SQL語言。例如用下面命令對學生信息進行查詢:
select tin (x), tname(x), from student (x);
在AMOS II中運行并得出結果,如圖1。
這些類、對象、屬性和函數的設計,充分體現了面向對象技術的特點。
2) AMOS II具有強大的可擴充功能。
AMOS II提供的Java函數的接口。在AMOS II中可以調用用戶自定義的Java函數。
本案例用Java語言定義函數tongji()并保存在名為lyh.java的文件中。該函數的功能是接受輸入參數為學生名,輸出該學生所選擇的課程名并統計出課程個數。
為了能在AMOS II調用該函數,需要在javademo.osql文件中添加下面的語句:
create function tongji(charstring)->charstring as foreign \"JAVA:lyh/tongji\";
運行后如圖2所示。
這充分體現了AMOS II允許用戶根據應用需求自己定義數據類型、函數,具有強大的可擴展功能。
5 總結和展望
綜上,對象—關系數據庫是面向對象技術與數據庫技術相結合的產物。AMOS II是最新的一代對象關系數據庫,具有強大的面向對象的功能。從學生課程成績查詢案例,可以看到AMOS II具有面向對象數據庫的特點,允許用戶根據應用需求自己定義數據類型、函數和操作符,具有強大的可擴展功能,體現了對象關系數據庫的先進性。本文用具體案例介紹了在AMOS II中如何定義類,對象和函數,和如何調用Java自定義函數,實現統計函數的功能。
對象—關系數據庫技術還處于研究發展階段,在很多方面它還面臨很多的挑戰,例如對象—關系數據庫還可以從面向對象數據庫那里吸收養分和研究成果,如路徑索引、對象聚集等。相信對象—關系數據庫有著美好的發展前景。
參考文獻:
[1] 趙志升,許素文,楊小姝.對象——關系數據庫管理系統及其特性與實現[J].電腦開發與應用,2002,15(8):47-48.
[2] 王治.對象—關系數據庫技術及其發展[J].九江師專學報:自然科學版,2003,22(5):86-88.
[3] 郭小薈.對象關系數據庫系統實現方法的研究[J].2001,1(2):29-32.
[4] 張敏,尹俊文.對象關系數據庫系統模型及其應用[J].邵陽學院學報:自然科學版,2005,2(1):45-47.