關(guān)系數(shù)據(jù)庫--數(shù)據(jù)庫屬性等.ppt_第1頁
關(guān)系數(shù)據(jù)庫--數(shù)據(jù)庫屬性等.ppt_第2頁
關(guān)系數(shù)據(jù)庫--數(shù)據(jù)庫屬性等.ppt_第3頁
關(guān)系數(shù)據(jù)庫--數(shù)據(jù)庫屬性等.ppt_第4頁
關(guān)系數(shù)據(jù)庫--數(shù)據(jù)庫屬性等.ppt_第5頁
已閱讀5頁,還剩31頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第2章 關(guān)系數(shù)據(jù)庫,2.1 關(guān)系數(shù)據(jù)結(jié)構(gòu),2.2 關(guān)系操作,2.3 關(guān)系完整性,2.4 關(guān)系代數(shù),2.1 關(guān)系數(shù)據(jù)結(jié)構(gòu),1二維表 在日常工作中,經(jīng)常會(huì)碰到成績(jī)冊(cè)、職工表等二維表格,這些二維表的共同特點(diǎn)是由多個(gè)行和列組成。每個(gè)列有列名,表示了某個(gè)方面的屬性,每行由多個(gè)值組成。例如,見表2.1,學(xué)生基本情況表就是一個(gè)二維表,體現(xiàn)了某個(gè)班級(jí)的學(xué)生基本情況,定義表名為XS。,2.1.1 關(guān)系,2.1.1 關(guān)系,二維表具有如下特點(diǎn): 每個(gè)表具有表名; 表由表頭和若干行數(shù)據(jù)兩部分構(gòu)成; 表頭有若干列,每列都有列名; 同一列的值必須取自同一個(gè)域。例如,專業(yè)只能取自該學(xué)校有的專業(yè); 每一行的數(shù)據(jù)代表一個(gè)實(shí)體的

2、信息。 對(duì)二維表可以進(jìn)行如下操作: 增加數(shù)據(jù)。例如,向“學(xué)生基本情況表”中增加一個(gè)同學(xué)的數(shù)據(jù)(07050103,王俊,男,1989-10-1,計(jì)算機(jī)應(yīng)用)。 修改數(shù)據(jù)。例如,改正“學(xué)生基本情況表”中的錯(cuò)誤數(shù)據(jù)。 刪除數(shù)據(jù)。例如,從“學(xué)生基本情況表”中去掉一個(gè)學(xué)生的數(shù)據(jù)。 查詢數(shù)據(jù)。例如,在“學(xué)生基本情況表”中按某些條件查找滿足條件的學(xué)生。 2關(guān)系 關(guān)系模型的數(shù)據(jù)結(jié)構(gòu)非常簡(jiǎn)單,只包含單一數(shù)據(jù)結(jié)構(gòu),即關(guān)系。從用戶角度看,一個(gè)關(guān)系就是一個(gè)規(guī)范化的二維表。關(guān)系模型就是用關(guān)系這種二維表格結(jié)構(gòu)來表示實(shí)體及實(shí)體之間聯(lián)系的模型,即關(guān)系模型是各個(gè)關(guān)系框架的集合。 一個(gè)關(guān)系由關(guān)系模式和關(guān)系實(shí)例組成。通常,它們分別

