翻譯 大型共享數(shù)據(jù)庫的數(shù)據(jù)關(guān)系模型_第1頁
翻譯 大型共享數(shù)據(jù)庫的數(shù)據(jù)關(guān)系模型_第2頁
翻譯 大型共享數(shù)據(jù)庫的數(shù)據(jù)關(guān)系模型_第3頁
翻譯 大型共享數(shù)據(jù)庫的數(shù)據(jù)關(guān)系模型_第4頁
翻譯 大型共享數(shù)據(jù)庫的數(shù)據(jù)關(guān)系模型_第5頁
已閱讀5頁,還剩25頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

大型共享數(shù)據(jù)庫的數(shù)據(jù)關(guān)系模型

IBMResearchLaboratory,Sanjose,California

將來的數(shù)據(jù)庫運(yùn)用者確定是和數(shù)據(jù)在機(jī)器中的存儲(chǔ)(即數(shù)據(jù)庫的

內(nèi)部模式)相隔離的。而通過提示效勞來供應(yīng)信息是一個(gè)不太令人滿

足的解決方法。當(dāng)數(shù)據(jù)的內(nèi)部模式表示發(fā)生變更,甚至數(shù)據(jù)內(nèi)部表示

的多個(gè)方面發(fā)生變更時(shí),終端用戶和大多數(shù)應(yīng)用程序的活動(dòng)都不會(huì)受

到影響。因此,查詢、更新和報(bào)告存儲(chǔ)信息類型的自然增長(zhǎng)和變動(dòng)都

須要在數(shù)據(jù)表示中表現(xiàn)出來。

現(xiàn)存的不行推斷的、格式化的數(shù)據(jù)系統(tǒng)給用戶供應(yīng)了樹構(gòu)造的文

件或者更一般的網(wǎng)格模式的數(shù)據(jù)。本文在第一局部探討這些模式的缺

乏之處。并且會(huì)介紹一種基于n元組關(guān)系的模式,一種數(shù)據(jù)庫關(guān)系的

正式形式和通用數(shù)據(jù)子句的概念。其次局部將探討一些關(guān)系的操作

(不是邏輯層面的),并且把這些操作應(yīng)用于用戶模式上解決冗余和

一樣性問題。

1關(guān)系模式和一般模式

1.1簡(jiǎn)介

這篇文章是關(guān)于系統(tǒng)的根本關(guān)系原理的應(yīng)用,這個(gè)原理供

應(yīng)了共享大型格式化數(shù)據(jù)庫的方法。除了Childs[l]的文章有

介紹外,用于數(shù)據(jù)庫系統(tǒng)的關(guān)系的主要應(yīng)用還表現(xiàn)在演繹推理

型的問-答系統(tǒng)中。Levein和Maron[2]供應(yīng)了大量關(guān)于這個(gè)領(lǐng)

域的參考資料。

相比之下,這里要解決的問題是一些數(shù)據(jù)獨(dú)立性的問題

——應(yīng)用程序和終端活動(dòng)之于數(shù)據(jù)類型增長(zhǎng)和數(shù)據(jù)表示變動(dòng)的

獨(dú)立性,而數(shù)據(jù)一樣性問題即使在非演繹推理型系統(tǒng)中也是很

麻煩的。

在目前流行的非推論性系統(tǒng)中,第一局部要介紹的數(shù)據(jù)的

關(guān)系視圖〔或叫做模式)在一些方面好像優(yōu)于圖模式和網(wǎng)格模

式[3,4]o這種模式供應(yīng)了一種依據(jù)數(shù)據(jù)的自然構(gòu)造來描述描述

數(shù)據(jù)的方式一一也就是說,不用為了數(shù)據(jù)的機(jī)器表示而添加其

他的將構(gòu)造。因此,這種模式為高水準(zhǔn)的數(shù)據(jù)語言供應(yīng)了根底,

而這種數(shù)據(jù)語言機(jī)制一方面可以到達(dá)最大化程序之間的獨(dú)立

性,另一方面也可以最大化數(shù)據(jù)的機(jī)器表示和組織之間的獨(dú)立

性。

關(guān)系模式更高一級(jí)的優(yōu)勢(shì)在于它構(gòu)成了關(guān)系處理可導(dǎo)性、

冗余性和一樣性的鞏固根底一一這些將在其次局部探討。另一

方面,網(wǎng)絡(luò)模型產(chǎn)生了一些混淆,尤其是把連接的源誤作為關(guān)

系的源(見其次局部“連接陷阱")

最終,關(guān)系視圖允許對(duì)目前格式化數(shù)據(jù)系統(tǒng)的范圍和邏輯

限制的更清晰的估算,并且有在單獨(dú)的系統(tǒng)內(nèi)競(jìng)爭(zhēng)數(shù)據(jù)表示方

式的優(yōu)點(diǎn)(從邏輯的觀點(diǎn))。更清晰的這個(gè)觀點(diǎn)的例如會(huì)在本文

中的不同局部中被闡釋。但是支持關(guān)系模式的系統(tǒng)實(shí)現(xiàn)不會(huì)探

討。

1.2目前系統(tǒng)的數(shù)據(jù)相關(guān)性

最近開展的信息系統(tǒng)中數(shù)據(jù)描述表的供應(yīng)是向數(shù)據(jù)獨(dú)立性

目標(biāo)[5,6.7]靠近的重要提高。這些表可以使變更數(shù)據(jù)庫中數(shù)據(jù)

表示的某些特征變得更簡(jiǎn)潔些。但是,很多數(shù)據(jù)表示特征可以

在不邏輯地減弱一些應(yīng)用程序的狀況下被變更的功能仍受到相

當(dāng)?shù)南拗?。更進(jìn)一步,與用戶交互的數(shù)據(jù)模式仍舊有一些散亂

的代表性特征,特殊是關(guān)于數(shù)據(jù)收集的描述〔如個(gè)人名目)。三

個(gè)仍舊須要提高的數(shù)據(jù)獨(dú)立性的主要類型是:排序依靠,索引

依靠和存取路徑的依靠。在一些系統(tǒng)中這些依靠之間并不是明

確分隔的。

1.2.1依次依靠。數(shù)據(jù)庫中的數(shù)據(jù)元素可以有很多種存儲(chǔ)方式,

一些是不考慮依次的,一些是允許一個(gè)元素只參與一個(gè)排

序,而另外一些允許每個(gè)元素參與多個(gè)排序?,F(xiàn)在讓我們

來看看要求或允許數(shù)據(jù)元素存儲(chǔ)在至少一個(gè)總排序的現(xiàn)

存系統(tǒng),而這種總體排序是與硬件確定的排序地址親密相

關(guān)的。這種系統(tǒng)通常允許應(yīng)用程序自己假定文件記錄的表

示依次與其在磁盤上的存儲(chǔ)依次是一樣的(或者說是存儲(chǔ)

排序的子目)。這些運(yùn)用文件存儲(chǔ)依次有利條件的應(yīng)用程

序,假如由于某些緣由而變得須要用一個(gè)新排序替換這種

依次時(shí),很可能不能正確運(yùn)行。以指針方式實(shí)現(xiàn)的存儲(chǔ)排

