版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年工程促成居間合同集錦
- 2024年工程助理勞務(wù)合作協(xié)議
- 2024丙丁雙方關(guān)于虛擬現(xiàn)實(shí)技術(shù)開發(fā)與應(yīng)用合同
- 2024年嚴(yán)馳鄭黛共同發(fā)起的公益項(xiàng)目捐贈(zèng)合同
- 井區(qū)安全員年終個(gè)人述職匯報(bào)-述職報(bào)告范文
- 2024年廣告效果監(jiān)測(cè)與評(píng)估合同
- 2024年度石油天然氣管道建設(shè)合同
- 2024年度網(wǎng)頁美工設(shè)計(jì)外包合同
- 2024年度圖書訂閱合同
- 2024年度旅游管理與服務(wù)合同
- 裝修垃圾清運(yùn)處置方案
- JC-T 2536-2019水泥-水玻璃灌漿材料
- 品牌授權(quán)協(xié)議書
- 藝術(shù)設(shè)計(jì)就業(yè)職業(yè)生涯規(guī)劃
- 《狙擊手》和《新神榜楊戩》電影賞析
- 槍庫應(yīng)急處置預(yù)案
- 老年患者術(shù)后譫妄的護(hù)理干預(yù)
- 《凸透鏡成像的規(guī)律》課件
- 倉庫管理中的客戶服務(wù)和溝通技巧
- 規(guī)劃選址及用地預(yù)審
- 土砂石料廠項(xiàng)目融資計(jì)劃書
評(píng)論
0/150
提交評(píng)論