3、對(duì)應(yīng)于二維表的表名、表頭和數(shù)據(jù)。若將表2.1的“學(xué)生基本情況表”表示成關(guān)系,則如圖 2.1 所示。,2.1.1 關(guān)系,圖2.1 二維表的關(guān)系表示圖,在人們?nèi)粘@斫庵?,學(xué)生是一個(gè)抽象的概念,而學(xué)生王林是一個(gè)具體的學(xué)生,是學(xué)生中的一員。在數(shù)據(jù)庫領(lǐng)域中把學(xué)生稱為實(shí)體“型”,學(xué)生王林則稱為一個(gè)實(shí)體“值”或簡(jiǎn)稱實(shí)體。在關(guān)系模型中,關(guān)系模式描述了一個(gè)實(shí)體型,而關(guān)系實(shí)例則是關(guān)系模型的“值”,關(guān)系實(shí)例通常由一組實(shí)體組成。 以下介紹關(guān)系模型中一些常用的術(shù)語。 關(guān)系:以非形式化的描述,一個(gè)關(guān)系(Relation)就是指一張二維表。例如,“學(xué)生基本情況表”就是一個(gè)關(guān)系。,2.1.1 關(guān)系, 元組:一個(gè)元組(Tupl

4、e)指二維表中的一行。例如,(07050101,王林,男,1989-3-2,計(jì)算機(jī)應(yīng)用)就是一個(gè)元組。 屬性:一個(gè)屬性(Attribute)指二維表中的一列,表中每列均有名稱,即屬性名。例如,“學(xué) 生基本情況表”有6列,對(duì)應(yīng)6個(gè)屬性:學(xué)號(hào)、姓名、性別、出生日期、專業(yè)、班級(jí)。 碼:碼(Key)也稱為鍵、關(guān)鍵字、關(guān)鍵碼,指其值可唯一確定表中元組的屬性或最小屬性組合。例如,“學(xué)生基本情況表”中的“學(xué)號(hào)”屬性即為碼。 域:域(Domain)指屬性的取值范圍。例如,按照學(xué)校對(duì)學(xué)生學(xué)號(hào)的編排方法,學(xué)號(hào)具有一定的范圍限制,性別只能?。?,女)之一等。 分量:分量指元組中的一個(gè)屬性值。例如,元組(070501

5、01,王林,男,1989-3-2,計(jì)算機(jī)應(yīng)用)中的“07050101”即為其分量。 關(guān)系模式:關(guān)系模式是對(duì)關(guān)系“型”的描述,通常表示為:關(guān)系名(屬性1,屬性2,屬性n)。例如,XS(學(xué)號(hào),姓名,性別,出生日期,專業(yè)),關(guān)系名為XS,該關(guān)系包括5個(gè)屬性,分別是:學(xué)號(hào)、姓名、性別、出生日期、專業(yè)。 關(guān)系模型中,要求關(guān)系必須是規(guī)范化的,即關(guān)系要滿足規(guī)范條件。規(guī)范條件最基本的一條就是要求關(guān)系的每個(gè)分量必須是原子項(xiàng),是不可再分的數(shù)據(jù)項(xiàng),即不允許出現(xiàn)表中表的情形。例如,表2.2的學(xué)生情況表中,出生日期是可再分的數(shù)據(jù)項(xiàng),因此不符合關(guān)系數(shù)據(jù)庫的要求。,2.1.1 關(guān)系,表2.2 學(xué)生情況表,表2.3將關(guān)系與現(xiàn)

6、實(shí)世界中的二維表格各自使用的術(shù)語進(jìn)行了對(duì)照。,表2.3 術(shù)語對(duì)照表,2.1.2 關(guān)系的形式化描述,在關(guān)系模型中,數(shù)據(jù)是以二維表的形式存在的,這個(gè)二維表就叫做關(guān)系。 1域(Domain) 定義2.1 域是一組具有相同數(shù)據(jù)類型的值的集合,又稱為值域(用D表示)。 例如,整數(shù)、實(shí)數(shù)和字符串的集合都是域。 域中所包含的值的個(gè)數(shù)稱為域的基數(shù)(用 m 表示)。域表示了關(guān)系中屬性的取值范圍。例如: D1=07050101,07050102,07030201,07030202,07060101,07060102 D2=王林,程小明,趙倪曉,朱慶,李運(yùn)洪,張美紅 D3=男,女 其中,D1,D2,D3 為域名,分

7、別表示學(xué)生關(guān)系中的學(xué)號(hào)、姓名和性別的取值范圍。這3個(gè)域的基數(shù)分別是6,6,2。 2笛卡兒積(Cartesian Product) 定義2.2 給定一組域D1,D2,Dn(它們可以包含相同的元素),D1,D2,Dn 的笛卡兒積為 D1D2Dn=(d1,d2,dn)| diDi,i=1,2,n 其中: 每一個(gè)元素(d1,d2,d3,dn)稱為一個(gè) n 元組(n-tuple),簡(jiǎn)稱元組(Tuple)。注意元組中的每個(gè)分量di是按序排列的,如(07050101,王林,男)(王林,07050101,男)(男,王林,07050101)。,2.1.2 關(guān)系的形式化描述, 元組中的每一個(gè)值di 叫做一個(gè)分量(

8、Component),分量來自相應(yīng)的域(diDi)。 笛卡兒積也是一個(gè)集合。若Di(i=1,2,n)為有限集,其基數(shù)為mi(i=1,2,n),則笛卡兒積D1D2Dn 的基數(shù) M(即元素(d1,d2,dn)的個(gè)數(shù))為所有域的基數(shù)的累積,即,例如,上述學(xué)生關(guān)系中姓名、性別兩個(gè)域的笛卡兒積為: D1D2=(王林,男),(王林,女),(程小明,男),(程小明,女),(趙倪曉,男),(趙倪曉,女),(朱慶,男),(朱慶,女),(李運(yùn)洪,男),(李運(yùn)洪,女),(張美紅,男),(張美紅,女) 其中,王林、程小明、趙倪曉、朱慶、李運(yùn)洪、張美紅和男、女都是分量,(王林,男),(王林,女)等是元組。該笛卡兒積的基