序也有相像的問題。

我們沒有必要選擇出任何一個(gè)系統(tǒng)作為例子,因?yàn)楝F(xiàn)在上

市的全部聞名的信息系統(tǒng)在清晰區(qū)分表示依次和存儲(chǔ)依

次兩方面都是失敗的。重要的實(shí)現(xiàn)問題必需得到解決來供

應(yīng)這種獨(dú)立性。

1.2.2索引依靠。格式化數(shù)據(jù)的上下文聯(lián)系中,索引通常被看成

數(shù)據(jù)表示的一個(gè)純粹的效能導(dǎo)向組件。它傾向于提高對(duì)查

詢和更新的響應(yīng),同時(shí)減慢了對(duì)插入和刪除的響應(yīng)。從信

息的觀點(diǎn)來看,索引是數(shù)據(jù)表示的冗余構(gòu)成成分。假如一

個(gè)系統(tǒng)王全用索引,并且假如它在變更活動(dòng)形式的數(shù)據(jù)庫

環(huán)境中能夠表現(xiàn)的很好,那么時(shí)常地產(chǎn)生和銷毀索引的實(shí)

力可能是必需的。那么問題產(chǎn)生了:應(yīng)用程序和終端活動(dòng)

在索引項(xiàng)來去的時(shí)候仍舊能夠不受影響嗎?

目前格式化數(shù)據(jù)系統(tǒng)采納很不一樣的方法來進(jìn)展索引。

TDMS[7]無條件地供應(yīng)了全部屬性上的索引。IMS[5]目前

發(fā)布的版本為用戶供應(yīng)了為每一文件選擇的權(quán)利:是完全

沒有索引(層次序列的組織)和只有主鍵索引(層次化索

引序列組織)之間的選擇。沒有一種會(huì)運(yùn)用戶的應(yīng)用邏輯

依靠于無條件供應(yīng)的索引的存在。但是,IDS[8]允許文件

設(shè)計(jì)者選擇用于索引的屬性和指定用于與索引通過外加

鏈的方式組合成文件構(gòu)造的屬性。運(yùn)用索引鏈性能的優(yōu)勢(shì)

的應(yīng)用程序必需通過名字來引用這些鏈。假如這些鏈后來

被刪除,那么這些程序就無法正確運(yùn)行。

1.2.3存取路徑依靠。很多現(xiàn)存格式化數(shù)據(jù)系統(tǒng)為用戶供應(yīng)了樹

構(gòu)造的文件或者更一般的數(shù)據(jù)網(wǎng)絡(luò)模式。為和這類系統(tǒng)共

同工作而開展的應(yīng)用程序,在樹或網(wǎng)格的構(gòu)造變更時(shí),往

往會(huì)在邏輯層受到減弱。一個(gè)簡(jiǎn)潔的例子如下。

設(shè)想數(shù)據(jù)庫包含關(guān)于部件和工程的信息。對(duì)于每一個(gè)部

件,其部件號(hào)碼、部件名字、部件描述、在手的數(shù)量和訂

單上的數(shù)量的信息都被記錄。對(duì)于每一個(gè)工程,其工程編

號(hào)、工程名字和工程描述信息被記錄。無論什么時(shí)候,一

個(gè)工程要用特定部件時(shí),用于這個(gè)工程的那種部件的數(shù)量

也會(huì)被記錄。假設(shè)系統(tǒng)要求用戶或者文件創(chuàng)作者依據(jù)樹構(gòu)

造聲明或者定義數(shù)據(jù)。那么,任一層次構(gòu)造都可以用到如

上提到的信息上(見構(gòu)造1——5)。

現(xiàn)在考慮打印用于名為“alpha”的工程每個(gè)部件的編

號(hào)、部件名和數(shù)目。不考慮可用于面對(duì)樹的信息系統(tǒng)可以

用于解決這個(gè)問題,我們可以得到以下的發(fā)覺。假如程序

P是開發(fā)用于解決這個(gè)問題(假設(shè)構(gòu)造是上面五種構(gòu)造中

的一種),也就是說P不會(huì)檢測(cè)哪一種構(gòu)造對(duì)他來說有效,

然而這樣的結(jié)果是P至少在其中三個(gè)構(gòu)造上是失敗的。更

具體地,假如P對(duì)構(gòu)造5行之有效,那么在其他構(gòu)造上就

會(huì)失??;假如P對(duì)構(gòu)造3或4行之有效,那么它至少會(huì)在

構(gòu)造1,2,5上是失敗的;假如P對(duì)構(gòu)造1或2行之有效,

那么它至少會(huì)在構(gòu)造3,4,5上是是小的。對(duì)于每一種狀況

的緣由都很簡(jiǎn)潔。在沒有經(jīng)過檢測(cè)來確定哪種構(gòu)造是有效

的狀況下,P會(huì)失敗是因?yàn)樗噲D引用一個(gè)不存在的文件

(現(xiàn)可用的系統(tǒng)把這種狀況視為error)或者是它沒有引

用包含它必需信息的文件。有疑問的讀者應(yīng)當(dāng)找一些樣例

程序來理解這個(gè)簡(jiǎn)潔的問題。

由于在一般狀況下,開發(fā)可以檢測(cè)系統(tǒng)允許的全部樹構(gòu)造

的應(yīng)用程序是不實(shí)際的,而且這種程序在構(gòu)造須要變更時(shí)

也會(huì)失敗。

為用戶供應(yīng)網(wǎng)格數(shù)據(jù)模式的系統(tǒng)也會(huì)遇到相像的問題。在

樹和網(wǎng)格兩種情形下,用戶(或者是用戶的程序)都被要

求采納用戶數(shù)據(jù)存取路徑的集合O這些路徑是否與存儲(chǔ)表

示的指針定義的路徑有較近通信是沒有影響的,而在IDS

中這種通信時(shí)極其簡(jiǎn)潔的,但在TDMS中就正好相反了。

不考慮存儲(chǔ)表示來看這種問題,結(jié)果就是,終端活動(dòng)和程

序變得依靠于用戶存取路徑的連續(xù)存在性。

對(duì)于這個(gè)問題的一個(gè)解決方案就是采納如下策略:一旦用

戶存取路徑被定義了,那么除非全部應(yīng)用這個(gè)路徑的全部

程序都廢棄了[finish了),否那么這個(gè)路徑就不會(huì)過時(shí)。

由于在團(tuán)體總體模式的數(shù)據(jù)庫用戶的存取路徑的數(shù)量最

終可能變得過大,因此這種策略是不實(shí)際的。

1.3數(shù)據(jù)的關(guān)系視圖

關(guān)系這個(gè)詞在這里運(yùn)用的是其被廣泛認(rèn)可的數(shù)學(xué)意義。給定集

合SLS2,……,Sn[這些集合沒有必要確定是不同的),假如R

是一個(gè)滿足如下條件的n元組集合:其每個(gè)元素的第一個(gè)元素

來自S1,其次個(gè)元素來自集合S2,以此類推,那么R就是這n

個(gè)集合(S1,S2,……,Sn)上的一個(gè)關(guān)系。我們用Sj來表示R

的第j個(gè)域。正如上面所定義,R被稱作是n級(jí)的。1級(jí)的關(guān)系

