顧恩碩+劉海粟+白雪
摘 要:關(guān)系數(shù)據(jù)庫(kù),是建立在關(guān)系模型基礎(chǔ)上的數(shù)據(jù)庫(kù),是借助于在數(shù)學(xué)概念和方法來(lái)處理數(shù)據(jù)庫(kù)中的數(shù)據(jù)。在現(xiàn)實(shí)世界中,各種實(shí)體以及他們之間的各種聯(lián)系均用關(guān)系模型來(lái)表示。關(guān)系模型由關(guān)系數(shù)據(jù)結(jié)構(gòu)、關(guān)系操作集合、關(guān)系完整性約束三部分組成,集中表現(xiàn)在數(shù)據(jù)的模型發(fā)展上。從最初的層次結(jié)構(gòu)、網(wǎng)狀模型結(jié)構(gòu)發(fā)展到今天的關(guān)系數(shù)據(jù)庫(kù)模型,數(shù)據(jù)庫(kù)發(fā)生了飛速的變化,在變化的過(guò)程中,關(guān)系模型的出現(xiàn),是數(shù)據(jù)庫(kù)在發(fā)展路程中的一座重要的里程碑,關(guān)系理論研究和關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)研究的成功,進(jìn)一步促進(jìn)了關(guān)系數(shù)據(jù)庫(kù)的發(fā)展。使得關(guān)系型數(shù)據(jù)模型成為具有統(tǒng)治地位的數(shù)據(jù)模型。
關(guān)鍵詞:數(shù)據(jù)庫(kù);關(guān)系模型;關(guān)系數(shù)據(jù)庫(kù)
通俗地說(shuō),關(guān)系型數(shù)據(jù)庫(kù)就是采用了關(guān)系模型來(lái)組織數(shù)據(jù)的數(shù)據(jù)庫(kù)。簡(jiǎn)單來(lái)說(shuō),關(guān)系模型就是一個(gè)類似于二維表格的模型,而關(guān)系型數(shù)據(jù)庫(kù)就是由二維表格及其中含有的數(shù)據(jù)所組成的一個(gè)數(shù)據(jù)組織。在關(guān)系數(shù)據(jù)庫(kù)中,有些名詞需要我們了解:
關(guān)系:通俗地說(shuō),在一張二維表格中,每個(gè)關(guān)系都具有一個(gè)關(guān)系名,就是通常說(shuō)的表名table。
屬性:在二維表格中也就是類似于excel表格中的一列,在數(shù)據(jù)庫(kù)中被稱為字段。
域:屬性的取值范圍,也就是數(shù)據(jù)庫(kù)中某一字段的屬性限制條件。
關(guān)鍵字:一組可以唯一標(biāo)識(shí)元組的屬性。數(shù)據(jù)庫(kù)中常稱為主鍵,由一個(gè)或多個(gè)列組成。
關(guān)系模式:指對(duì)關(guān)系的描述,其格式為:關(guān)系名(屬性1,屬性2,…,屬性N)。也就是數(shù)據(jù)庫(kù)中的表結(jié)構(gòu)。
隨著數(shù)據(jù)庫(kù)應(yīng)用領(lǐng)域的擴(kuò)展以及數(shù)據(jù)對(duì)象的多樣化,傳統(tǒng)的關(guān)系數(shù)據(jù)模型暴露出了許多問(wèn)題,如對(duì)復(fù)雜對(duì)象的表述能力差,表達(dá)能力較弱。為此,人們提出了許多新的數(shù)據(jù)模型,下面筆者向大家介紹一下以前的數(shù)據(jù)庫(kù)的主要特點(diǎn):數(shù)據(jù)不保存、系統(tǒng)沒(méi)有專用的軟件對(duì)數(shù)據(jù)進(jìn)行管理、數(shù)據(jù)不共享、數(shù)據(jù)不具有獨(dú)立性。
在文件系統(tǒng)層面上,數(shù)據(jù)可以以文件的形式進(jìn)行長(zhǎng)期保存,數(shù)據(jù)交由文件系統(tǒng)管理數(shù),獨(dú)立的機(jī)制使得程序與數(shù)據(jù)之間具有一定的獨(dú)立性但在這個(gè)結(jié)構(gòu)中,數(shù)據(jù)的獨(dú)立性、共享性差,冗余度大、易造成數(shù)據(jù)傳輸之間的不一致性。
在數(shù)據(jù)庫(kù)系統(tǒng)層面上,數(shù)據(jù)可以結(jié)構(gòu)化,數(shù)據(jù)之間的共享性提高,冗余度小,一個(gè)用戶可以擁有多個(gè)數(shù)據(jù)庫(kù),因此數(shù)據(jù)獨(dú)立性高,數(shù)據(jù)控制功能也變得統(tǒng)一起來(lái)。其中大可分為4類:
第一類,數(shù)據(jù)安全性控制;第二類,數(shù)據(jù)完整性控制;第三類,數(shù)據(jù)的并發(fā)控制;第四類,數(shù)據(jù)管理與恢復(fù)。
數(shù)據(jù)結(jié)構(gòu)化,在數(shù)據(jù)庫(kù)系統(tǒng)中,將數(shù)據(jù)按照一定的數(shù)據(jù)模型插入到一個(gè)結(jié)構(gòu)化的數(shù)據(jù)庫(kù)中,需要考慮此數(shù)據(jù)庫(kù)的數(shù)據(jù)結(jié)構(gòu),還需要考慮連接數(shù)據(jù)后的數(shù)據(jù)結(jié)構(gòu),而在以前的數(shù)據(jù)庫(kù)中,這些,是我們看不到的。下面,筆者將就幾個(gè)方面對(duì)其進(jìn)行分析:
非關(guān)系型數(shù)據(jù)庫(kù)的實(shí)質(zhì):非關(guān)系型數(shù)據(jù)庫(kù)產(chǎn)品是傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)的縮略版本,通過(guò)減少功能,來(lái)大幅度提升產(chǎn)品性能,類似于我們平時(shí)游戲中的資料篇。
目前市場(chǎng)上流通的大部分主流的非關(guān)系型數(shù)據(jù)庫(kù)基本上都是免費(fèi)的。而大公司中,名氣大的關(guān)系型數(shù)據(jù)庫(kù)開(kāi)發(fā)軟件,比如Oracle、DB2是收費(fèi)的。這在很大程度上限制了一些平民用戶的使用。但是在實(shí)際開(kāi)發(fā)中,有很多小型的業(yè)務(wù)需求,并不需要完整的關(guān)系型數(shù)據(jù)庫(kù)進(jìn)行組建,非關(guān)系型數(shù)據(jù)庫(kù)的功能就足夠了。這種情況下,使用性能高、成本低的非關(guān)系型數(shù)據(jù)庫(kù)當(dāng)然是我們的首選。在性能上NOSQL是基于鍵值對(duì)的,可以理解成類似于Java中和HashMap中的鍵值對(duì),數(shù)據(jù)表中的主鍵和值也具有相同對(duì)應(yīng)關(guān)系,但在使用過(guò)程中是不需要經(jīng)過(guò)SQL層的解析,所以性能非常高是它的主要優(yōu)點(diǎn)。同樣,它也具有良好的可擴(kuò)展性,這也是基于鍵值對(duì),數(shù)據(jù)之間存在相當(dāng)?shù)偷鸟詈隙?,所以在使用的時(shí)候非常容易擴(kuò)展。
在SQL語(yǔ)言中,關(guān)系型數(shù)據(jù)庫(kù)對(duì)其也具有獨(dú)特的解讀優(yōu)勢(shì):在復(fù)雜查詢語(yǔ)句中,可以用SQL語(yǔ)句根據(jù)表連接、嵌套、子句等方法方便地在一個(gè)表或多個(gè)表之間做復(fù)雜的數(shù)據(jù)查詢,且代碼的冗余性很低,這也使得數(shù)據(jù)庫(kù)對(duì)于安全性能要求很高的數(shù)據(jù)得以訪問(wèn),對(duì)于非關(guān)系型數(shù)據(jù)庫(kù),就沒(méi)有這些優(yōu)點(diǎn)。
但是近年來(lái)的發(fā)展中,兩種數(shù)據(jù)庫(kù)類型都在不同的需求市場(chǎng)中發(fā)展著,雖然有所交集,但是這并不影響數(shù)據(jù)庫(kù)的進(jìn)化方向。比如,NOSQL數(shù)據(jù)庫(kù)自從2008年的更新版本以后,慢慢開(kāi)始具備SQL數(shù)據(jù)庫(kù)的一些復(fù)雜查詢功能,并隨著服務(wù)端的更新,這方面的功能日益完善,而SQL數(shù)據(jù)庫(kù)也在慢慢地進(jìn)化著,在數(shù)據(jù)庫(kù)平臺(tái)上HandlerSocker技術(shù)的出現(xiàn),可以在MYSQL上實(shí)現(xiàn)對(duì)于數(shù)據(jù)庫(kù)SQL層的穿透,在非NOSQL數(shù)據(jù)庫(kù)上使用NOSQL的方式訪問(wèn)數(shù)據(jù)庫(kù),可以實(shí)現(xiàn)無(wú)中心化的集群等特點(diǎn),更是向我們說(shuō)明了數(shù)據(jù)庫(kù)在這些年間的變化。
對(duì)于研究數(shù)據(jù)庫(kù)的人來(lái)說(shuō),或許關(guān)系型數(shù)據(jù)庫(kù)只是數(shù)據(jù)庫(kù)眾多實(shí)現(xiàn)中的一個(gè)特例模型,在數(shù)據(jù)庫(kù)中,類型的劃分具有嚴(yán)格的限制??茖W(xué)家們用嚴(yán)格的數(shù)學(xué)公式和邏輯形式定義了數(shù)據(jù)關(guān)系以及其中的各種運(yùn)算,雖然這兩極都因?yàn)楦髯缘娜鮿?shì)而開(kāi)始進(jìn)化出另一極的一些特性,但是這些特性的增加也會(huì)導(dǎo)致數(shù)據(jù)庫(kù)失去一些原本具備的優(yōu)勢(shì),所以怎樣構(gòu)建和使用數(shù)據(jù)庫(kù)的系統(tǒng)模型,是數(shù)據(jù)結(jié)構(gòu)的框架構(gòu)造工程師需要考慮的問(wèn)題。
參考文獻(xiàn):
[1] 王珊.數(shù)據(jù)庫(kù)與信息系統(tǒng)[M].北京:高等教育出版社,2005.
[2] 劉唯一,田雯.數(shù)據(jù)模型,數(shù)據(jù)庫(kù)技術(shù)之一[M].北京.科學(xué)出版社,2001.
[3] 李紹原.數(shù)據(jù)庫(kù)技術(shù)新進(jìn)展[M].北京:清華大學(xué)出版社,1997.