9、數(shù)M=m1m2=62=12,即D1D2的元組個(gè)數(shù)為12。,2.1.2 關(guān)系的形式化描述,笛卡兒積也可用二維表的形式表示。例如,上述D1D2可表示為表2.4。表2.4 D1,D2的笛卡兒積 D1D2王 林男王 林女程小明男程小明女趙倪曉男趙倪曉女朱 慶男朱 慶女李運(yùn)洪男李運(yùn)洪女張美紅男張美紅女 可見,笛卡兒積實(shí)際是一個(gè)二維表,表的任意一行就是一個(gè)元組,表中的每一列來自同一個(gè)域,如表2.4中第一個(gè)分量來自D1,第二個(gè)分量來自D2。 3關(guān)系(Relation) 定義2.3 笛卡兒積D1D2Dn的任一子集稱為域D1,D2,Dn上的關(guān)系。 關(guān)系可用R(D1,D2,Dn)的形式表示,其中R為關(guān)系名,n是關(guān)

10、系的度(Degree),也稱目。 通常,笛卡兒積D1D2Dn的許多子集是沒有實(shí)際意義的,只有其中的某些子集才有實(shí)際意義。,表2.4 D1,D2的笛卡兒積,例如,表2.4所示的D1D2笛卡兒積中的許多元組都是沒有實(shí)際意義的,因?yàn)橐粋€(gè)學(xué)生的性別只有一種。因此表2.4中的一個(gè)子集才是有意義的,見表2.5,表示了學(xué)生的性別,將其取名為R1。,2.1.2 關(guān)系的形式化描述,下面是對(duì)定義2.3的幾點(diǎn)說明。 關(guān)系中元組個(gè)數(shù)是關(guān)系的基數(shù)。如關(guān)系R1的基數(shù)為6。 關(guān)系是一個(gè)二維表,表的任意一行對(duì)應(yīng)一個(gè)元組,表的每一列來自同一域。由于域可以相同,為了加以區(qū)別,必須為每列起一個(gè)名字,稱為屬性。n元關(guān)系有n個(gè)屬性,屬

11、性的名字唯一。 在數(shù)學(xué)上,關(guān)系是笛卡兒積的任意子集,但在數(shù)據(jù)庫系統(tǒng)中,關(guān)系是笛卡兒積中所取的有意義的有限子集。,表2.5 R1關(guān)系,2.1.3 關(guān)系的性質(zhì),關(guān)系具有以下6條性質(zhì): 列是同質(zhì)的(Homogeneous),即每列中的分量必須是同一類型的數(shù)據(jù); 不同的列可以出自同一個(gè)域,但不同的屬性必須賦予不同的屬性名; 列的順序可以任意交換。交換時(shí),應(yīng)連同屬性名一起交換; 任意兩個(gè)元組不能完全相同; 關(guān)系中元組的順序可任意,即可任意交換兩行的次序; 分量必須取原子值,即要求每個(gè)分量都是不可再分的數(shù)據(jù)項(xiàng)。,2.1.4 關(guān)系模式,在第1章已提到,在數(shù)據(jù)庫中要區(qū)分“型”和“值”。關(guān)系數(shù)據(jù)庫中,關(guān)系模式是