通常叫做一元關(guān)系,2級(jí)的被叫做二元關(guān)系,3級(jí)的被叫做三元

關(guān)系,而n級(jí)的叫n元關(guān)系。(更簡(jiǎn)潔地說,R是SI,S2,,Sn

這n個(gè)集合的笛卡爾乘積的一個(gè)子集)

說明一下,我們將頻繁地運(yùn)用關(guān)系的數(shù)組表示,但是必需清晰

的是這個(gè)特定表示并不是用于說明關(guān)系視圖必需的局部。用于

表示n元關(guān)R的數(shù)組有如下特征:

(1)每一行代表R的一個(gè)n元組

(2)行的排列依次是無關(guān)緊要的

(3)全部行都是不一樣的

(4)列的依次是有意義的一一列應(yīng)當(dāng)符合R定義時(shí)的域的依

次SLs2,……,Sn]但是留意,排序的域和無序的域下標(biāo)

之間的關(guān)系)

(5)每個(gè)列的意義局部是由命名相應(yīng)域來傳達(dá)的

圖1中的例子展示了一個(gè)叫做supply4級(jí)的關(guān)系,這個(gè)關(guān)系顯

示的是特定工程的特定供應(yīng)者的特定數(shù)量的零件發(fā)貨過程。

supply(supplierpartprojectquantity)

12517

13023

2379

27514

41112

FIG.1.Arelationofdegree4

圖1

有人可能會(huì)問:假如列由相應(yīng)域的名字來標(biāo)識(shí),那么為什

么列的依次會(huì)有影響呢?正如圖2中例子顯示的一樣,兩列可

以有一樣的頭(表示同樣的域),但是對(duì)于這個(gè)關(guān)系他們有不

同的含義。這里描述的關(guān)系叫做component。它是一個(gè)三元關(guān)

系,其中前兩個(gè)域叫做part而第三個(gè)域叫做quantityo

Component(x,y,z)的意思就是部件x部件y的干脆構(gòu)成成

分(或者子部件),而須要z個(gè)的x部件來組成一個(gè)的y部件。

這個(gè)關(guān)系在零件擴(kuò)大問題中有重要作用。

component(paripartquantity)

159

257

352

2612

363

471

671

FIG.2.Arelationwithtwoidenticaldomains圖?

一個(gè)引人注目事實(shí)是,一些現(xiàn)存的信息系統(tǒng)(主要是基于

樹構(gòu)造文件組織)不能夠?yàn)橛袃蓚€(gè)或兩個(gè)以上的一樣域的關(guān)系

供應(yīng)有效地?cái)?shù)據(jù)表示。IMS/360[5]的目前版本就是這種系統(tǒng)的

一個(gè)實(shí)例。

一個(gè)數(shù)據(jù)庫中的總體數(shù)據(jù)可以看做一個(gè)隨著時(shí)間變更的關(guān)

系的集合。這些種類的關(guān)系有各種各樣的級(jí)(或度)。隨著時(shí)

間的前進(jìn),每個(gè)n元關(guān)系都可能經(jīng)驗(yàn)插入另外的n元組,刪除

現(xiàn)存的n元組和變更現(xiàn)存隨意n元組的組成局部的操作。

但是,在很多商業(yè)、政府和科學(xué)數(shù)據(jù)庫中,一些關(guān)系的度

(或作級(jí)別)是相當(dāng)高的(30級(jí)的關(guān)系也是很常見的)。用戶

通常不能記住任何關(guān)系的全部域的依次(例如,關(guān)系supply

中定序的供應(yīng)者、零件、工程和數(shù)量)。因此,我們提出用戶

不必處理域排序的關(guān)系,而處理與其非排序域的有同樣效果的

關(guān)系的方法。為了到達(dá)這個(gè)目的,關(guān)系中的域必需是在不采納

位置時(shí)唯一可確認(rèn)的,至少在某個(gè)給定的關(guān)系中是這樣的。因

此,在有兩個(gè)或更多一樣域的地方,我們要求對(duì)每一種狀況下

域名都是合格的不同的角色名〔rolename),這些角色名用于

識(shí)別給定的關(guān)系中的域所扮演的角色。例如,在圖2的

component關(guān)系中,第一個(gè)域part可以用合格角色名sub指

示,而其次個(gè)用super,以便用戶能夠處理component關(guān)系和

它的域----sub.partsuper.part,quantity----而不用考慮這

些域之間的任何排序。

總之,提出多數(shù)用戶應(yīng)當(dāng)與由隨時(shí)間變更的聯(lián)系集合(而

不是關(guān)系)組成的數(shù)據(jù)的關(guān)系模式交互。每個(gè)用戶不必知道除

了關(guān)系的名字和其相應(yīng)的域的名字外的其它更多信息(只要有

須要就可以采納角色資格)。甚至信息可以是系統(tǒng)〔具有平安

和隱私約束)依據(jù)用戶的懇求以菜單形式供應(yīng)的。

數(shù)據(jù)庫關(guān)系模型的建立通常還有其他很多可供選擇的方

法。為了探討更好的方式(或標(biāo)準(zhǔn)形式),我們必需引入另外

幾個(gè)概念(活動(dòng)域、主碼、外碼、非單一域〕并建立一些與目

前在信息系統(tǒng)編程中運(yùn)用的術(shù)語的鏈接。在本文后面的局部,

我們將不再苦惱地去區(qū)分關(guān)系frelation)和聯(lián)系

(relationship),而在須要顯示他們不同之處的地方我們會(huì)

顯示地指出。

下面考慮這樣一個(gè)數(shù)據(jù)庫實(shí)例,該數(shù)據(jù)庫包含關(guān)于部件,

工程和供應(yīng)者的一系列關(guān)系。一個(gè)叫part的關(guān)系被定義在以

下的域上:

(1)部件編號(hào)(partnumber)

(2)部件名稱(partname)

(3)部件顏色(partcolor)

(4)部件重量(partweight)

(5)在手的數(shù)量(quantityonhand)

(6)預(yù)訂的數(shù)量(quantityonorder}

可能還有其他的域。事實(shí)上,每個(gè)這樣的域都是一池?cái)?shù)值,

這些數(shù)值中的一些或全部可以在任一瞬時(shí)在數(shù)據(jù)庫中表示出

來。可以想象,在某些瞬間,全部部件顏色都被顯示出來,但

是難以做到的是把全部可能存在的部件的重量、部件名字和部

件編號(hào)都顯示出來。我們稱在某個(gè)時(shí)刻表現(xiàn)出來的值的集合為

在那個(gè)時(shí)刻的活動(dòng)域(activedomain)□

通常,一個(gè)給定關(guān)系的一個(gè)域(或者域的組合)有一組唯

一識(shí)別該關(guān)系的每一元素(n元組)的值。這樣的一個(gè)域(或

組合)被叫做主碼(primarykey)。在上面的例子中,部件號(hào)

可能是一個(gè)主碼,而部件顏色可能就不是了。主碼是非冗余的,

假如他滿足它是一個(gè)簡(jiǎn)潔域(非組合的)或者一個(gè)組合,而對(duì)

