前言:想要寫出一篇令人眼前一亮的文章嗎?我們特意為您整理了5篇對象數(shù)據(jù)庫范文,相信會為您的寫作帶來幫助,發(fā)現(xiàn)更多的寫作思路和靈感。
關(guān)鍵詞:對象數(shù)據(jù)庫;編譯技術(shù);屬性
中圖分類號:G250.74 文獻(xiàn)標(biāo)識碼:A 文章編號:
作為計(jì)算機(jī)軟件的一個重要分支,數(shù)據(jù)庫技術(shù)一直是備受業(yè)界關(guān)注的焦點(diǎn)。從20世紀(jì)60年代末開始,數(shù)據(jù)庫技術(shù)經(jīng)歷了層次數(shù)據(jù)庫、網(wǎng)狀數(shù)據(jù)庫和進(jìn)而進(jìn)入關(guān)系數(shù)據(jù)庫階段至今,數(shù)據(jù)庫技術(shù)的研究也不斷取得進(jìn)展。80年代,關(guān)系數(shù)據(jù)庫是發(fā)展的主流,幾乎所有新推出的DBMS產(chǎn)品都是關(guān)系型的[1]。研究的方向主要有兩條:一是改造和擴(kuò)充關(guān)系數(shù)據(jù)庫,以適應(yīng)新的應(yīng)用需求;二是改用新的數(shù)據(jù)模型,例如面向?qū)ο蟮臄?shù)據(jù)模型、基于邏輯的數(shù)據(jù)模型等。
1、面向?qū)ο髷?shù)據(jù)庫概述
屬性值都是直接量的對象是簡單對象,用其他對象作屬性值的對象是復(fù)合對象,復(fù)合對象是一個層次結(jié)構(gòu),這是對象概念不同于關(guān)系模型中元組的重要特征。對象間通過發(fā)送消息實(shí)現(xiàn)相互通信,屬性值查詢和修改只有通過向?qū)ο蟀l(fā)消息調(diào)用才能實(shí)現(xiàn);具有相同特征的對象被組織成了類,類間存在繼承、聚集的關(guān)聯(lián)。與傳統(tǒng)的數(shù)據(jù)模型相比,面向?qū)ο髷?shù)據(jù)模型具有許多優(yōu)勢,它具有表示復(fù)雜對象的能力,通過封裝和信息隱藏概念提供了模塊化機(jī)制,通過封裝和繼承概念提供了軟件重用機(jī)制,而通過滯后聯(lián)編等概念得到了系統(tǒng)擴(kuò)充能力。面向?qū)ο髷?shù)據(jù)庫(OODB)是指對象的集合、行為、狀態(tài)和聯(lián)系是以面向?qū)ο髷?shù)據(jù)模型來定義的。面向?qū)ο髷?shù)據(jù)庫系統(tǒng)(OODBS)是指支持定義和操作OODB的數(shù)據(jù)庫系統(tǒng)[2]。
2、面向?qū)ο髷?shù)據(jù)庫的基本要素及其結(jié)構(gòu)
(1)抽象。隨著網(wǎng)絡(luò)技術(shù)和分布式數(shù)據(jù)庫技術(shù)的發(fā)展,產(chǎn)生了客戶機(jī)/服務(wù)器(Client/Server)結(jié)構(gòu)和微內(nèi)核結(jié)構(gòu)的操作系統(tǒng)。客戶機(jī)/服務(wù)器結(jié)構(gòu)的思想如下:將操作系統(tǒng)分成運(yùn)行在用戶態(tài)并以C/S方式活動的進(jìn)程以及運(yùn)行在核心態(tài)的內(nèi)核兩大部分。內(nèi)核部分除外,操作系統(tǒng)的其余部分將會被分成若干相對獨(dú)立的進(jìn)程,并且每一個進(jìn)程實(shí)現(xiàn)一類服務(wù),稱作服務(wù)器進(jìn)程,例如,提供文件管理服務(wù)、進(jìn)程管理服務(wù)、存儲管理服務(wù)、網(wǎng)絡(luò)通信服務(wù),等等。(用戶進(jìn)程也在該層并以C/S方式活動,是一種客戶進(jìn)程)。服務(wù)器進(jìn)程的任務(wù)是檢查是否有客戶提出服務(wù)請求,如果有請求則在滿足客戶的要求后返回結(jié)果,于是,用戶進(jìn)程與服務(wù)器進(jìn)程形成了客戶機(jī)/服務(wù)器關(guān)系。運(yùn)行在核心態(tài)的內(nèi)核把該消息傳給服務(wù)器;服務(wù)器執(zhí)行相應(yīng)操作,再通過內(nèi)核用另一種消息把結(jié)果返回給用戶[3]。
(2)封裝性(信息隱蔽)。以往的電子商務(wù)應(yīng)用系統(tǒng)常常采用C/S結(jié)構(gòu)進(jìn)行數(shù)據(jù)的管理。所謂C/S結(jié)構(gòu)即Client/Server(客戶機(jī)/服務(wù)器),是一種兩層結(jié)構(gòu),采用Intranet技術(shù)。
(3)共享性。SQL Server Management Studio替代了原有SQL Server 2000下的企業(yè)管理器的功能,可以充分管理SQL Server。它是一套管理工具,采用簡易用戶接口提供輔助開發(fā)方程式工具和管理服務(wù)器的許多功能,用于管理從屬于SQL Server的組件。此集成環(huán)境使用戶可以在一個界面內(nèi)執(zhí)行各種任務(wù),例如,實(shí)現(xiàn)備份數(shù)據(jù)、編輯查詢和自動執(zhí)行常見函數(shù)等任務(wù),也大大改善了創(chuàng)建表、視圖、觸發(fā)器、用戶自定義函數(shù)和存儲過程的工具。
3、面向?qū)ο髷?shù)據(jù)庫的編譯技術(shù)
假如我們進(jìn)一步把圖1的對象數(shù)據(jù)庫框架從軟件開發(fā)角度進(jìn)行分離的話,除去安全部分內(nèi)容,則數(shù)據(jù)庫的框架結(jié)構(gòu)可以簡化為如圖1所示。
圖1基于對象數(shù)據(jù)庫設(shè)計(jì)框架示意圖
通過將數(shù)據(jù)加密、表、數(shù)據(jù)庫、Web Form代碼及表示層(Web Form)的分離,分別以類、Web服務(wù)、ASPX等的形式存在,因此不僅實(shí)現(xiàn)了各業(yè)務(wù)邏輯之間的無縫連接,同時也增加了代碼的系統(tǒng)的可維護(hù)性和可重用性。打開關(guān)閉連接數(shù)據(jù)庫、執(zhí)行數(shù)據(jù)的增、刪、改、查等功能。CourseAction.java實(shí)現(xiàn)了課程管理的請求轉(zhuǎn)發(fā),為了實(shí)現(xiàn)對ADD、REMOVE、LIST、VIEW、TRASH、EDIT、SAVE等不同的要求,CourseAction類設(shè)計(jì)實(shí)現(xiàn)了performAdd()、performRemove()、performList()、performView()、performTrash()、performEdit()和performSave()方法。由于這七個方法在編寫風(fēng)格上基本一致,所以我們針對performList()方法來說明CourseAction類的構(gòu)建過程。下面是CourseAction類的部分實(shí)現(xiàn)代碼。數(shù)據(jù)庫技術(shù)在系統(tǒng)中是十分重要的,狀態(tài)應(yīng)該隨時能查詢到[4]。
AddStrings(pString)返回一個字符串的基于0的編號,該值用來連接字符串到按鈕上,其中的字符串參數(shù)pString需要兩個結(jié)束符來表示結(jié)尾,必須將字符串寫成如下形式:pString= "Only one string to add\0";CString類不能提供這樣的功能,因?yàn)椴豢赡茉贑String中保存超過一個結(jié)束符的字符串。所以,將CString中的字符串取出,以char定義的字符串保存,再對該字符串添加一個結(jié)束符,做法如下:
調(diào)用工具欄類。先在類CA1Dlg中實(shí)例化CStandardBar的對象。
CStandardBar m_StandardBar;
別忘了在這個文件里包含CStandardBar類聲明所在的頭文件。
#include "StandardBar.h"
m_StandardBar.AutoSize(); //重新計(jì)算控件的大小
return 0;
}
參考文獻(xiàn)
[1]茅健. 2.0+SQL Server 2005全程指南[M]. 電子工業(yè)出版社,2004.
[2]啟明工作室. 精通SQL Server 2005數(shù)據(jù)庫應(yīng)用系統(tǒng)開發(fā)[M]. 北京:人民郵電出版社,2007.
關(guān)鍵詞:面向?qū)ο?軟件開發(fā);數(shù)據(jù)庫;程序設(shè)計(jì)
中圖分類號:TP311.1 文獻(xiàn)標(biāo)識碼:A文章編號:1007-9599 (2010) 09-0000-01
Database Application Based on Object-oriented Technology
Zhang Lin
(Ocean University of China,Shandong266033,China)
Abstract:Based on the object-oriented technology,aiming at the characteristics of relational database application methods are discussed, and some books management system as example analysis.The paper expounds the programmer can make better use of object-oriented technology,in a more natural way of dealing with the underlying database data.
Keywords:Object-oriented;Software development;Database;
Programming
一、面向?qū)ο蟮募夹g(shù)特點(diǎn)
面向?qū)ο笫且环N從組織結(jié)構(gòu)上模擬客觀世界的方法,它從客觀世界的基本成分――對象出發(fā),通過抽象來實(shí)現(xiàn)對客觀世界的模擬,并通過抽象提取出對象之間的相互聯(lián)系和相互作用。面向?qū)ο蟮乃枷胧紫瘸霈F(xiàn)在程序設(shè)計(jì)語言中,隨后,逐漸滲透到許多復(fù)雜工程領(lǐng)域。
面向?qū)ο蟾拍畹暮诵氖菍ο?即對一個信息及相應(yīng)處理的描述。對象可分為客觀世界中的對象和目標(biāo)系統(tǒng)中的對象兩大類。前者為現(xiàn)實(shí)中遇到的每一個實(shí)體,可以是一部電話、一所房子、一本書,可以是數(shù)據(jù)結(jié)構(gòu)中的棧和隊(duì)列,也可以是任何的處理過程。后者為面向?qū)ο蟪绦蛟O(shè)計(jì)中的對象,是一種特殊的數(shù)據(jù)結(jié)構(gòu),它包括對象的形狀數(shù)據(jù)及對此數(shù)據(jù)進(jìn)行的各種操作,可用公式表示為:對象=數(shù)據(jù)+操作。面向?qū)ο蠹夹g(shù)通過對現(xiàn)實(shí)世界中對象的抽象以及對各個對象之間的相互關(guān)系、相互作用的描述實(shí)現(xiàn)由現(xiàn)實(shí)世界到目標(biāo)系統(tǒng)的映射。
二、基于面向?qū)ο蠹夹g(shù)的關(guān)系數(shù)據(jù)庫應(yīng)用方法
(一)整體思路
面向?qū)ο蟮脑O(shè)計(jì)方法需要尋找應(yīng)用程序的領(lǐng)域類,類中封裝了數(shù)據(jù)和對數(shù)據(jù)操縱的方法,對類的實(shí)例化就得到對象,所以必須要解決好對象的存放、檢索等問題。在面向?qū)ο髷?shù)據(jù)庫中,數(shù)據(jù)以對象的形式保存,并且數(shù)據(jù)自動保存對象間的關(guān)系。數(shù)據(jù)庫不需要集合也不需要分解,而且數(shù)據(jù)庫由可靠的圖像組成,這些圖像是與對象有關(guān)的狀態(tài)圖像。因?yàn)槊嫦驅(qū)ο髷?shù)據(jù)庫處理的是對象,而不是行和列,所以需要定義相關(guān)的方法以便對對象進(jìn)行操作。
(二)對象映射成關(guān)系數(shù)據(jù)庫
由于RDBMS以二維表為基本管理單元,所以對象模型最終是由二維表及表問關(guān)系來描述,即對象模型向數(shù)據(jù)庫概念模型的映射就是向數(shù)據(jù)庫表的變換過程。從數(shù)據(jù)庫的角度看,關(guān)聯(lián)和聚合/組合關(guān)系之間的唯一不同是對象相互之問的綁定程度,對于聚合和組合,在數(shù)據(jù)庫中對整體所做的操作通常需要同時對部分進(jìn)行操作,而關(guān)聯(lián)則不同。在聚合情況下,在整體中讀取時,通常希望在部分中讀取,而在關(guān)聯(lián)情況下,需要執(zhí)行什么操作則不明顯。在將對象保存到數(shù)據(jù)庫中或從數(shù)據(jù)庫中刪除對象也存在相同的情況。
三、基于面向?qū)ο蠹夹g(shù)的數(shù)據(jù)庫應(yīng)用實(shí)例
根據(jù)需求,需要開發(fā)一個圖書管理信息系統(tǒng),系統(tǒng)選用SQL Server 2000作為后臺數(shù)據(jù)庫,前臺選擇Visual C++作為開發(fā)語言,Visual C++中的MFC為Visual C++提供了大量的類,把Windows API函數(shù)封裝在類中,方便用戶開發(fā)Windows應(yīng)用程序。
按照對象映射成關(guān)系數(shù)據(jù)庫的有關(guān)規(guī)則,并結(jié)合實(shí)際需求,給出系統(tǒng)的數(shù)據(jù)表結(jié)構(gòu)如下:
管理員信息表(管理員編號PK,管理員姓名,管理員類別,管理員密碼,管理員性別,聯(lián)系電話,地址);
圖書類別表(圖書類別PK,可借閱天數(shù));
借書信息表(記錄編號PK,圖書編號FK,圖書名稱,圖書類別FK,價格,讀者編號FK,讀者姓名,借書時間,借書年份,借書當(dāng)日位于當(dāng)年的日子數(shù));
圖書信息表(圖書編號PK,圖書名稱,圖書類別FK,出版社,價格,入庫時間,圖書狀態(tài),讀者編號FK,借閱頻率,說明);
讀者留言表(記錄編號PK,讀者編號FK,讀者姓名,留言時間,留言信息);
讀者信息表(讀者編號PK,讀者姓名,讀者類別FK,讀者密碼,讀者性別,聯(lián)系電話,地址,讀者所在系別,注冊時間);
讀者類別表(讀者類別PK,可借閱冊數(shù));
還書信息表(記錄編號PK,圖書編號FK,圖書名稱,圖書類別FK,價格,讀者編號FK,讀者姓名,還書時間);
罰款信息表(記錄編號PK,圖書編號FK,圖書名稱,圖書類別FK,價格,讀者編號FK,讀者姓名,借書時間,還書時間,超期天數(shù),掛失時間,罰金,是否繳納罰金);
數(shù)據(jù)表之間通過主鍵(PK)和外鍵(FK)建立關(guān)聯(lián),以實(shí)現(xiàn)數(shù)據(jù)約束。為了更方便地對數(shù)據(jù)進(jìn)行操作和管理,圖書管理信息系統(tǒng)設(shè)計(jì)并使用專門的數(shù)據(jù)庫類CADOCONN來封裝系統(tǒng)數(shù)據(jù)庫,其中包含了連接數(shù)據(jù)庫的代碼。在ADOCONN.H中定義指向Connection對象的指針和指向Recordset對象的指針。按照面向?qū)ο蟮挠^點(diǎn),對數(shù)據(jù)表封裝的偽代碼如下:
class 數(shù)據(jù)表名
{
//數(shù)據(jù)表中的字段名
//對數(shù)據(jù)表操作的方法完成查詢、更新、刪除等操作,這些方法中包含建立、斷開連接的語句和要執(zhí)行的SQL語句
//其他的方法
}
四、結(jié)束語
基于面向?qū)ο蠹夹g(shù)的數(shù)據(jù)庫管理系統(tǒng)的設(shè)計(jì)使得需求分析者和數(shù)據(jù)庫設(shè)計(jì)者之間能夠?qū)崿F(xiàn)很好的交流,其技術(shù)關(guān)鍵是面向?qū)ο蟮膶ο竽P图捌湎驍?shù)據(jù)庫結(jié)構(gòu)的轉(zhuǎn)化。面向?qū)ο蟮臄?shù)據(jù)模型描述了真實(shí)世界的對象,以及對象間的關(guān)系和限制,并通過面向?qū)ο蟮臄?shù)據(jù)庫系統(tǒng)加以實(shí)現(xiàn)。
參考文獻(xiàn):
關(guān)鍵詞:對象關(guān)系數(shù)據(jù)庫;面向?qū)ο?;AMOS II
中圖分類號:TP311文獻(xiàn)標(biāo)識碼: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 引言
隨著數(shù)據(jù)庫技術(shù)的發(fā)展,原有的數(shù)據(jù)庫系統(tǒng)很難適應(yīng)新的應(yīng)用領(lǐng)域中的復(fù)雜對象和這些對象的復(fù)雜行為的需求。新的應(yīng)用需求推動了數(shù)據(jù)庫技術(shù)的研究, 其中最重要的研究方向之一就是使用一種與人們認(rèn)識客觀事物的過程一致的方法, 這就是面向?qū)ο蟮姆椒ā_@種方法大大提高軟件開發(fā)的效率。對象關(guān)系數(shù)據(jù)庫是面向?qū)ο蠹夹g(shù)與數(shù)據(jù)庫技術(shù)相結(jié)合的產(chǎn)物。
2 對象-關(guān)系數(shù)據(jù)庫
對象關(guān)系數(shù)據(jù)庫兼有關(guān)系數(shù)據(jù)庫和面向?qū)ο蟮臄?shù)據(jù)庫兩方面的特征。即它除了具有原來關(guān)系數(shù)據(jù)庫的種種特點(diǎn)外,還應(yīng)該提供以下特點(diǎn):
1) 允許用戶擴(kuò)充基本數(shù)據(jù)類型。即允許用戶根據(jù)應(yīng)用需求自己定義數(shù)據(jù)類型、函數(shù)和操作符,而且一經(jīng)定義,這些新的數(shù)據(jù)類型、函數(shù)和操作符將存放在數(shù)據(jù)庫管理系統(tǒng)核心中,可供所有用戶公用。
2) 能夠在SQL中支持復(fù)雜對象。由多種基本類型或用戶定義的類型構(gòu)成的對象。能夠支持子類對超類的各種特性的繼承,支持?jǐn)?shù)據(jù)繼承和函數(shù)繼承,支持多重繼承,支持函數(shù)重載。能夠提供功能強(qiáng)大的通用規(guī)則系統(tǒng),而且規(guī)則系統(tǒng)與其他的對象-關(guān)系能力是集成為一體的。
3 新一代對象關(guān)系數(shù)據(jù)庫的優(yōu)勢
3.1 傳統(tǒng)的關(guān)系數(shù)據(jù)庫的缺陷
傳統(tǒng)的關(guān)系數(shù)據(jù)庫局限性為:
1) 面向機(jī)器的語法數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)模型單一,數(shù)據(jù)類型簡單、固定。
2) 不能依據(jù)某一類型的數(shù)據(jù)類型來擴(kuò)展數(shù)據(jù)類型。
3) 結(jié)構(gòu)與行為完全分離。
4) 存儲管理的對象有限,事物處理能力較差。
3.2 新一代對象關(guān)系數(shù)據(jù)庫的特征和功能
1) 數(shù)據(jù)庫應(yīng)支持復(fù)雜的數(shù)據(jù)類型,并能存儲和處理復(fù)雜對象。還要具備支持用戶自定類型和可擴(kuò)展能力。
2) 數(shù)據(jù)庫必須對其它系統(tǒng)開放。
3) 系統(tǒng)必須具有可移植性,可連接性,可擴(kuò)展性和可互操作性。實(shí)現(xiàn)程序設(shè)計(jì)語言和數(shù)據(jù)庫語言的無縫的集成。
4 AMOS II應(yīng)用案例分析
AMOS II是最新一代的對象關(guān)系數(shù)據(jù)庫,它充分體現(xiàn)了對象關(guān)系數(shù)據(jù)庫的強(qiáng)大功能。
4.1 學(xué)生課程成績查詢案例
有若干學(xué)生,學(xué)生信息包括學(xué)號,姓名,班級。有若干選修課程,課程信息包括課程號,課程名,成績。實(shí)現(xiàn)功能:1、通過查詢語句,可以查看所有的學(xué)生信息和課程信息。2、輸入學(xué)生信息如姓名,可以查看到他所選課程的相關(guān)內(nèi)容。3、輸入課程名稱可以查看到選這門課的學(xué)生姓名。4、輸入學(xué)生姓名,可以統(tǒng)計(jì)出該生選的所有課程名稱和課程數(shù)。
4.2 案例設(shè)計(jì)與分析
1) AMOS II具有面向?qū)ο髷?shù)據(jù)庫的特點(diǎn)。
在OODB中, 用類來描述對象的結(jié)構(gòu)特征和行為特征。它有下面的定義形式:
class < 類名> [ (參數(shù)表) ]properties
{類的特征}
在本案例中課程和學(xué)生類設(shè)計(jì)如下:
create type kecheng properties(
sid charstring,//課程號//
sname charstring,//課程名//
scoreinteger //期末成績//
);
create type student properties(
tidcharstring,//學(xué)生號//
tname charstring,//學(xué)生姓名//
banjicharstring //班級//
);
創(chuàng)建kecheng的對象并且賦值用以下命令:
create kecheng(sid, sname,score) instances
:s1("01","Chinese",91),:s2("02","English",90),
…;
創(chuàng)建student的對象并且賦值用以下命令:
create student (tid, tname, banji) instances
:t1("08001","zhangsan","3ban"),
:t2("08002","lisi", "4ban"),
…;
函數(shù)設(shè)計(jì)舉例如下:
create function o_derect(student nonkey)-> as stored;
//輸入?yún)?shù)student類,返回該學(xué)生所選課程的元組//
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語言。例如用下面命令對學(xué)生信息進(jìn)行查詢:
select tin (x), tname(x), from student (x);
在AMOS II中運(yùn)行并得出結(jié)果,如圖1。
這些類、對象、屬性和函數(shù)的設(shè)計(jì),充分體現(xiàn)了面向?qū)ο蠹夹g(shù)的特點(diǎn)。
2) AMOS II具有強(qiáng)大的可擴(kuò)充功能。
AMOS II提供的Java函數(shù)的接口。在AMOS II中可以調(diào)用用戶自定義的Java函數(shù)。
本案例用Java語言定義函數(shù)tongji()并保存在名為lyh.java的文件中。該函數(shù)的功能是接受輸入?yún)?shù)為學(xué)生名,輸出該學(xué)生所選擇的課程名并統(tǒng)計(jì)出課程個數(shù)。
為了能在AMOS II調(diào)用該函數(shù),需要在javademo.osql文件中添加下面的語句:
create function tongji(charstring)->charstring as foreign "JAVA:lyh/tongji";
運(yùn)行后如圖2所示。
這充分體現(xiàn)了AMOS II允許用戶根據(jù)應(yīng)用需求自己定義數(shù)據(jù)類型、函數(shù),具有強(qiáng)大的可擴(kuò)展功能。
5 總結(jié)和展望
綜上,對象―關(guān)系數(shù)據(jù)庫是面向?qū)ο蠹夹g(shù)與數(shù)據(jù)庫技術(shù)相結(jié)合的產(chǎn)物。AMOS II是最新的一代對象關(guān)系數(shù)據(jù)庫,具有強(qiáng)大的面向?qū)ο蟮墓δ?。從學(xué)生課程成績查詢案例,可以看到AMOS II具有面向?qū)ο髷?shù)據(jù)庫的特點(diǎn),允許用戶根據(jù)應(yīng)用需求自己定義數(shù)據(jù)類型、函數(shù)和操作符,具有強(qiáng)大的可擴(kuò)展功能,體現(xiàn)了對象關(guān)系數(shù)據(jù)庫的先進(jìn)性。本文用具體案例介紹了在AMOS II中如何定義類,對象和函數(shù),和如何調(diào)用Java自定義函數(shù),實(shí)現(xiàn)統(tǒng)計(jì)函數(shù)的功能。
對象―關(guān)系數(shù)據(jù)庫技術(shù)還處于研究發(fā)展階段,在很多方面它還面臨很多的挑戰(zhàn),例如對象―關(guān)系數(shù)據(jù)庫還可以從面向?qū)ο髷?shù)據(jù)庫那里吸收養(yǎng)分和研究成果,如路徑索引、對象聚集等。相信對象―關(guān)系數(shù)據(jù)庫有著美好的發(fā)展前景。
參考文獻(xiàn):
[1] 趙志升,許素文,楊小姝.對象――關(guān)系數(shù)據(jù)庫管理系統(tǒng)及其特性與實(shí)現(xiàn)[J].電腦開發(fā)與應(yīng)用,2002,15(8):47-48.
[2] 王治.對象―關(guān)系數(shù)據(jù)庫技術(shù)及其發(fā)展[J].九江師專學(xué)報:自然科學(xué)版,2003,22(5):86-88.
關(guān)鍵詞:面向?qū)ο髷?shù)據(jù)庫系統(tǒng);數(shù)據(jù)模型;內(nèi)容管理系統(tǒng)
中圖分類號:TP311 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2013)09-2033-04
1 面向?qū)ο笈c面向?qū)ο髷?shù)據(jù)庫系統(tǒng)
面向?qū)ο螅∣O)方法的核心思想,是將系統(tǒng)問題域中的實(shí)體對象,直接映射為軟件的構(gòu)成元素。認(rèn)為客觀世界本來是由許多不同種類的對象構(gòu)成的,在不同對象之間的相互聯(lián)系和相互作用下,才構(gòu)成完整的事物。
面向?qū)ο蠓椒▽W(xué)所引入的對象、方法、消息、類、實(shí)例、繼承性、封裝性等重要概念,為軟件開發(fā)的分析和設(shè)計(jì)帶來新的思維過程和方法,對于實(shí)現(xiàn)大型的、復(fù)雜的系統(tǒng)分析和設(shè)計(jì)奠定了良好的科學(xué)技術(shù)基礎(chǔ)。
近年以來,數(shù)據(jù)庫開發(fā)商們都已經(jīng)在關(guān)系數(shù)據(jù)庫系統(tǒng)中很好地支持了對象到關(guān)系表的映射,如Oracle8i 、DB2-5等等。但是,利用面向?qū)ο蠼<夹g(shù)所建立起來的對象模型,無法直接映射到關(guān)系結(jié)構(gòu)中,需要通過某種方法,進(jìn)行必不可少的轉(zhuǎn)換。但是更重要的,是概念上的混亂和額外開發(fā)負(fù)擔(dān)所帶來的問題。
面向?qū)ο髷?shù)據(jù)庫系統(tǒng)(OODBS)能直接對應(yīng)面向?qū)ο螅∣O)數(shù)據(jù)模型,支持自定義的各種數(shù)據(jù)類型和結(jié)構(gòu),并提供數(shù)據(jù)建?;A(chǔ)上的復(fù)雜數(shù)據(jù)操縱能力,包括:定義專用的控制運(yùn)算,定義語義關(guān)系運(yùn)算,以及事務(wù)管理運(yùn)算,等等。
OODBS 是持久共享對象庫的管理者;每個對象庫對應(yīng)模型所定義的對象集合。
2 面向?qū)ο髷?shù)據(jù)庫系統(tǒng)的特性
面向?qū)ο髷?shù)據(jù)庫系統(tǒng)(OODBS) 賦予數(shù)據(jù)庫設(shè)計(jì)和應(yīng)用開發(fā)人員很強(qiáng)的面向?qū)ο竽芰Γ瑥亩蟠髷U(kuò)展了數(shù)據(jù)庫系統(tǒng)的應(yīng)用領(lǐng)域,提高了開發(fā)人員的工作效率和應(yīng)用系統(tǒng)的質(zhì)量。面向?qū)ο髷?shù)據(jù)庫系統(tǒng)具有以下特性:
① 具有表示和構(gòu)造復(fù)雜對象的能力。
② 封裝性和信息隱藏技術(shù)提供了程序的模塊化機(jī)制。
③ 能夠表達(dá)繼承和類層次的關(guān)系。
④ 一般為原生數(shù)據(jù)庫,直接使用編程語言操作數(shù)據(jù)庫,提高程序員開發(fā)持久層階段的效率。
3 開源的面向?qū)ο蟮臄?shù)據(jù)庫DB4O
DB4O(Database 4 Object)就是一家來自加州硅谷的開源面向?qū)ο髷?shù)據(jù)庫公司 db4objects 設(shè)計(jì)和實(shí)現(xiàn)的一款開源的性能卓越的純面向?qū)ο髷?shù)據(jù)庫。目前支持.NET和java兩種編程語言。
db4o主要特性如下:
① 100% 原生的面向?qū)ο髷?shù)據(jù)庫。
② 高性能db4o 官方公布的基準(zhǔn)測試數(shù)據(jù),如表1所示(表中的數(shù)值表示相對速度)。db4o 比采用 Hibernate/MySQL 方案在某些測試線路上速度高出 44 倍之多!并且安裝簡單,僅僅需要 400Kb 左右的 .jar 或 .dll 庫文件。
③ 支持多種平臺db4o 支持從 Java 1.1 到 Java 5.0,此外還支持 .NET 、 CompactFramework 、 Mono 等。
④ 開源模式 與其他 ODBMS 不同,db4o 為開源軟件,通過開源社區(qū)的力量驅(qū)動開發(fā) db4o 產(chǎn)品。
4 J2EE系統(tǒng)的設(shè)計(jì)
目前比較成熟的WEB應(yīng)用的模型,即J2EE系統(tǒng)的架構(gòu)模型——MVC2,MVC+Struts,如圖1所示。
本研究結(jié)合面向?qū)ο髷?shù)據(jù)庫DB4O的特性和J2EE系統(tǒng)的特性,以內(nèi)容管理系統(tǒng)CMS(Content Management System)作為實(shí)現(xiàn)的載體。
4.1 內(nèi)容管理系統(tǒng)模塊的設(shè)計(jì)
根據(jù)新聞管理系統(tǒng)的特殊性,分為前臺系統(tǒng)和后臺管理系統(tǒng)。前臺系統(tǒng)的功能模塊如圖2所示。
后臺管理的系統(tǒng)功能模塊如圖3所示。
4.2 內(nèi)容管理系統(tǒng)數(shù)據(jù)庫設(shè)計(jì)
內(nèi)容管理系統(tǒng)最為主要的數(shù)據(jù)庫表的設(shè)計(jì)新聞這張表,其他的表的設(shè)計(jì)都是圍繞這張表進(jìn)行,所以整個系統(tǒng)的數(shù)據(jù)庫表的設(shè)計(jì)如圖4所示。
所有表的id都由系統(tǒng)生成唯一的標(biāo)識,User作為News表的user屬性的類型,Type作為News表的type屬性的類型,Comment作為News表的comments屬性的類型,并且comments還是數(shù)組類型,這樣能夠很好的體現(xiàn)此系統(tǒng)中每個數(shù)據(jù)表的對象關(guān)系。
4.3 內(nèi)容管理系統(tǒng)的實(shí)現(xiàn)
由于面向?qū)ο髷?shù)據(jù)庫DB4O不同于傳統(tǒng)的關(guān)系型數(shù)據(jù)庫,而其中最大的特點(diǎn)是不再有sql語句對數(shù)據(jù)庫進(jìn)行操作,所以對于和數(shù)據(jù)庫交互的開啟、關(guān)閉、增、刪、改、查的操作封裝城公用類(BaseDAO)進(jìn)行相關(guān)的操作。而這些對數(shù)據(jù)庫的操作中最有特點(diǎn)的則是查詢,因?yàn)闆]有sql語句,所以在此封裝了一個玫舉用于判斷對于某個字段的查詢是相等,相似,大于,小于,還是不相等。查詢操作符的玫舉封裝代碼,如圖5所示。
在查詢操作時就能夠和關(guān)系數(shù)據(jù)庫類似的進(jìn)行相等、相似、大于、小于、不相等的查詢。生成組合查詢條件的代碼,如圖6所示。
生成組合查詢條件的代碼說明:傳入?yún)?shù),query為查詢條件的實(shí)例,fields為查詢的字段名,values為對應(yīng)查詢字段具體的值,queryTypes為對應(yīng)查詢條件的操作類型即相等、相似、大于、小于、不相等之一。Fields,values,queryTypes為相同大小的數(shù)組,并且按照數(shù)組下標(biāo)一一對應(yīng)。
4.4 新聞系統(tǒng)的特殊查詢
新聞系統(tǒng)大部分的操作都是查看最新的新聞,結(jié)合DB4O數(shù)據(jù)庫在執(zhí)行查詢(client.query())時的一些特性,即每次會取出數(shù)據(jù)庫中此對象類的所有IDs,此處為所有News對象的ID。所以,單獨(dú)對這部分操作進(jìn)行處理。多個查詢操作在一段短時間訪問getNewsList方法時,在第一個查詢操作還沒有關(guān)閉數(shù)據(jù)庫之前到來的查詢,繼續(xù)使用第一個操作查詢打開的連接和得到的數(shù)據(jù)集合對象(ObjectSet)由此提高性能。
5 結(jié)束語
面向?qū)ο蟮臄?shù)據(jù)庫在J2EE系統(tǒng)中的應(yīng)用,就目前而言應(yīng)用不是很廣泛,但是就其自身的特性在某一些領(lǐng)域運(yùn)用面向?qū)ο蟮臄?shù)據(jù)庫可能會起到優(yōu)化系統(tǒng),提高性能的作用。目前DB4O是主要用于嵌入式應(yīng)用開發(fā)的數(shù)據(jù)庫,但是它優(yōu)良的性能,而且比較優(yōu)秀的事務(wù)管理,同樣能讓其在企業(yè)應(yīng)用中合理的應(yīng)用能發(fā)揮很好的作用。此內(nèi)容管理系統(tǒng)是把面向?qū)ο蟮臄?shù)據(jù)庫DB4O用于J2EE項(xiàng)目中的一次嘗試,并且取得了不錯的效果。不過是不是適合更復(fù)雜的企業(yè)應(yīng)用系統(tǒng)還需要進(jìn)一步的探索和研究。
參考文獻(xiàn):
[1] 夏素霞,袁宗福,金立平.OO模型中ODL語言的研究與實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用與軟件,2005(5).
[2] 王意潔.面向?qū)ο髷?shù)據(jù)庫的并行查詢處理與事務(wù)管理[M].長沙:國防科技大學(xué)出版社,2005.
[3] 徐潔磐.面向?qū)ο髷?shù)據(jù)庫系統(tǒng)及其應(yīng)用[M].北京:科學(xué)出版社,2003.
[4] 王珊,薩師煊.數(shù)據(jù)庫系統(tǒng)概念[M].北京:高等教育出版社,2006.
[5] (印度) Kumar B V, Sangeetha S, Subrahmanya S V.深入淺出J 2 EE架構(gòu) 應(yīng)用程序設(shè)計(jì)與部署的原理[M].北京:清華大學(xué)出版社,2006.
[6] (美) Darren Broemmer.J 2 EE應(yīng)用與實(shí)踐技巧 Java設(shè)計(jì)模式、自動化與性能[M].北京:電子工業(yè)出版社,2004.
關(guān)鍵字:面向?qū)ο髷?shù)據(jù)庫;多媒體數(shù)據(jù)庫
中圖分類號:TP311.13文獻(xiàn)標(biāo)識碼:A文章編號:1007-9599 (2010) 10-0000-01
Object-oriented Technology Application in the Multimedia Database
Xiao Ling
(Puyang Vocational and Technical College,Puyang457001,China)
Abstract:With the network technology and the rapid development of multimedia technology,and the growing wealth of multimedia information,object-oriented database management system get concern to the industry in recent years,object-oriented database technology has become a research hotspot.
Keywords:Object-oriented database;Multimedia database
隨著多媒體數(shù)據(jù)庫的引入,對數(shù)據(jù)的管理方法也在隨之變革。我們面臨著這樣的問題:如果基本數(shù)據(jù)不再是字符數(shù)值型,將如何檢索圖像、聲音,甚至是視頻數(shù)據(jù)。隨著技術(shù)的不斷更新發(fā)展,產(chǎn)生了許多可以對多媒體數(shù)據(jù)進(jìn)行管理和使用的技術(shù),例如面向?qū)ο髷?shù)據(jù)庫、基于多媒體內(nèi)容檢索技術(shù)、超媒體技術(shù)等等。
面向?qū)ο髷?shù)據(jù)庫系統(tǒng)(Object Oriented Data Base System,簡稱OODBS)是面向?qū)ο蟪绦蛟O(shè)計(jì)方法與數(shù)據(jù)庫技術(shù)相結(jié)合的產(chǎn)物。對于面向?qū)ο髷?shù)據(jù)庫系統(tǒng)和OO數(shù)據(jù)模型的研究主要體現(xiàn)在:研究以關(guān)系數(shù)據(jù)庫和SQL為基礎(chǔ)的擴(kuò)展關(guān)系模型;以面向?qū)ο蟮某绦蛟O(shè)計(jì)語言為基礎(chǔ),研究持久的程序設(shè)計(jì)語言,支持OO模型;建立新的面向?qū)ο髷?shù)據(jù)庫系統(tǒng),支持OO數(shù)據(jù)模型。
一個OO模型是用面向?qū)ο笥^點(diǎn)來描述現(xiàn)實(shí)世界實(shí)體(對象)的邏輯組織、對象間限制、聯(lián)系等的模型。一系列面向?qū)ο蠛诵母拍顦?gòu)成了OO模型的基礎(chǔ)。概括起來,OO模型的核心概念有如下一些:
一、對象(Object)與對象標(biāo)識OID(Object IDentifier)
對象是用來表示或描述問題領(lǐng)域中的事物,世界上任何事物都是對象。對象具有名字標(biāo)識,稱為對象標(biāo)識(OID)。并具有自身的功能和狀態(tài)。
對象包含三個重要的因素:
(一)屬性:對象的性質(zhì),即用來描述和反映對象特征的參數(shù)。對象的屬性可以是系統(tǒng)或用戶定義的數(shù)據(jù)類型,也可以是一個抽象的數(shù)據(jù)類型。
(二)方法:對象的行為,是定義在對象屬性上的一組操作。實(shí)際是將一些通用的過程編寫好并封裝起來,作為方法供用戶直接調(diào)用。
(三)事件:響應(yīng)對象的動作,它發(fā)生在用戶與應(yīng)用程序交互時。
二、類(C1ass)
類是對象的抽象,也是創(chuàng)建對象實(shí)例的模板。類是由用戶定義的關(guān)于對象的結(jié)構(gòu)和行為的數(shù)據(jù)類型,包含了創(chuàng)建對象的屬性描述和行為特征的定義。換句話說,將那些具有相同的構(gòu)造,使用相同的方法,具有相同變量名和變量類型的對象集中在一起形成類。類中的每個對象稱為類的實(shí)例。類中所有的對象共享一個公共的定義,而變量的值是各不相同的。
三、封裝(Encapsulation)
封裝是對象和類概念的主要特性,將大部分實(shí)現(xiàn)細(xì)節(jié)隱藏起來的一種機(jī)制。封裝是把過程和數(shù)據(jù)包圍起來,對數(shù)據(jù)的訪問只能通過已定義的界面。
也就是說,現(xiàn)實(shí)世界可以被描繪成一系列完全封裝、自治的對象,這些對象通過一個受保護(hù)的接口訪問其他對象。封裝保證了模塊具有較好的獨(dú)立性,使得程序維護(hù)修改較為容易。對應(yīng)用程序的修改僅限于類的內(nèi)部,可以最大限度地減少因應(yīng)用程序修改而帶來的影響。
四、消息(Message)
由于對象是封裝的,對象與外部的通信一般只能通過顯式的消息傳遞,即消息從外部傳送給對象,存取和調(diào)用對象中的屬性和方法,在內(nèi)部執(zhí)行所要求的操作,操作的結(jié)果仍以消息的形式返回。OODB語言用于描述面向?qū)ο髷?shù)據(jù)庫模式,說明并操縱類定義與對象實(shí)例。OODB語言主要包括對象定義語言(ODL)和對象操縱語言(OML),對象操縱語言中一個重要子集是對象查詢語言(OQL)。OODB語言一般應(yīng)具備下述功能:
五、類的定義
包括對象的創(chuàng)建和類的創(chuàng)建兩部分。對象的創(chuàng)建是以類為基礎(chǔ)的,面向?qū)ο蟪绦蛟O(shè)計(jì)語言中,一般只提供如數(shù)字、字符等最基本的類。大量的復(fù)合類需要用戶來創(chuàng)建,創(chuàng)建類需要提供5個方面的信息:類標(biāo)識、相關(guān)屬性組、操作程序組、語義完整的約束條件、可以繼承的類型集。
六、操作/方法的定義
面向?qū)ο髷?shù)據(jù)庫語言可用于對象操作/方法的定義與實(shí)現(xiàn)。在操作實(shí)現(xiàn)中,語言的命令可用于操作對象的局部數(shù)據(jù)結(jié)構(gòu)。對象模型中的封裝性允許操作/方法由不同程序設(shè)計(jì)語言來實(shí)現(xiàn),并且隱藏不同程序設(shè)計(jì)語言實(shí)現(xiàn)的事實(shí)。
面向?qū)ο髷?shù)據(jù)庫的特性有以下兩個方面:
(一)對象的嵌套。在同一個面向?qū)ο髷?shù)據(jù)庫模式中,對象的某一屬性可以是一個對象,這樣對象之間就產(chǎn)生一個嵌套的層次結(jié)構(gòu)。對象嵌套概念是面向?qū)ο髷?shù)據(jù)庫系統(tǒng)的一個重要概念,它允許不同的用戶采用不同的粒度來觀察對象。對象嵌套層次結(jié)構(gòu)和類層次結(jié)構(gòu)形成了對象橫向和縱向的復(fù)雜結(jié)構(gòu)。