12、“型”,關(guān)系是“值”。 定義2.4 關(guān)系的描述稱為關(guān)系模式(Relation Schema)。關(guān)系模式可形式化地表示為 R(U,D,dom,F(xiàn)) 其中,R為關(guān)系名;U為組成關(guān)系的屬性名集合;D為屬性組U中屬性所來自的域;dom為屬性與域之間的映象集合;F為屬性間依賴關(guān)系的集合。 由定義2.4可看出,關(guān)系模式是關(guān)系的框架,是對(duì)關(guān)系結(jié)構(gòu)的描述。它指出了關(guān)系由哪些屬性構(gòu)成,屬性所來自的域以及屬性之間的依賴關(guān)系等。關(guān)于屬性間的依賴關(guān)系將在第5章討論,本章中關(guān)系模式僅涉及關(guān)系名R、屬性集合U、域D、屬性到域的映像dom這4個(gè)部分,即R(U,D,dom)。 關(guān)系模式通??珊?jiǎn)記為:R(U)或R(A1,A2,

13、An)。其中R為關(guān)系名,A1,A2,An為屬性名(i=1,2,n)。而域名、屬性到域的映像則常以屬性的類型、數(shù)據(jù)長(zhǎng)度來說明。 例如,在學(xué)生成績(jī)數(shù)據(jù)庫(XSCJ)中,有學(xué)生(XS)、課程(KC)、學(xué)生選課(XS_KC)三個(gè)關(guān)系,其關(guān)系模式分別為: XS(學(xué)號(hào),姓名,性別,出生日期,專業(yè),總學(xué)分,班干否,備注) KC(課程號(hào),課程性質(zhì),課程名,開課學(xué)期,總學(xué)時(shí),學(xué)分) XS_KC(學(xué)號(hào),課程號(hào),成績(jī)) 關(guān)系模式是靜態(tài)的、穩(wěn)定的,而關(guān)系是動(dòng)態(tài)的、隨時(shí)間不斷變化的。關(guān)系是關(guān)系模式在某一時(shí)刻的狀態(tài)或內(nèi)容,關(guān)系的各種操作將不斷地更新數(shù)據(jù)庫中的數(shù)據(jù)。,2.1.5 關(guān)系數(shù)據(jù)庫,關(guān)系模型中,實(shí)體、實(shí)體間的聯(lián)系都

14、是以關(guān)系來表示的。例如,學(xué)生成績(jī)數(shù)據(jù)庫中,學(xué)生(XS)和課程(KC)關(guān)系是用于表示實(shí)體的,而學(xué)生選課(XS_KC)關(guān)系則用于表示“學(xué)生”實(shí)體與“課程”實(shí)體間的聯(lián)系。 定義2.5 在給定的應(yīng)用領(lǐng)域,所有實(shí)體及實(shí)體之間聯(lián)系的關(guān)系的集合構(gòu)成一個(gè)關(guān)系數(shù)據(jù)庫。 例如,在研究學(xué)生選修課程的問題域中,學(xué)生(XS)、課程(KC)、學(xué)生選課(XS_KC)三個(gè)關(guān)系的集合就構(gòu)成學(xué)生成績(jī)數(shù)據(jù)庫。 關(guān)系數(shù)據(jù)庫也區(qū)分“型”和“值”。關(guān)系數(shù)據(jù)庫的型即關(guān)系數(shù)據(jù)庫模式,是對(duì)關(guān)系數(shù)據(jù)庫結(jié)構(gòu)的描述。關(guān)系數(shù)據(jù)庫模式包括若干域的定義,以及在這些域上定義的若干關(guān)系模式,通常以關(guān)系數(shù)據(jù)庫中包含的所有關(guān)系模式的集合來表示關(guān)系數(shù)據(jù)庫模式。例如

15、,學(xué)生成績(jī)數(shù)據(jù)庫模式即為學(xué)生(XS)、課程(KC)、學(xué)生選課(XS_KC)三個(gè)關(guān)系模式構(gòu)成的集合。 關(guān)系數(shù)據(jù)庫的值是指關(guān)系數(shù)據(jù)庫模式中的各關(guān)系模式在某一時(shí)刻對(duì)應(yīng)的關(guān)系的集合。 例如,若學(xué)生數(shù)據(jù)庫模式中各關(guān)系模式在某一時(shí)刻對(duì)應(yīng)的關(guān)系分別見表2.6、表2.7和表2.8,那么它們就是學(xué)生數(shù)據(jù)庫的值。,2.1.5 關(guān)系數(shù)據(jù)庫,表2.6 XS關(guān)系,表2.7 KC關(guān)系,2.1.5 關(guān)系數(shù)據(jù)庫,表2.8 XS_KC關(guān)系,2.2 關(guān)系操作,關(guān)系模型給出了關(guān)系操作應(yīng)達(dá)到的能力說明,但不對(duì)關(guān)系數(shù)據(jù)庫管理系統(tǒng)如何實(shí)現(xiàn)操作能力做具體的語法要求。因此,不同的關(guān)系數(shù)據(jù)庫管理系統(tǒng)可以定義和開發(fā)不同的語言來實(shí)現(xiàn)關(guān)系操作。 基