于組合的狀況,在唯一識(shí)別每一元素時(shí)參與到這個(gè)組合中的簡(jiǎn)

潔域沒有一個(gè)是多余的(也就是組合中的全部的簡(jiǎn)潔域共同構(gòu)

成一個(gè)唯一識(shí)別關(guān)系元素的碼)。一個(gè)關(guān)系可以有多個(gè)非冗余

的主碼。假如上面所說的部件的名字都互不一樣,那么就成了

這種狀況的一個(gè)實(shí)例。無論什么時(shí)候,只要一個(gè)關(guān)系有兩個(gè)或

者更多非冗的主碼,它們中的隨意一個(gè)都可以選作這個(gè)關(guān)系的

主碼。

一個(gè)普遍的要求就是,關(guān)系當(dāng)中的元素穿插引用同一關(guān)系

的其他元素或者引用一個(gè)不同關(guān)系的元素。碼供應(yīng)了一種用于

表示這種穿插引用的面對(duì)用戶的方式(但不是唯一的方式)。

假如一個(gè)域(或者域組合)不是關(guān)系R的主碼,但是它的元素

是某個(gè)關(guān)系S的主碼值(解除S和R是同一關(guān)系的可能),那

么我們就把關(guān)系R的這個(gè)域1或者域組合)叫做外碼。在圖

Isupply關(guān)系中,supplier、part、project是主碼,而這三

個(gè)域中每一個(gè)都被單獨(dú)看作是一個(gè)外碼。

在前面的工作中已經(jīng)顯現(xiàn)出一個(gè)很強(qiáng)的趨勢(shì),即把一個(gè)數(shù)

據(jù)庫中的數(shù)據(jù)看成由兩個(gè)局部組成,一個(gè)局部由實(shí)體描述組成

[如supplier的描述),而另一個(gè)局部由不同實(shí)體間或者實(shí)體

類型間的關(guān)系組成(如supply關(guān)系)。當(dāng)一個(gè)關(guān)系有任何其他

關(guān)系的外碼時(shí),要維持這種區(qū)分是困難的。在用戶的關(guān)系模式

中,做出這樣的區(qū)分好像是沒有好處的〔但是,當(dāng)把關(guān)系概念

用于用戶聯(lián)系集的機(jī)器表示時(shí),這種區(qū)分可能有些好處)。

到目前為止,我們已經(jīng)探討了一系列定義在簡(jiǎn)潔域上的關(guān)

系的例子,而那些簡(jiǎn)潔域的元素是原子的(非組合的)值。非

原子值會(huì)在關(guān)系框架中探討。因此,一些域可以把關(guān)系當(dāng)做元

素。相應(yīng)地,這些關(guān)系可以被定義在非簡(jiǎn)潔域等等。例如,關(guān)

系employee定義的其中一個(gè)域可以是salaryhistory[薪水

歷史)。Salaryhistory域中的一個(gè)元素是一個(gè)定義在date

域和salary域上的二元關(guān)系。Salaryhistory域就是這種二

元關(guān)系的一個(gè)集合。在數(shù)據(jù)庫中隨意瞬間都會(huì)有與employee

(員工)數(shù)量一樣的salaryhistory關(guān)系實(shí)例。相比之下,

employee關(guān)系就只有一個(gè)實(shí)例。

在表示數(shù)據(jù)庫的術(shù)語中屬性和重復(fù)組分別在簡(jiǎn)潔域和非簡(jiǎn)潔域

中是大致相像的?,F(xiàn)在術(shù)語中的多混淆之處是由于沒能把類型

和實(shí)例(如在“record"中)區(qū)分開和把數(shù)據(jù)的用戶模式的組

成和它們相應(yīng)的機(jī)器表示區(qū)分開(再次以“record”為例)。

1.4標(biāo)準(zhǔn)形式

一種全部域都是簡(jiǎn)潔域的關(guān)系能夠用如上探討過的二維的齊次

列數(shù)組來表示其存儲(chǔ)形式。一些更為困難的數(shù)據(jù)構(gòu)造對(duì)一個(gè)有

一個(gè)或多個(gè)非簡(jiǎn)潔域的關(guān)系是必要的。由于這個(gè)緣由〔其他的

將在下面舉例),消退非簡(jiǎn)潔域的潛力好像值得投資。事實(shí)上,

有一種簡(jiǎn)潔的消退過程,而我們把這個(gè)過程叫做標(biāo)準(zhǔn)化。

例如,考慮圖3(a)顯示的關(guān)系集合。Jobhistory和children

是employee關(guān)系的非簡(jiǎn)潔域。Salaryhistory是jobhistory

的一個(gè)非簡(jiǎn)潔域。圖3(a)中的樹展示了各個(gè)非簡(jiǎn)潔域之間相

互關(guān)系。

,______emp1lo_yee____1

II

jobhistorychildren

I

salaryhistory

employee(tzianf,name,birthdate,jobhistory,children)

johhiatcry(johdaUjtit1*salaryhistory)

salaryhistorySalarydale,salary)

children(childname,birthyear)

FIG.3(a).Unnormalisedset圖3(a)

employee*(manf9name,birthdate)

jobhistory'(num#,?而dal%title)

salaryhistory'(man#,jobdatetsalarydate,salary)

children1(man#,childnamc,birthyear)

FIG.3(b).Normalizedset圖3

標(biāo)準(zhǔn)化按如下程序進(jìn)展。從關(guān)系的樹頂端開場(chǎng),記住它的主碼,

并且通過插入主碼域或者域組合來擴(kuò)展每個(gè)直屬的下層關(guān)系。

每個(gè)擴(kuò)展關(guān)系的主碼由從父關(guān)系(即上一層的關(guān)系)拷貝下來

主碼在進(jìn)展擴(kuò)大前的主碼構(gòu)成?,F(xiàn)在,從父關(guān)系中化掉全部非

簡(jiǎn)潔域,刪除樹的頂節(jié)點(diǎn),并且在留下的子樹上重復(fù)同樣的操

作程序。

圖3(a)中標(biāo)準(zhǔn)化關(guān)系集合的結(jié)果就是圖3(b)中的集合。每

個(gè)關(guān)系的主碼都用斜體表示以顯示這些碼值是如何通過標(biāo)準(zhǔn)化

來擴(kuò)展的。

假如要使得如上所述的標(biāo)準(zhǔn)化是可用的,那么關(guān)系集合的非標(biāo)

準(zhǔn)化必需滿足如下條件:

(1)非簡(jiǎn)潔域之間的相互關(guān)系圖是一個(gè)樹集合。

(2)沒有主碼是由非簡(jiǎn)潔域構(gòu)成的

作者不知道哪個(gè)應(yīng)用是不嚴(yán)格滿足以上這些條件的。那這類標(biāo)

準(zhǔn)化的更進(jìn)一步的操作就可進(jìn)展了。這些在本文中不會(huì)探討。

當(dāng)全部關(guān)系都以標(biāo)準(zhǔn)形式出現(xiàn)時(shí),變得可行的數(shù)組表示的簡(jiǎn)潔

性不僅有利于存儲(chǔ)的目的,而且有利于廣泛采納不同數(shù)據(jù)表示

的系統(tǒng)之間的大量數(shù)據(jù)的通信。這種通信形式是數(shù)組表示的一

個(gè)相稱的壓縮版本,并且有如下有利條件:

(1)沒有指針(值地址或值替換)

(2)防止了全部對(duì)哈希選址方式的依靠性

(3)不包含索引和有序列表

假如用戶的關(guān)系模式以標(biāo)準(zhǔn)形式建立,那么數(shù)據(jù)庫中數(shù)據(jù)項(xiàng)的

名字可以是一種更簡(jiǎn)潔的形式,反之亦然。一個(gè)通用的名字有

如下形式:

其中R是關(guān)系名字;g是同輩標(biāo)識(shí)符(可選的);r是角色名(可

選的);d是域名。由于g只有在當(dāng)一個(gè)給定的關(guān)系中多個(gè)同

輩存在時(shí)才須要,而且r只有在當(dāng)關(guān)系R有兩個(gè)或更多名為d

的域時(shí)才須要,所以簡(jiǎn)潔形式R.d通常是恰當(dāng)?shù)摹?/p>