16、本的關(guān)系操作包括查詢和更新兩大類,更新操作又包括插入、刪除和修改3種。關(guān)系操作的特點(diǎn)是集合方式操作,即操作的對(duì)象和結(jié)果都是關(guān)系。 關(guān)系代數(shù)、元組關(guān)系演算和域關(guān)系演算3種語言都是抽象的查詢語言,它們?cè)诒磉_(dá)能力上是等價(jià)的。這3種語言常用做評(píng)估實(shí)際數(shù)據(jù)庫管理系統(tǒng)中的查詢語言表達(dá)能力的標(biāo)準(zhǔn)和依據(jù)。實(shí)際RDBMS的查詢語言除了提供關(guān)系代數(shù)或關(guān)系演算的功能外,往往還提供更多附加功能,包括集函數(shù)、算術(shù)運(yùn)算等,因此,實(shí)際RDBMS的查詢語言功能更強(qiáng)大。,2.3 關(guān)系完整性,2.3.1 關(guān)系的碼 2.1.1節(jié)中已給出了碼(Key)的非形式化定義,本小節(jié)將更深入地討論碼的概念。 1候選碼 由2.1.1節(jié)給出的定義

17、可知,能唯一標(biāo)識(shí)關(guān)系中元組的一個(gè)屬性或幾個(gè)屬性的最小組合,稱為候選碼(Candidate Key),也稱候選關(guān)鍵字、候選鍵或碼。如學(xué)生關(guān)系中的“學(xué)號(hào)”能唯一標(biāo)識(shí)每一個(gè)學(xué)生,則屬性“學(xué)號(hào)”是學(xué)生關(guān)系的候選碼。 下面給出候選碼的形式化定義。 定義2.6 設(shè)關(guān)系R(A1,A2,An),其屬性為:A1,A2,An,屬性集K為R的子集,K=(Ai,Aj,Ak),1i,j,kn。當(dāng)且僅當(dāng)滿足下列兩個(gè)條件時(shí),K被稱為候選碼: 唯一性。對(duì)關(guān)系R的任兩個(gè)元組,其在屬性集K上的值是不同的。 最小性。屬性集K=(Ai,Aj,Ak)是最小集,即若刪除K中的任一屬性,K都不滿足唯一性。 例如,“學(xué)生選課”關(guān)系包含屬性學(xué)

18、號(hào)、課程號(hào)、成績(jī),其中屬性集(學(xué)號(hào),課程號(hào))為候選碼,刪除“學(xué)號(hào)”或“課程號(hào)”任一屬性,都無法唯一標(biāo)識(shí)選課記錄。,2.3.1 關(guān)系的碼,2主碼 若一個(gè)關(guān)系有多個(gè)候選碼,則從中選擇一個(gè)作為主碼(Primary Key)。 例如,假設(shè)在“學(xué)生”關(guān)系中學(xué)生的姓名都不重名,那么“學(xué)號(hào)”和“姓名”都可作為學(xué)生關(guān)系的候選碼,可指定“學(xué)號(hào)”或“姓名”作為主碼。 包含在候選碼中的各屬性稱為主屬性(Prime Attribute)。 非碼屬性(Non-Prime Attribute):不包含在任何候選碼中的屬性稱為非碼屬性。 在最簡(jiǎn)單的情況下,一個(gè)候選碼只包含一個(gè)屬性,如學(xué)生關(guān)系中的“學(xué)號(hào)”,教師關(guān)系中的“教師

19、號(hào)”。 若所有屬性的組合是關(guān)系的候選碼,這種情況稱為全碼(All-Key)。例如,設(shè)有“教師授課”關(guān)系,包含3個(gè)屬性:教師號(hào)、課程號(hào)和學(xué)號(hào)。一個(gè)教師可講授多門課程,一門課程可有多個(gè)教師講授,一個(gè)學(xué)生可以選修多門課程,一門課程可被多個(gè)學(xué)生選修。在這種情況下,教師號(hào)、課程號(hào)、學(xué)號(hào)三者之間是多對(duì)多關(guān)系,(教師號(hào),課程號(hào),學(xué)號(hào))3個(gè)屬性的組合是“教師授課”關(guān)系的候選碼,稱為全碼,教師號(hào)、課程號(hào)、學(xué)號(hào)都是主屬性。,2.3.1 關(guān)系的碼,3外碼 定義2.7 如果關(guān)系R1的屬性或?qū)傩越MK不是R1的主碼,而是另一關(guān)系R2的主碼,則稱K為關(guān)系R1的外碼(Foreign Key),并稱關(guān)系R1為參照關(guān)系(Refe

20、rencing Relation),關(guān)系R2為被參照關(guān)系(Referenced Relation)。 例如,在學(xué)生選課(學(xué)號(hào),課程號(hào),成績(jī))關(guān)系中,“學(xué)號(hào)”屬性與學(xué)生關(guān)系的主碼“學(xué)號(hào)”相對(duì)應(yīng),“課程號(hào)”屬性與課程關(guān)系的主碼“課程號(hào)”相對(duì)應(yīng)。因此,“學(xué)號(hào)”和“課程號(hào)”屬性是選課關(guān)系的外碼。學(xué)生關(guān)系和課程關(guān)系為被參照關(guān)系,學(xué)生選課關(guān)系為參照關(guān)系。 由外碼定義可知,被參照關(guān)系的主碼和參照關(guān)系的外碼必須定義在同一個(gè)域上。例如,選課關(guān)系中“學(xué)號(hào)”與學(xué)生關(guān)系的主碼“學(xué)號(hào)”必須定義在同一個(gè)域上,“課程號(hào)”屬性與課程關(guān)系的主碼“課程號(hào)”必須定義在同一個(gè)域上。并且參照關(guān)系的外碼只能取被參照關(guān)系的主碼所取的值,這

21、點(diǎn)被稱為關(guān)系的參照完整性。例如,在學(xué)生選課(學(xué)號(hào),課程號(hào),成績(jī))關(guān)系中,學(xué)號(hào)只能取在學(xué)生關(guān)系中出現(xiàn)的學(xué)號(hào)值。關(guān)于數(shù)據(jù)參照完整性更詳細(xì)的介紹請(qǐng)見第4章。,2.3.2 完整性約束,關(guān)系模型的完整性規(guī)則是根據(jù)現(xiàn)實(shí)世界的要求,對(duì)關(guān)系的某種約束條件。可從不同角度對(duì)關(guān)系的完整性進(jìn)行分類。根據(jù)完整性約束條件作用的對(duì)象,可分為:列約束、元組約束和關(guān)系約束。根據(jù)完整性定義的特征,可分為:實(shí)體完整性、用戶定義完整性與參照完整性。在4.2節(jié)將具體介紹。 例如,在XSCJ數(shù)據(jù)庫中,將XS表作為主表,學(xué)號(hào)字段為主碼;XS_KC為從表,表中的學(xué)號(hào)字段為外碼,從而建立主表和從表之間的聯(lián)系,即主表和從表之間應(yīng)滿足參照完整性的

22、約束,此時(shí),從表中學(xué)號(hào)字段的取值必須與主表中對(duì)應(yīng)字段的值一致。,2.4 關(guān)系代數(shù),關(guān)系代數(shù)是一種抽象的查詢語言,是關(guān)系數(shù)據(jù)操縱語言的一種傳統(tǒng)表達(dá)方式。它是用對(duì)關(guān)系的運(yùn)算來表達(dá)查詢的,其運(yùn)算對(duì)象是關(guān)系,運(yùn)算結(jié)果也是關(guān)系。 關(guān)系代數(shù)用到的運(yùn)算符主要包括4類:集合運(yùn)算符、專門的關(guān)系運(yùn)算符、比較運(yùn)算符和邏輯運(yùn)算符,其中比較運(yùn)算符和邏輯運(yùn)算符是用來輔助專門的關(guān)系運(yùn)算符進(jìn)行操作的。這4類運(yùn)算的含義列于表2.9中。,2.4 關(guān)系代數(shù),表2.9 關(guān)系代數(shù)的4類運(yùn)算符,2.4 關(guān)系代數(shù),關(guān)系代數(shù)的運(yùn)算可分為兩類: 1傳統(tǒng)的集合運(yùn)算 傳統(tǒng)的集合運(yùn)算是二目運(yùn)算,包括并、差、交和笛卡兒積4種運(yùn)算。傳統(tǒng)集合運(yùn)算除笛卡兒