1.5一些語言方面

如上所述,數(shù)據(jù)關(guān)系模式的采納使基于好用謂詞演算的通用數(shù)

據(jù)子語言的開展成為可能。假如關(guān)系結(jié)合是標(biāo)準(zhǔn)形式的,那么

一階謂詞演算就足夠了。這種語言為全部其它提議的數(shù)據(jù)語言

供應(yīng)了語言影響力的一個(gè)衡量標(biāo)準(zhǔn),并且它自己也是嵌入(有

適當(dāng)?shù)木浞ㄐ薷模┰诤芏嗥渌髁髡Z言(編程,面對(duì)吩咐的或

面對(duì)問題的)中的一種強(qiáng)勢(shì)的候選者。雖然具體地描述這樣一

種語言不是本文的目的,但是它顯著的特征有如下幾點(diǎn)。

我們用R標(biāo)記數(shù)據(jù)子語言,用H標(biāo)記主語言。R允許關(guān)系及

他們的域的聲明。每一個(gè)關(guān)系的聲明都為這個(gè)關(guān)系確定了它的

主鍵。聲明過的關(guān)系被添加到系統(tǒng)資料庫,從而被任何擁有相

宜權(quán)限的運(yùn)用者群體的一員運(yùn)用。H允許支持聲明,這些聲明

可能沒那么永久性的說明白這些關(guān)系在存儲(chǔ)時(shí)時(shí)如何表示的。R

允許定義數(shù)據(jù)庫中的任何數(shù)據(jù)子集的檢索。這樣的一個(gè)檢索懇

求之后能發(fā)生的動(dòng)作受制于平安限制條件。

數(shù)據(jù)子語言的普適性是由它的描述實(shí)力確定的(而非它的計(jì)

算實(shí)力),在一個(gè)大型數(shù)據(jù)庫中,每一個(gè)數(shù)據(jù)子集都擁有大量的

可能的(而且合理的)描述。即使我們假設(shè)〔正如我們所做的)

系統(tǒng)有權(quán)運(yùn)用的、確定搜尋數(shù)據(jù)合格性的功能子程序的有限集

合只有一個(gè)。因此,能夠應(yīng)用于集標(biāo)準(zhǔn)資格表達(dá)式的集合的必

需擁有對(duì)應(yīng)用謂詞演算的格式標(biāo)準(zhǔn)的公式集合的描述實(shí)力。眾

多周知,為了維護(hù)這種描述實(shí)力,不必要表示(無論選擇的是

什么語法)選中的謂詞演算的全部公式。比方,那些以前束標(biāo)

準(zhǔn)格式的就夠了。

在搜尋體驗(yàn)行業(yè)的合格性或其他方面可能要用到算術(shù)函數(shù)。

這些函數(shù)用H語言定義,用R語言調(diào)用。

這樣指定的一個(gè)集合可能僅用于查詢,或者用于可能發(fā)生的

變更。插入采納向已聲明的關(guān)系中參與新的元素的形式實(shí)現(xiàn),

同時(shí)不考慮在機(jī)器中表示的依次。刪除對(duì)公共組都有效〔而不

是個(gè)人用戶或子組),刪除以從已聲明的關(guān)系中移除元素的形

式實(shí)現(xiàn)。假如指定關(guān)系之間的刪除和更新依靠性已經(jīng)用R語言

聲明,那么一些刪除和更新可能會(huì)由其他的刪除和更新引發(fā)產(chǎn)

生。

用這種視圖看數(shù)據(jù),對(duì)查詢數(shù)據(jù)的語言有一個(gè)重大的影響,

這個(gè)影響就是數(shù)據(jù)元素和集合的命名。這其中的一些方面已經(jīng)

在上一節(jié)探討過。運(yùn)用通常的網(wǎng)絡(luò)視圖,用戶經(jīng)常為創(chuàng)建和運(yùn)

用更多的而不是完全有必要的關(guān)系名稱所累。因?yàn)槊Q適合路

徑(或路徑類型)有關(guān),而不是和關(guān)系有關(guān)。

一旦用戶意識(shí)到存儲(chǔ)了某個(gè)特定的關(guān)系,他會(huì)希望運(yùn)用他的

參數(shù)和未知參數(shù)的隨意組合來利用這個(gè)關(guān)系,因?yàn)樾畔ⅲㄈ缰?/p>

穆朗瑪峰)是存在的。這是一個(gè)系統(tǒng)特征,我們叫做(邏輯上)

關(guān)系的對(duì)稱利用。當(dāng)然,性能上的對(duì)稱性是不行能的。為了支

持一個(gè)二元關(guān)系的對(duì)稱性利用,須要兩條干脆路徑。對(duì)于一個(gè)

n元的關(guān)系,被命名和限制的路徑數(shù)量是n的階乘。同樣,假

如實(shí)行這樣的關(guān)系視圖:每一個(gè)n元關(guān)系必需被用戶以只包含

2元關(guān)系的一張網(wǎng)狀表達(dá)式表示出來(比方,參見Feldman's

LEAP系統(tǒng)),那么必需創(chuàng)建2n-l個(gè)名稱而不僅僅是1.2節(jié)描

述的n+1個(gè)擁有干脆n元標(biāo)記的名稱。例如,圖片1這的4元

關(guān)系supply,它以n元標(biāo)記初始化了5個(gè)名稱,用如下形式表

P(supplier,&(part,R(project,quantity)))

以網(wǎng)狀二元標(biāo)記,包含7個(gè)名稱。

這種表示方式的進(jìn)一步的缺點(diǎn)是它的不對(duì)稱性。盡管這種不

對(duì)稱性不會(huì)制止對(duì)稱性利用,它確定會(huì)運(yùn)用戶的一些詢問操作

很不便利表示〔比方,對(duì)于跟給定的運(yùn)用Q和R寫的工程相關(guān)

的那些局部和數(shù)量的查詢)。

1.6可表達(dá)的、已命名的而且已存儲(chǔ)的關(guān)系

有兩個(gè)關(guān)系集合跟資料庫有關(guān):命名集和可表達(dá)集。命名

集市用戶群能夠通過一個(gè)簡(jiǎn)潔名字(或標(biāo)識(shí))識(shí)別的全部關(guān)系

的集合。當(dāng)恰當(dāng)授權(quán)的用戶聲明R時(shí),關(guān)系R擁有了命名集的

成員資格。當(dāng)恰當(dāng)授權(quán)的用戶取消R的聲明時(shí),它失去了成員

資格。

可表達(dá)集是能夠用數(shù)據(jù)語言中的表達(dá)式表示的全部關(guān)系的

集合。這些表達(dá)式是由名字集中關(guān)系的簡(jiǎn)潔名字組建起來的。

階段的名稱、角色和域、邏輯連接詞、謂詞演算的量詞以及某

些常量關(guān)系符號(hào),如=,>o名字集是可表達(dá)集的一個(gè)子集

——通常是一個(gè)很小的子集。

由于名稱集合中的某些關(guān)系可能是集合中其它關(guān)系的時(shí)間

無關(guān)的組合,將名稱集和定義這些時(shí)間無關(guān)的限制條件的語句

的集合聯(lián)系起來考慮很有用。我們將推遲探討這個(gè),直到我們

介紹了對(duì)關(guān)系的幾種操作〔參看其次節(jié))。

為用戶設(shè)計(jì)一個(gè)支持關(guān)系模型的數(shù)據(jù)系統(tǒng)時(shí),設(shè)計(jì)者所面

臨的主要問題之一是確定支持存儲(chǔ)表示所用的集合。志向狀況

下,允許的數(shù)據(jù)表現(xiàn)形式的多樣性應(yīng)當(dāng)正好足夠覆蓋性能安裝

總集合要求的范圍。太大的范圍導(dǎo)致不必要的存儲(chǔ)開銷和連續(xù)

的對(duì)領(lǐng)先構(gòu)造描述的重新說明。

對(duì)于隨意選定的存儲(chǔ)表示集合,數(shù)據(jù)系統(tǒng)必需供應(yīng)把用關(guān)

系模型的數(shù)據(jù)語言表達(dá)的用戶需求轉(zhuǎn)換成相應(yīng)且有效的當(dāng)前存

儲(chǔ)表示的方法。對(duì)于高層數(shù)據(jù)語言,這好像一個(gè)具有挑戰(zhàn)性的

設(shè)計(jì)問題。不過,隨著更多的用戶擁有了對(duì)大型資料庫的訪問

權(quán)限,這就變成了一個(gè)必需解決的問題。同時(shí),也能為從個(gè)人

用戶到數(shù)據(jù)系統(tǒng)供應(yīng)有效的響應(yīng)和吞吐量。

2冗余和兼容

2.1對(duì)關(guān)系的操作

由于關(guān)系是集合,全部一般的集合操作也都適用于關(guān)系。不過,

結(jié)果可能不是一個(gè)關(guān)系,比方,一個(gè)二元關(guān)系和三元關(guān)系的連

接不是一個(gè)關(guān)系。下面探討的操作是特地針對(duì)關(guān)系的。介紹這

些關(guān)系是因?yàn)樗鼈冊(cè)趶钠渌P(guān)系中派生出關(guān)系上扮演重要角

色。它們主要應(yīng)用在非推理的信息系統(tǒng)中,這種系統(tǒng)不供應(yīng)邏

輯推理效勞,盡管當(dāng)類似的效勞被添加后不確定會(huì)損害它們的

適用性。大多數(shù)用戶不會(huì)干脆關(guān)切這些操作。然而,信息系統(tǒng)

設(shè)計(jì)人員和與資料庫限制相關(guān)的人員應(yīng)當(dāng)徹底熟識(shí)它們。

2.1.1置換。一個(gè)二元關(guān)系有一個(gè)具有兩列的數(shù)組表示。將這兩

個(gè)列換位得到逆關(guān)系。更一般的,假如一個(gè)置換被應(yīng)用于

一個(gè)n元關(guān)系的列,由此產(chǎn)生的列被稱作給定序列的排

列。例如,圖1中有關(guān)系supply的4!=24種排列,假如

我們包括不變更列依次的恒等排列。

2.1.2投影。假設(shè)我們從一個(gè)關(guān)系中選出特定的某些列[剔除其

它的列),然后從結(jié)果中刪除數(shù)組中的任何行重復(fù)。最終

的數(shù)組表示了一個(gè)叫做給定關(guān)系的投影的關(guān)系。

選擇算子JI被用來獲得任何所需的排列、投影或兩個(gè)操

作的組合。因此,假如L是K個(gè)標(biāo)記的列表L=il,i2,…,

ik,R是一個(gè)n元關(guān)系(n>=k),那么L(R)一個(gè)k元

關(guān)系,這個(gè)關(guān)系的第j列是R的第ij列(j=l,2,…,k),

同時(shí)結(jié)果的行中的冗余也將移除??紤]圖1中的關(guān)系

supply,圖4展示了這個(gè)關(guān)系的置換投影。留意,在這個(gè)

特殊的狀況下,投影比產(chǎn)生該投影的關(guān)系的n元組要少。

2.1.3連接。假設(shè)給定兩個(gè)二元關(guān)系,它們有一部門共同域。在

什么狀況下我們可以結(jié)合這兩個(gè)關(guān)系,以形成一個(gè)三元關(guān)

系,其中保存了所給關(guān)系的全部信息、?圖5中的例子顯示

了兩個(gè)可以進(jìn)展無信息損失連接的兩個(gè)關(guān)系R,S,圖6顯示

了R和S的連接。假如存在一個(gè)三元關(guān)系U,滿足弘12⑴)

=R且Ji23(U)=S.,那么二元關(guān)系R和S那么是可連接

的。隨意這樣的三元關(guān)系都叫做R和S的連接。假如R,S是

二元關(guān)系且弘2(R)=冗1(S),那么R和S是可連接的。

自然連接是確定存在的一個(gè)連接,定義為

R*S={(a,b,c):R(a,b)AS(b,c))

其中,假如(a,b)是R的一個(gè)成員且和S(b,的相像,那么

R(a,b)的值是真。即

Ji12(R*S)=R且Ji23(R*S)=S.

留意,圖6中顯示的連接是圖5中的R和S的自然連接,圖7

顯示了;另一個(gè)連接。

檢查這些關(guān)系展示了域part〔連接操作發(fā)生的域)中

的一個(gè)元素(元素1),該元素有性質(zhì):它擁有在R和S

中不止一個(gè)關(guān)系。正是這個(gè)元素引起了連接的多元化。在

連接域里這樣的元素叫做有關(guān)R和S連接的歧義點(diǎn)。

假如冗21(R)或R是一個(gè)函數(shù),在R和S的連接中

不會(huì)出現(xiàn)歧義點(diǎn)。在這種狀況下,R和S的自然連接就是R

和S的連接。留意反復(fù)的限定“R和S〃是必需的,應(yīng)為S

可能和S可連接(R和S同樣),而且這個(gè)連接應(yīng)當(dāng)完全

分開考慮。在圖5中,關(guān)系R,n21(R),S,冗21(S)

都不是一個(gè)函數(shù)。

R和S連接中的歧義點(diǎn)有時(shí)可以用其它關(guān)系消退。假設(shè)