23、積外,都要求參與運(yùn)算的兩個(gè)關(guān)系滿足“相容性”條件。 定義2.8 設(shè)兩個(gè)關(guān)系R,S,若R,S滿足以下兩個(gè)條件: 具有相同的度n; R中第i個(gè)屬性和S中第i個(gè)屬性來自同一個(gè)域。則稱關(guān)系R,S滿足“相容性”條件。 設(shè)R,S為兩個(gè)滿足“相容性”條件的n目關(guān)系,t為元組變量,tR表示t是關(guān)系R的一個(gè)元組??啥x關(guān)系的并、差、交運(yùn)算如下。 (1)并(Union) 關(guān)系R和關(guān)系S的并由屬于R或?qū)儆赟的元組組成,即R和S的所有元組合并,刪去重復(fù)元組,組成一個(gè)新關(guān)系,其結(jié)果仍為一個(gè)n目關(guān)系。記為 RS=t | tRtS 對(duì)于關(guān)系數(shù)據(jù)庫,記錄的插入和添加可通過并運(yùn)算實(shí)現(xiàn)。,2.4 關(guān)系代數(shù),(2)差(Differ

24、ence) 關(guān)系R與關(guān)系S的差由屬于R而不屬于S的所有元組組成,即R中刪去與S中相同的元組,組成一個(gè)新關(guān)系,其結(jié)果仍為一個(gè)n目關(guān)系。記為 RS = t | tRtS 通過差運(yùn)算,可實(shí)現(xiàn)關(guān)系數(shù)據(jù)庫記錄的刪除。 (3)交(Intersection) 關(guān)系R與關(guān)系S的交由既屬于R又屬于S的元組組成(即R與S中相同的元組),其結(jié)果仍為一個(gè)n目關(guān)系。記為 RS = t | tRtS 兩個(gè)關(guān)系的并和差運(yùn)算是基本運(yùn)算(即不能用其他運(yùn)算表示的運(yùn)算),而交運(yùn)算是非基本運(yùn)算,它可以用差運(yùn)算來表示 RS=R(RS) 笛卡兒積對(duì)參與運(yùn)算的兩個(gè)關(guān)系R,S沒有“相容性”條件要求。因?yàn)閰⑴c運(yùn)算的是關(guān)系的元組,因此這里的笛卡

25、兒積實(shí)際上指的是廣義笛卡兒積。 (4)廣義笛卡兒積(Extended Cartesian Product) 設(shè)n目關(guān)系R和m目關(guān)系S,R與S的廣義笛卡兒積是一個(gè)(nm)列的元組的集合,元組的前n列是關(guān)系R的一個(gè)元組,后m列是關(guān)系S的一個(gè)元組。若R有k1個(gè)元組,S有 k2 個(gè)元組,則關(guān)系R和關(guān)系S的廣義笛卡兒積有k1k2個(gè)元組,記作 RS = trts| trR tsS,2.4 關(guān)系代數(shù),關(guān)系的廣義笛卡兒積可用于兩關(guān)系的連接操作(連接操作將在下一節(jié)介紹)。 【例2.1】 表2.10、表2.11的兩個(gè)關(guān)系R與S為相容關(guān)系,表2.12為R與S的并,表2.13為R與S的差,表2.14為R與S的交,表2

26、.15為R與S的廣義笛卡兒積。,2.4 關(guān)系代數(shù),表2.15 關(guān)系RS,2專門的關(guān)系運(yùn)算 傳統(tǒng)的集合運(yùn)算只是從行的角度對(duì)關(guān)系進(jìn)行,而要靈活地實(shí)現(xiàn)關(guān)系數(shù)據(jù)庫多樣的查詢操作,還必須引入專門的關(guān)系運(yùn)算。 在介紹專門的關(guān)系運(yùn)算之前,為方便敘述,先引入幾個(gè)概念。 設(shè)關(guān)系模式為R(A1,A2,An),它的一個(gè)關(guān)系為R,tR表示t是R的一個(gè)元組,tAi則表示元組t相對(duì)于屬性Ai的分量。 若A=Ai1,Ai2,Aik,其中Ai1,Ai2,Aik是A1,A2,An中的一部分,則A稱為屬性列或域列,tA=tAi1,tAi2,tAik表示元組t在屬性列A上各分量構(gòu)成的子集;則表示A1,A2,An中去掉Ai1,Ai2