我們被給定,或者可以從R,S中產(chǎn)生一個(gè)關(guān)系T,關(guān)系在

域project和supplier上擁有以下性質(zhì):

這樣我們可能形成R,S,T的三路連接,也就是一個(gè)三從

關(guān)系,如下:

這樣的一個(gè)連接被叫做循環(huán)三路連接以和線性三路連

接區(qū)分開來,后者將會(huì)是一個(gè)四元關(guān)系V,如下:

盡管可能存在不止一個(gè)循環(huán)三路連接(參看圖8,9),

這種狀況可能發(fā)生的環(huán)境比2元關(guān)系的多元性要發(fā)生該狀

況的環(huán)境要有更嚴(yán)格的限制.

具體來說,關(guān)系R,S,T必需處理關(guān)于R和S連接(假設(shè)

是點(diǎn)x),S和T的連接1假設(shè)是y)和T和R的連接(假

設(shè)是z)的歧義點(diǎn)。而且,更進(jìn)一步,y必需是x在S下的

一個(gè)關(guān)系,z是y在T下的一個(gè)關(guān)系,x是z在R下的一個(gè)

關(guān)系。留意在圖8中,點(diǎn)x=a;y=d;z=2有這個(gè)屬性。

3個(gè)2元關(guān)系R,S,T的自然線性三路連接如下:

其中,因?yàn)槭?元自然連接,等號(hào)左邊不用圓括號(hào)。為

了獲得循環(huán)副本,我們引入操作符號(hào)r,它可以通過將一個(gè)

n元關(guān)系的首位相連產(chǎn)生一個(gè)nT元的關(guān)系。因此,假如R

是一個(gè)n元關(guān)系(n>=2),R產(chǎn)生的環(huán)由下面的公示定義:

我們現(xiàn)在可以用下面的表達(dá)式表示R,S,T的自然循環(huán)

三路連接:

線性概念,循環(huán)S-連接和n元關(guān)系的連接的自然副本

的擴(kuò)展很明顯。然而,考慮到一些進(jìn)展連接的關(guān)系不確定

是二元的,所以可能須要一些額外的描述??紤]關(guān)系R(r

元),S(s元)的狀況,在它們的p個(gè)域上連接兩個(gè)關(guān)系。

簡(jiǎn)潔的說,假設(shè)這P個(gè)域是R的r個(gè)域中的最終p個(gè)域和

S的s個(gè)域中的前P個(gè)域。假如不是這樣,我們可以總是

采納適當(dāng)?shù)呐帕惺顾@樣?,F(xiàn)在,取得R的前r-p個(gè)域的

笛卡爾乘積,并且叫這個(gè)新的域?yàn)锳o取得R的后p個(gè)域

的笛卡爾乘積,并稱之為Bo取得S的后s-p個(gè)域的笛卡

爾乘積,并稱之為Co我們可以把R看作是在域A.B上的

二元函數(shù)。類似的,我們可以把S看作是域B,C上的二元

關(guān)系。線性和循環(huán)S-連接的概念現(xiàn)在成為可以干脆承受的

了。可以對(duì)線性的和各種元的n個(gè)關(guān)系的循環(huán)n元連接也

采納這種方法。

2.1.4組成。讀者很可能對(duì)應(yīng)用在函數(shù)上的組成概念特別熟識(shí)。

我們將會(huì)探討這個(gè)概念的概括而且首先把它應(yīng)用到二元

關(guān)系上。我們對(duì)組成和可組合型的定義是干脆基于以上給

出的聯(lián)合和可聯(lián)合性的定義上的。

假設(shè)我們被賜予兩個(gè)關(guān)系R,s。T是R和S的組合,假如

存在一個(gè)R和S的連接且滿足7=m(U)。因此,當(dāng)且

僅當(dāng)兩個(gè)關(guān)系是可連接的時(shí),它們是可組合的。然而,

存在多于一個(gè)的R和S的連接并不意味著存在多余一個(gè)

的R和S的組合。

與R與S的自然連接相應(yīng)的是S伴隨R的自然組成,

定義為:

R*S=Ji13(R*S)

將關(guān)系R和S從表5中提取出來看,他們的自然組成由

表10展示,而另一個(gè)組成由表11展示(與表7展示的

連接相區(qū)分)

表10.S伴隨R的自然組成(由表5所得〕

表11.S伴隨R的另一個(gè)組成(由表5所得)

當(dāng)存在2個(gè)或更多的連接時(shí),不同的組成數(shù)量可能少至

1個(gè)也可能多至與不同連接數(shù)目一樣。表12展示了一個(gè)有

很多連接關(guān)系但是只有一個(gè)組成的2個(gè)關(guān)系的例子。留意

到在由S組成R時(shí),點(diǎn)c的不確定性丟失了,因?yàn)橥ㄟ^點(diǎn)

a,b,d,e造成了確定性的關(guān)聯(lián)。

表12.多個(gè)連接,只有一個(gè)組成

多對(duì)非必需二元(可能是多維的)的關(guān)系的組成的擴(kuò)展

與這種關(guān)系成對(duì)連接的狀況如出一轍。

對(duì)于關(guān)系組合了解的缺乏導(dǎo)致很多系統(tǒng)設(shè)計(jì)員陷入了

一種我們稱為連接陷阱的逆境。這種陷阱可能被依照以下

舉例描述。假設(shè)每個(gè)供應(yīng)商的描述與供應(yīng)商供應(yīng)的每一局

部的描述相關(guān)聯(lián),并且每一局部的描述近似地與運(yùn)用這些

局部的工程描述相關(guān)聯(lián)。通常,現(xiàn)在就可以得出一個(gè)錯(cuò)誤

的結(jié)論:換句話說,假如全部可能的通道通過供應(yīng)商在工

程中供應(yīng)的局部來遵循供應(yīng)商,就可以得到一個(gè)該供應(yīng)商

供應(yīng)的全部工程的有效集。這樣一個(gè)結(jié)論只有在特別特殊

的狀況下才是正確的,即是目標(biāo)的工程和供應(yīng)商關(guān)系事實(shí)

上是另兩個(gè)關(guān)系的自然組成一一而我們通常必需加上一個(gè)

詞“對(duì)于全部時(shí)間〃,因?yàn)檫@通常是在跟蹤限制技術(shù)的要

求中示意到的。

*別的作者傾向于忽視組成而不是自然組成,于是把這

一特殊的組成看做“那個(gè)組成”一一看,舉個(gè)例子,Kelley

的"GeneralTopology".

2.1.5限制。一個(gè)關(guān)系的子集還是一個(gè)關(guān)系。關(guān)系S可能對(duì)

關(guān)系R操作從而形成一個(gè)R的子集的一種途徑是通過S

對(duì)R進(jìn)展限制操作。這個(gè)操作是函數(shù)對(duì)子集的域的限制

的一般化,它的定義如下。

設(shè)L,M為等長(zhǎng)書目列表,L4,i2,……,ik,M=j?

j2,……jk其中kWR的維數(shù)且kWS的維數(shù)。那么L,M對(duì)由

S對(duì)R的限制RL|?S表示R的最小子集R',一(R')=

nM(S)o

這個(gè)操作只有當(dāng)相等可以對(duì)于h=l,2,…,k,應(yīng)用到

?h(R)的成員和gh(R)之間才被定義。

表13中R,S,R'這3個(gè)關(guān)系滿足等式R'=R(2,3)|(i12)So

表13.限制舉例

我們現(xiàn)在立足于考慮這些操作在關(guān)系上的應(yīng)用。

2.2冗余

一個(gè)指定關(guān)系集的冗余必需可以與存儲(chǔ)陳述集的冗余相區(qū)分。

在這里我們主要關(guān)切的是前者。首先,我們須要一個(gè)關(guān)于關(guān)系的

可導(dǎo)出性的精確概念。

假設(shè)9是關(guān)系上的一個(gè)操作集合,而且每個(gè)操作都有對(duì)每個(gè)

操作數(shù)產(chǎn)生一個(gè)唯一關(guān)系的性質(zhì)(因此自然連接是合理的,但是

連接是不合理的)。假如一個(gè)關(guān)系R在全部狀況下存在一個(gè)集合9

的操作序列,使R從S的一個(gè)成員中產(chǎn)生,那么R對(duì)一個(gè)關(guān)系集

合S。-可導(dǎo)。“在全部狀況下"這一描述是現(xiàn)在時(shí)的,因?yàn)槲?/p>

們正在處理隨時(shí)間變更的關(guān)系,而且我們的愛好在于保持一段關(guān)

鍵時(shí)期的可導(dǎo)性。對(duì)于非推理性系統(tǒng)上的指定關(guān)系,好像一個(gè)恰

當(dāng)?shù)募县鞍艘幌虏僮鳎和队?,自然連接,束縛和限制。排

列是不相干的且自然成分須要被包含,因?yàn)樵谶M(jìn)展連接然后投影

的狀況下是可行的。對(duì)于表示的存儲(chǔ)集來說,一個(gè)恰當(dāng)?shù)膶?duì)92

集合的操作會(huì)包含排列和更多的關(guān)于子集合和合并關(guān)系的操作,

并且排列和關(guān)聯(lián)它們的元素。

2.2.1強(qiáng)冗余。假如一個(gè)關(guān)系集包含了最少一個(gè)關(guān)系,這個(gè)

關(guān)系限制了一個(gè)不同于其他關(guān)系集投影的投影,我們就

稱這個(gè)關(guān)系集是強(qiáng)冗余的。以下兩個(gè)例子是為了說明為

什么強(qiáng)冗余性是這樣定義的,和證明它的實(shí)際作用。在

第一個(gè)關(guān)系系列的例子中包含了下面這個(gè)關(guān)系:

Employee(serial#,name,manager#,managername)

其中serial#是主鍵而manager#是外鍵。讓我們用△來

指定有效域,并假設(shè)對(duì)于全部時(shí)間t滿足:

△tfmanager#}uAt(serial#)且Atfmanagername)

u△,(name)

這種狀況下的冗余就很明顯了:域managername就是不

必要的。要證明這個(gè)是我們?cè)谥岸x的強(qiáng)冗余,我們發(fā)

冗34temployee)=冗12(employee)1113(employee)。

在其次個(gè)關(guān)系系列的例子中包含了一個(gè)描述供應(yīng)商的

關(guān)系S,S的主鍵為s#,一個(gè)關(guān)系描述部門的關(guān)系D,D的

主鍵為d#,一個(gè)描述工程的關(guān)系J,J的主鍵為j#,以及

一下關(guān)系:

P(s#,d#,…),Q(spj#,…),R(d#,j#,…)

其中…表示除了s#,d#,j#的其他域。讓我們假設(shè)接

下來一個(gè)狀況C,C保持時(shí)間的圖理性:供應(yīng)商s當(dāng)且僅當(dāng)

他供應(yīng)的工程J[關(guān)系Q)是部門d可以被安排到的工程時(shí)

(關(guān)系R),s才將這個(gè)部門d[關(guān)系P)供應(yīng)出來。然后,

我們就可以寫出這個(gè)等式并因此展示出一個(gè)強(qiáng)冗余:

弘12(P)=n12(Q)?^2i(R)

強(qiáng)冗余存在于指定關(guān)系系列的一個(gè)重要緣由是用戶便

利性。對(duì)此一個(gè)特殊的狀況是指定關(guān)系集特征關(guān)系的保持,

從而從名字上涉及到它們的舊程序可以接著正確運(yùn)行。關(guān)

于指定集強(qiáng)冗余存在性的學(xué)問使一個(gè)系統(tǒng)或者數(shù)據(jù)庫管理

員得以在選擇展示形式上有更多自由行,從而在處理當(dāng)前

流量時(shí)更高效。假如一個(gè)指定集的強(qiáng)冗余干脆被存儲(chǔ)集的

強(qiáng)冗余影響〔或者假如其他強(qiáng)冗余被引入這一存儲(chǔ)集),那

么一般來說,將會(huì)在一些查詢的時(shí)間和裝載中心處理器時(shí)

間突然變更的同時(shí),消耗更多存儲(chǔ)空間和更新時(shí)間。

2.2.2弱冗余。其次種類型的冗余可能存在。與強(qiáng)冗余相反,

它不是用一個(gè)等式來描述的。假如一個(gè)關(guān)系系列包含

了一個(gè)關(guān)系,這個(gè)關(guān)系包含一個(gè)無法區(qū)分于其他成員的

工程,但是這個(gè)關(guān)系對(duì)于任何時(shí)候都是一個(gè)該集合關(guān)系

中其他投影連接的投影,那么這一關(guān)系系列就是弱冗余

的。

我們可以用其次個(gè)強(qiáng)冗余的例子〔前面提到的)來展示

一個(gè)弱冗余,并且假設(shè)現(xiàn)在狀態(tài)C并不能在全部時(shí)間下保

持穩(wěn)定。關(guān)系?2IP),(Q),?2(R〕是困難關(guān)系,

在潛在的任兩個(gè)關(guān)系連接的同時(shí)觀點(diǎn)模糊的可能性時(shí)時(shí)常

產(chǎn)生。在這種狀況下,沒有一個(gè)關(guān)系可以區(qū)分于另外兩個(gè)。

但是,在他們之間的確存在約束,因?yàn)槊恳粋€(gè)關(guān)系都是這

3個(gè)關(guān)系循環(huán)鏈接的投影。其中一個(gè)弱冗余可以用這個(gè)陳

述來表現(xiàn):對(duì)于全部時(shí)間,/2(P)是一個(gè)—2(Q)和S2

(R)的組合。問題的組成可能是自然的那個(gè)發(fā)生在某個(gè)瞬

時(shí)而不自然的那個(gè)發(fā)生在另一個(gè)瞬時(shí)。

通常來說,弱冗余是隨著用戶溝通的邏輯須要而固有出

現(xiàn)的。他們無法被系統(tǒng)或數(shù)據(jù)庫管理員移動(dòng)。假如它們徹

底出現(xiàn)了,那必定在指定集和存儲(chǔ)集的表現(xiàn)形式中同時(shí)出

現(xiàn)了。

2.3一樣性

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論