27、,Aik后剩余的屬性組。,2.4 關(guān)系代數(shù), R為n目關(guān)系,S為m目關(guān)系,trR,tsS,trts稱為元組的連接(Concatenation),它是一個(gè)n+m列的元組,前n個(gè)分量為R的一個(gè)n元組,后m個(gè)分量為S中的一個(gè)m元組。 給定一個(gè)關(guān)系R(X,Z),X和Z為屬性組,定義當(dāng)tX=x時(shí),x在R中的像集(Image Set),為Zx= tZ|tR,tX=x,它表示R中的屬性組X上值為x的各元組在Z上分量的集合。 以下定義選擇、投影、連接和除法4個(gè)專門的關(guān)系代數(shù)運(yùn)算。 (1)選擇(Selection) 選擇運(yùn)算是單目運(yùn)算,是根據(jù)一定的條件在給定的關(guān)系R中選取若干個(gè)元組,組成一個(gè)新關(guān)系,記為: F(

28、R)=t|tRF(t)= 真 其中,為選擇運(yùn)算符,F(xiàn)為選擇的條件,它是由運(yùn)算對(duì)象(屬性名、常數(shù)、簡(jiǎn)單函數(shù))、算術(shù)比較運(yùn)算符(,=,)和邏輯運(yùn)算符(,)連接起來的邏輯表達(dá)式,結(jié)果為邏輯值“真”或“假”。 選擇運(yùn)算實(shí)際上是從關(guān)系R中選取使邏輯表達(dá)式為真的元組,是從行的角度對(duì)關(guān)系進(jìn)行的操作。,2.4 關(guān)系代數(shù),以下例題均是以表2.6、表2.7和表2.8的3個(gè)關(guān)系為例進(jìn)行的運(yùn)算。 【例2.2】 查詢計(jì)算機(jī)專業(yè)的全體學(xué)生。 專業(yè)=計(jì)算機(jī)(XS) 或者 5=計(jì)算機(jī)(XS) (其中5為“專業(yè)”屬性的列號(hào)) 運(yùn)算結(jié)果見表2.16。,表2.16 計(jì)算機(jī)系的全體學(xué)生,2.4 關(guān)系代數(shù),【例2.3】 查詢?cè)凇?98

29、9-1-1”以后出生的男同學(xué)。 (出生年月)1989-1-1性別=男(XS) 運(yùn)算結(jié)果見表2.17。,表2.17 “1987-1-1”以后出生的男同學(xué),(2)投影(Projection) 投影運(yùn)算也是單目運(yùn)算,關(guān)系R上的投影是從R中選擇出若干屬性列,組成新的關(guān)系,即對(duì)關(guān)系在垂直方向進(jìn)行的運(yùn)算,從左到右按照指定的若干屬性及順序取出相應(yīng)列,刪去重復(fù)元組。記為: A(R)=tA| tR 其中,A為R中的屬性列,為投影運(yùn)算符。,2.4 關(guān)系代數(shù),從其定義可看出,投影運(yùn)算是從列的角度進(jìn)行的運(yùn)算。 【例2.4】 查詢學(xué)生的學(xué)號(hào)、姓名及專業(yè)。 學(xué)號(hào),姓名,專業(yè)(XS)或1,2,5(XS)(其中,1,2,5分

30、別為學(xué)號(hào)、姓名及專業(yè)的屬性列號(hào)) 運(yùn)算結(jié)果見表2.18。,表2.18 學(xué)生學(xué)號(hào)、姓名和專業(yè),2.4 關(guān)系代數(shù),(3)連接(Join) 連接運(yùn)算是二目運(yùn)算,是從兩個(gè)關(guān)系的笛卡兒積中選取滿足連接條件的元組,組成新的關(guān)系。 設(shè)有兩個(gè)關(guān)系R(A1,A2,An)及S(B1,B2,Bm),連接屬性集X包含于A1,A2,An,Y包含于B1,B2,Bm,X與Y中屬性列數(shù)目相等,且對(duì)應(yīng)屬性有共同的域。關(guān)系R和S在連接屬性X和Y上的連接,就是在RS笛卡兒積中,選取X屬性列上的分量與Y屬性列上的分量滿足“ 條件”的那些元組組成的新關(guān)系。記為: R S=trts|trRtsStrX tsY為真 其中,是連接運(yùn)算符;

31、為算術(shù)比較運(yùn)算符,也稱 連接;X Y為連接條件,其中: 為“=”時(shí),稱為等值連接; 為“”時(shí),稱為大于連接。 【例2.5】 設(shè)有表2.10和2.11的兩個(gè)關(guān)系R與S,則表2.19為R,S的等值連接(R.B=S.B)。,表2.19 R與S的等值連接(R.B=S.B),2.4 關(guān)系代數(shù),連接運(yùn)算為非基本運(yùn)算,可以用選擇運(yùn)算和廣義笛卡兒積運(yùn)算來表示: R S=XY(RS) 在連接運(yùn)算中,一種最常用的連接是自然連接。所謂自然連接就是在等值連接的情況下,當(dāng)連接屬性X與Y具有相同屬性組時(shí),把在連接結(jié)果中重復(fù)的屬性列去掉。即如果R與S具有相同的屬性組Y,則自然連接可記為: RS=trts|trRtsStrY=tsY 自然連接是在廣義笛卡兒積RS中選出同名屬性上符合相等條件的元組,再進(jìn)行投影,去掉重復(fù)的同名屬性,組成新的關(guān)系。 【例2.6】 設(shè)有表2.10和表2.11的兩個(gè)關(guān)系R與S,則表2.20

溫馨提示

  • 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)論