版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(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)系模型的基本概念,2.2 關(guān)系的定義,2.3 關(guān)系的性質(zhì),2.4 關(guān)系的鍵,2.5 關(guān)系數(shù)據(jù)庫(kù)模式與關(guān)系數(shù)據(jù)庫(kù),Home,2.6 關(guān)系代數(shù),本章主要講述: 關(guān)系模型的數(shù)據(jù)結(jié)構(gòu) 關(guān)系的定義和性質(zhì) 關(guān)系數(shù)據(jù)庫(kù)的基本概念 關(guān)系運(yùn)算,2.1 關(guān)系模型,關(guān)系模型就是用二維表格結(jié)構(gòu)來(lái)表示實(shí)體及實(shí)體之間聯(lián)系的模型。 關(guān)系模型是各個(gè)關(guān)系的框架的集合,即關(guān)系模型是一些表格的格式,其中包括關(guān)系名、屬性名、關(guān)鍵字等。 例如,教學(xué)數(shù)據(jù)庫(kù)中教師與課程的關(guān)系模型如圖所示 教師關(guān)系 課程關(guān)系C授課關(guān)系SC 圖2.1 教師課程數(shù)據(jù)庫(kù)的關(guān)系模型,從各個(gè)關(guān)系的框架中,我們可以很容易看出哪兩個(gè)關(guān)系之
2、間有聯(lián)系。例如: 教師關(guān)系和授課關(guān)系有公共的屬性“教師號(hào)”,則表明這兩個(gè)關(guān)系有聯(lián)系。 而課程關(guān)系和授課關(guān)系有公共的屬性“課程號(hào)”,則表明這兩個(gè)關(guān)系也有聯(lián)系。 至于元組之間的聯(lián)系,則與具體的數(shù)據(jù)有關(guān)。只有在公共屬性上具有相同屬性值的元組之間才有聯(lián)系。,2.1 關(guān)系模型,由上例可以看出,在一個(gè)關(guān)系中可以存放兩類信息: 一類是描述實(shí)體本身的信息 一類是描述實(shí)體(關(guān)系)之間的聯(lián)系的信息 在層次模型和網(wǎng)狀模型中,把有聯(lián)系的實(shí)體(元組)用指針鏈接起來(lái),實(shí)體之間的聯(lián)系是通過(guò)指針來(lái)實(shí)現(xiàn)的。而關(guān)系模型則采用不同的思想,即用二維表來(lái)表示實(shí)體與實(shí)體之間的聯(lián)系,這就是關(guān)系模型的本質(zhì)所在。 在建立關(guān)系模型時(shí),只要把的所
3、有的實(shí)體及其屬性用關(guān)系框架來(lái)表示,同時(shí)把實(shí)體之間的關(guān)系也用關(guān)系框架來(lái)表示,就可以得到一個(gè)關(guān)系模型。,2.1 關(guān)系模型,2.2 關(guān)系的定義,在關(guān)系模型中,數(shù)據(jù)是以二維表的形式存在的,這個(gè)二維表就叫做關(guān)系。 關(guān)系理論是以集合代數(shù)理論為基礎(chǔ)的,因此,我們可以用集合代數(shù)給出二維表的“關(guān)系”定義。 為了從集合論的角度給出關(guān)系的定義,我們先引入域和笛卡爾積的概念。,2.2.1 域(Domain) 域是一組具有相同數(shù)據(jù)類型的值的集合,又稱為值域。(用D表示) 域中所包含的值的個(gè)數(shù)稱為域的基數(shù)(用m表示)。 關(guān)系中用域表示屬性的取值范圍。例如: D1=李力,王平,劉偉 m1=3 D2=男,女 m2=2 D3=
4、47,28,30 m3=3 其中,D1,D2,D3為域名,分別表示教師關(guān)系中姓名、性別、年齡的集合。 域名無(wú)排列次序,如D2=男,女=女,男,2.2 關(guān)系的定義,2.2.2 笛卡爾積(Cartesian Product) 給定一組域D1,D2,Dn(它們可以包含相同的元素,即可以完全不同,也可以部分或全部相同)。D1,D2,Dn的笛卡爾積為 D1D2Dn=(d1,d2,dn)|diDi,i=1,2,n。 由定義可以看出,笛卡爾積也是一個(gè)集合。其中: 1. 元素中的每一個(gè)di叫做一個(gè)分量(Component),來(lái)自相應(yīng)的域(diDi) 2. 每一個(gè)元素(d1,d2,d3,dn)叫做一個(gè)n元組(n
5、-tuple),簡(jiǎn)稱元組(Tuple)。但元組不是di的集合,元組的每個(gè)分量(di)是按序排列的。而集合中的元素是沒(méi)有排序次序的.,2.2 關(guān)系的定義,3. 若Di(i=1,2,n)為有限集,Di中的集合元素個(gè)數(shù)稱為Di的基數(shù),用mi(i=1,2,n)表示,則笛卡爾積D1D2Dn的基數(shù)M(即元素(d1,d2,dn)的個(gè)數(shù))為所有域的基數(shù)的累乘之積,即 M= 例如:上述表示教師關(guān)系中姓名、性別兩個(gè)域的笛卡爾積為:D1D2=(李力,男),(李力,女),(王平,男),(王平,女),(劉偉,男),(劉偉,女) 其基數(shù)M=m1m2=3*2=6 元組的個(gè)數(shù)為6,2.2 關(guān)系的定義,4. 笛卡爾積可用二維表
6、的形式表示。 例如,上述的6個(gè)元組可表示成表2.1。 表2.1 D1和D2的笛卡爾積 由上例可以看出,笛卡爾積實(shí)際是一個(gè)二維表,表的框架由域構(gòu)成,表的任意一行就是一個(gè)元組,表中的每一列來(lái)自同一域,如第一個(gè)分量來(lái)自D1,第二個(gè)分量來(lái)自D2。,2.2 關(guān)系的定義,2.2.3 關(guān)系(Relation) 笛卡爾積D1D2Dn的任一子集稱為定義在域D1,D2,Dn上的n元關(guān)系(Relation),可用R(D1,D2Dn)表示 如上例D1D2笛卡爾積的子集可以構(gòu)成教師關(guān)系T1,如下表:,2.2 關(guān)系的定義,幾點(diǎn)說(shuō)明: 1. R為關(guān)系名,n稱為關(guān)系的目或度(Degree)。 當(dāng)n=1時(shí),稱為單元關(guān)系。 當(dāng)n
7、=2時(shí),稱為二元關(guān)系。 當(dāng)n=n時(shí),稱為n元關(guān)系。,2.2 關(guān)系的定義,2. 該子集中的元素是關(guān)系中的元組,用r表示,關(guān)系中元組個(gè)數(shù)是關(guān)系的基數(shù)。如(李力,男),(王平,女),(劉偉,男)為三個(gè)元組,關(guān)系的基數(shù)為3。 如果一個(gè)關(guān)系的元組個(gè)數(shù)是無(wú)限的,則稱為無(wú)限關(guān)系; 如果一個(gè)關(guān)系的元組個(gè)數(shù)是有限的,則稱為有限關(guān)系。,3. 同樣可以把關(guān)系看成一個(gè)二維表。其中, (1)表的框架由域Di(i=1,2,n)構(gòu)成; (2)表的任意一行對(duì)應(yīng)一個(gè)元組; (3)表的每一列來(lái)自同一域; (4)域可以相同,為了加以區(qū)別,每列起一個(gè)名字,稱為屬性,n目關(guān)系有n個(gè)屬性,屬性的名字唯一,屬性的取值范圍Di(i=1,2,
8、n)稱為值域 (5)具有相同關(guān)系框架的關(guān)系成為同類關(guān)系,例如,有另一個(gè)關(guān)系T2,如表2.3所示:,2.2 關(guān)系的定義,4. 數(shù)學(xué)上關(guān)系是笛卡爾積的任意子集,但在實(shí)際應(yīng)用中關(guān)系是笛卡爾積中所取的有意義的子集。例如在表2.1中選取一個(gè)子集構(gòu)成如下關(guān)系,顯然不符合實(shí)際情況,在關(guān)系模型中,關(guān)系可進(jìn)一步定義為: 定義在域D1,D2,Dn(不要求完全相異)上的關(guān)系由關(guān)系頭(Heading)和關(guān)系體(Body)組成。 關(guān)系頭:由屬性名A1,A2,An的集合組成,每個(gè)屬性Ai正好對(duì)應(yīng)一個(gè)域Di(i=1,2,n),關(guān)系頭,也稱關(guān)系框架,相對(duì)固定,是關(guān)系的數(shù)據(jù)結(jié)構(gòu)的描述。 關(guān)系體:是指關(guān)系結(jié)構(gòu)中的內(nèi)容或者數(shù)據(jù),并
9、非固定不變,它隨元組的建立、刪除或修改而變化。,2.2 關(guān)系的定義,嚴(yán)格地說(shuō),關(guān)系是種規(guī)范化了的二維表中行的集合,為了使相應(yīng)的數(shù)據(jù)操作簡(jiǎn)化,在關(guān)系模型中,對(duì)關(guān)系作了種種限制,關(guān)系具有如下特性: 1. 關(guān)系中不允許出現(xiàn)相同的元組。因?yàn)閿?shù)學(xué)上集合中沒(méi)有相同的元素,而關(guān)系是元組的集合,所以作為集合元素的元組應(yīng)該是唯一的。 2. 關(guān)系中元組的順序(即行序)是無(wú)關(guān)緊要的,在一個(gè)關(guān)系中可以任意交換兩行的次序。因?yàn)榧现械脑厥菬o(wú)序的,所以作為集合元素的元組也是無(wú)序的。根據(jù)關(guān)系的這個(gè)性質(zhì),可以改變?cè)M的順序使其具有某種排序,然后按照順序查詢數(shù)據(jù),可以提高查詢速度。,2.3 關(guān)系的性質(zhì),3. 關(guān)系中屬性的順序
10、是無(wú)關(guān)緊要的,即列的順序可以任意交換。交換時(shí),應(yīng)連同屬性名一起交換,否則將得到不同的關(guān)系。 例如:關(guān)系T1作如下交換時(shí),無(wú)任何影響,如下表所示:,2.3 關(guān)系的性質(zhì),而作如下交換時(shí),不交換屬性名,只交換屬性列中的值,則得到不同的關(guān)系,如下表:,2.3 關(guān)系的性質(zhì),4. 同一屬性名下的各個(gè)屬性值必須來(lái)自同一個(gè)域,是同一類型的數(shù)據(jù)。 5. 關(guān)系中各個(gè)屬性必須有不同的名字,不同的屬性可來(lái)自同一個(gè)域,即它們的分量可以取自同一個(gè)域。 例如,有如下表中關(guān)系,職業(yè)與兼職是兩個(gè)不同的屬性,但它們?nèi)∽酝粋€(gè)域職業(yè)教師,工人,輔導(dǎo)員。,2.3 關(guān)系的性質(zhì),6. 關(guān)系中每一分量必須是不可分的數(shù)據(jù)項(xiàng),或者說(shuō)所有屬性值
11、都是原子的,即是一個(gè)確定的值,而不是值的集合。屬性值可以為空值,表示“未知”或“不可使用”,即不可“表中有表”。滿足此條件的關(guān)系稱為規(guī)范化關(guān)系,否則稱為非規(guī)范化關(guān)系。 例如,在表2.8中,籍貫含有省、市縣兩項(xiàng),出現(xiàn)了“表中有表”的現(xiàn)象,則為非規(guī)范化關(guān)系,而把籍貫分成省、市縣兩列,將其規(guī)范化,如表2.9所示。 表2.8 表2.9,2.3 關(guān)系的性質(zhì),2.4.1 候選鍵與關(guān)系鍵 能唯一標(biāo)識(shí)關(guān)系中元組的屬性或?qū)傩约?,則稱該屬性或?qū)傩约癁楹蜻x鍵(Candidate Key),也稱候選關(guān)鍵字或候選碼。如: “學(xué)生關(guān)系”中的學(xué)號(hào)能唯一標(biāo)識(shí)每一個(gè)學(xué)生,則屬性學(xué)號(hào)是學(xué)生關(guān)系的候選鍵。 在“選課關(guān)系”中,只有屬
12、性的組合“學(xué)號(hào)+課程號(hào)”才能唯一地區(qū)分每一條選課記錄,則屬性集“學(xué)號(hào)+課程號(hào)”是選課關(guān)系的候選鍵。,2.4 關(guān)系的鍵,下面給出候選鍵的形式化定義: 設(shè)關(guān)系R有屬性A1,A2,An,其屬性集K=(Ai,Aj,Ak),當(dāng)且僅當(dāng)滿足下列條件時(shí),K被稱為候選鍵: 1. 唯一性(Uniqueness):關(guān)系R的任意兩個(gè)不同元組,其屬性集K的值是不同的。 2.最小性(Minimally):組成關(guān)系鍵的屬性集(Ai,Aj,Ak)中,任一屬性都不能從屬性集K中刪掉,否則將破壞唯一性的性質(zhì) 例如:“學(xué)生關(guān)系”中的每個(gè)學(xué)生的學(xué)號(hào)是唯一的,“選課關(guān)系”中“學(xué)號(hào)+課程號(hào)” 的組合也是唯一的。對(duì)于屬性集“學(xué)號(hào)+課程號(hào)”
13、 去掉任一屬性,都無(wú)法唯一標(biāo)識(shí)選課記錄。,2.4 關(guān)系的鍵,如果一個(gè)關(guān)系中有多個(gè)候選鍵,可以從中選擇一個(gè)作為查詢、插入或刪除元組的操作變量,被選用的候選鍵稱為主關(guān)系鍵(Primary Key),或簡(jiǎn)稱為主鍵、主碼、關(guān)系鍵、關(guān)鍵字。 例如,假設(shè)在學(xué)生關(guān)系中沒(méi)有重名的學(xué)生,則“學(xué)號(hào)”和“姓名”都可作為學(xué)生關(guān)系的候選鍵。如果選定“學(xué)號(hào)”作為數(shù)據(jù)操作的依據(jù),則“學(xué)號(hào)”為主關(guān)系鍵。 主關(guān)系鍵是關(guān)系模型中的一個(gè)重要概念。每個(gè)關(guān)系必需選擇一個(gè)主關(guān)系鍵,選定以后,不能隨意改變。每個(gè)關(guān)系必定有且僅有一個(gè)主關(guān)系鍵,因?yàn)殛P(guān)系的元組無(wú)重復(fù),至少關(guān)系的所有屬性的組合可作為主關(guān)系鍵,通常用較小的屬性組合作為主關(guān)系鍵。,2
14、.4 關(guān)系的鍵,2.4.2 主屬性與非碼屬性 主屬性(Prime Attribute):包含在主碼中的的各屬性稱為主屬性。 非碼屬性(Non-Prime Attribute):不包含在任何候選碼中的屬性稱為非碼屬性。 在最簡(jiǎn)單的情況下,一個(gè)候選碼只包含一個(gè)屬性,如學(xué)生關(guān)系中的“學(xué)號(hào)”,教師關(guān)系中的“教師號(hào)”。 在最極終端的情況下,所有屬性的組合是關(guān)系的候選碼,這時(shí)稱為全碼(all-key)。,2.4 關(guān)系的鍵,下面是一個(gè)全碼的例子: 假設(shè)有教師授課關(guān)系TCS,分別有三個(gè)屬性教師(T)、課程(C)和學(xué)生(S)。一個(gè)教師可以講授多門課程,一門課程可以為多個(gè)教師講授,同樣一個(gè)學(xué)生可以選聽(tīng)多門課程,一
15、門課程可以為多個(gè)學(xué)生選聽(tīng)。 在這種情況下,T,C,S三者之間是多對(duì)多關(guān)系,(T,C,S)三個(gè)屬性的組合是關(guān)系TCS的候選碼,稱為全碼,T,C,S都是主屬性。,2.4 關(guān)系的鍵,2.4.3 外部關(guān)系鍵 如果關(guān)系R2的一個(gè)或一組屬性X不是R2的主碼,而是另一關(guān)系R1的主碼,則該屬性或?qū)傩越MX稱為關(guān)系R2的外部關(guān)系鍵或外碼(Foreign key)。并稱關(guān)系R2為參照關(guān)系(referencing relation),關(guān)系R1為被參照關(guān)系(referenced relation)。 例2.1 假設(shè)在圖1.12所示的教學(xué)數(shù)據(jù)庫(kù)中增加一個(gè)系別關(guān)系D,包含兩個(gè)屬性系別(DEPT)和地址(ADDR),“系別”
16、是此關(guān)系的主碼,而“系別”并不是學(xué)生關(guān)系和教師關(guān)系的主碼,所以“系別”是學(xué)生關(guān)系和教師關(guān)系的外部關(guān)系鍵。,2.4 關(guān)系的鍵,例2.2 如圖1.12所示的選課關(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)系的外部關(guān)系鍵。學(xué)生關(guān)系和課程關(guān)系為被參照關(guān)系,選課關(guān)系為參照關(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è)域上。,2.4 關(guān)系的鍵,2.4.4 關(guān)
17、系模型的完整性 為了維護(hù)數(shù)據(jù)庫(kù)中數(shù)據(jù)與現(xiàn)實(shí)世界的一致性,對(duì)關(guān)系數(shù)據(jù)庫(kù)的插入、刪除和修改操作必須有一定的約束條件,這就是關(guān)系模型的三類完整性: 實(shí)體完整性、參照完整性、用戶定義的完整性 1. 實(shí)體完整性(Entity Integrity) 實(shí)體完整性是指主關(guān)系鍵的值不能為空或部分為空。 關(guān)系模型中的一個(gè)元組對(duì)應(yīng)一個(gè)實(shí)體,一個(gè)關(guān)系則對(duì)應(yīng)一個(gè)實(shí)體集。 例如,一條學(xué)生記錄對(duì)應(yīng)著一個(gè)學(xué)生,學(xué)生關(guān)系對(duì)應(yīng)著學(xué)生的集合。,2.4 關(guān)系的鍵,現(xiàn)實(shí)世界中的實(shí)體是可區(qū)分的,即它們具有某種唯一性標(biāo)識(shí)。與此相對(duì)應(yīng),關(guān)系模型中以主關(guān)系鍵來(lái)唯一標(biāo)識(shí)元組。 例如,學(xué)生關(guān)系中的屬性“學(xué)號(hào)”可以唯一標(biāo)識(shí)一個(gè)元組,也可以唯一標(biāo)識(shí)學(xué)
18、生實(shí)體。 如果主關(guān)系鍵中的值為空或部分為空,即主屬性為空,則不符合關(guān)系鍵的定義條件,不能唯一標(biāo)識(shí)元組及與其相對(duì)應(yīng)的實(shí)體。這就說(shuō)明存在不可區(qū)分的實(shí)體,從而與現(xiàn)實(shí)世界中的實(shí)體是可以區(qū)分的事實(shí)相矛盾。因此主關(guān)系鍵的值不能為空或部分為空。 例如,學(xué)生關(guān)系中的主關(guān)系鍵“學(xué)號(hào)”不能為空;選課關(guān)系中的主關(guān)系鍵“學(xué)號(hào)+課程號(hào)”不能部分為空,即“學(xué)號(hào)”和“課程號(hào)”兩個(gè)屬性都不能為空。 ,2.4 關(guān)系的鍵,2. 參照完整性(Referential integrity) 如果關(guān)系R2的外部關(guān)系鍵X與關(guān)系R1的主關(guān)系鍵相符,則X的每個(gè)值或者等于R1中主關(guān)系鍵的某一個(gè)值,或者取空值。 在例2.1系別關(guān)系中的屬性“系別”
19、是學(xué)生關(guān)系外部關(guān)系鍵。 如圖2.2所示,學(xué)生關(guān)系中某個(gè)學(xué)生(如s1或s2)“系別”的取值,必須在參照的系別關(guān)系中主關(guān)系鍵“系別”的值中能夠找到,否則表示把該學(xué)生分配到一個(gè)不存在的部門中,顯然不符合語(yǔ)義。 如果某個(gè)學(xué)生(如s11)“系別”取空值,則表示該學(xué)生尚未分配到任何一個(gè)系。否則,它只能取專業(yè)關(guān)系中某個(gè)元組的專業(yè)號(hào)值。,2.4 關(guān)系的鍵,S(學(xué)生關(guān)系) D(系別關(guān)系) 圖2.2 學(xué)生表和系別表,2.4 關(guān)系的鍵,在例2.2中,如果按照參照完整性規(guī)則,選課關(guān)系中的外部關(guān)系鍵“學(xué)號(hào)”和“課程號(hào)”可以取空值或者取被參照關(guān)系中已經(jīng)存在的值。但由于“學(xué)號(hào)”和“課程號(hào)”是選課關(guān)系中主屬性,根據(jù)實(shí)體完整性
20、規(guī)則,兩個(gè)屬性都不能為空。所以選課關(guān)系中的外部關(guān)系鍵“學(xué)號(hào)”和“課程號(hào)”中能取被參照關(guān)系中已經(jīng)存在的值。 實(shí)體完整性和參照完整性是關(guān)系模型必須滿足的完整性約束條件,被稱作關(guān)系的兩個(gè)不變性。任何關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)都應(yīng)該支持這兩類完整性。 除此之外,不同的關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)由于應(yīng)用環(huán)境的不同,往往還需要一些特殊的約束條件,這就是用戶定義完整性。,2.4 關(guān)系的鍵,3. 用戶定義完整性(User-defined Integrity) 用戶定義完整性是針對(duì)某一具體關(guān)系數(shù)據(jù)庫(kù)的約束條件。 它反映某一具體應(yīng)用所涉及的數(shù)據(jù)必須滿足的語(yǔ)義要求。 例如,屬性值根據(jù)實(shí)際需要,要具備一些約束條件,如選課關(guān)系中成績(jī)不能為負(fù)數(shù)
21、;某些數(shù)據(jù)的輸入格式要有一些限制等關(guān)系模型應(yīng)該提供定義和檢驗(yàn)這類完整性的機(jī)制,以便用統(tǒng)一的、系統(tǒng)的方法處理它們,而不要由應(yīng)用程序承擔(dān)這一功能。,2.4 關(guān)系的鍵,2.5.1 關(guān)系模式和關(guān)系數(shù)據(jù)庫(kù)模式 一個(gè)關(guān)系的屬性名的集合R(A1,A2,An)叫做關(guān)系模式。其中: R為關(guān)系名,A1,A2,An為屬性名(i=1,2,n)。 由定義可以看出,關(guān)系模式是關(guān)系的框架,或者稱為表框架,指出了關(guān)系由哪些屬性構(gòu)成,是對(duì)關(guān)系結(jié)構(gòu)的描述。 一組關(guān)系模式的集合叫做關(guān)系數(shù)據(jù)庫(kù)模式。,2.5 關(guān)系數(shù)據(jù)庫(kù)模式與關(guān)系數(shù)據(jù)庫(kù),關(guān)系數(shù)據(jù)庫(kù)模式是對(duì)關(guān)系數(shù)據(jù)庫(kù)結(jié)構(gòu)的描述,或者說(shuō)是對(duì)關(guān)系數(shù)據(jù)庫(kù)框架的描述,也就是前面所講過(guò)的關(guān)系頭,
22、可以看作是關(guān)系的型。與關(guān)系數(shù)據(jù)庫(kù)模式對(duì)應(yīng)的數(shù)據(jù)庫(kù)中的當(dāng)前值就是關(guān)系數(shù)據(jù)庫(kù)的內(nèi)容,稱為關(guān)系數(shù)據(jù)庫(kù)的實(shí)例,即前面所講過(guò)的關(guān)系體,可以看作是關(guān)系的值。 例如,在圖1.12所示的教學(xué)數(shù)據(jù)庫(kù)中,共有五個(gè)關(guān)系,其關(guān)系模式分別為: 學(xué)生(學(xué)號(hào),姓名,性別,年齡,系別) 教師(教師號(hào),姓名,性別,年齡,系別) 課程(課程號(hào),課程名,課時(shí)) 選課(學(xué)號(hào),課程號(hào),成績(jī)) 授課(教師號(hào),課程號(hào)),2.5 關(guān)系數(shù)據(jù)庫(kù)模式與關(guān)系數(shù)據(jù)庫(kù),在每個(gè)關(guān)系中,又有其相應(yīng)的數(shù)據(jù)庫(kù)的實(shí)例 例如:與學(xué)生關(guān)系模式對(duì)應(yīng)的數(shù)據(jù)庫(kù)中的實(shí)例有如下6個(gè)元組:,2.5 關(guān)系數(shù)據(jù)庫(kù)模式與關(guān)系數(shù)據(jù)庫(kù),2.5.2 關(guān)系數(shù)據(jù)庫(kù) 關(guān)系數(shù)據(jù)庫(kù)是“一組隨時(shí)間變化
23、,具有各種度的規(guī)范化關(guān)系的集合”。 因?yàn)殛P(guān)系是由關(guān)系頭和關(guān)系體組成的,所以關(guān)系數(shù)據(jù)庫(kù)也可以看作是一組關(guān)系頭和關(guān)系體的集合。 由此可見(jiàn),關(guān)系數(shù)據(jù)庫(kù)也有型和值的概念,其型就是關(guān)系數(shù)據(jù)庫(kù)模式,相對(duì)固定;其值就是關(guān)系數(shù)據(jù)庫(kù)內(nèi)容,代表現(xiàn)實(shí)世界中的實(shí)體,而實(shí)體是隨著時(shí)間不斷變化的,所以其值在不同的時(shí)刻會(huì)有所變化。,2.5 關(guān)系數(shù)據(jù)庫(kù)模式與關(guān)系數(shù)據(jù)庫(kù),例如:圖1.12所示的教學(xué)數(shù)據(jù)庫(kù)是五個(gè)關(guān)系的集合,或者說(shuō)是五個(gè)關(guān)系頭和五個(gè)關(guān)系體的集合。 其中,各個(gè)關(guān)系頭相對(duì)固定,而關(guān)系體的內(nèi)容,會(huì)隨時(shí)間而變化。 比如,學(xué)生和教師的年齡隨時(shí)間而增長(zhǎng),教師的工資和崗位津貼也會(huì)發(fā)生變化。,2.5 關(guān)系數(shù)據(jù)庫(kù)模式與關(guān)系數(shù)據(jù)庫(kù),關(guān)
24、系模型與其他模型相比,最有特色的是它的數(shù)據(jù)庫(kù)語(yǔ)言。 這種語(yǔ)言靈活方便、表達(dá)能力和功能都很強(qiáng)。 目前關(guān)系數(shù)據(jù)庫(kù)所使用的語(yǔ)言一般都具有定義、查詢、更新和控制一體化的特點(diǎn),而查詢是最主要的部分。 所以說(shuō),關(guān)系數(shù)據(jù)庫(kù)的核心部分是查詢,故又稱為查詢語(yǔ)言,而查詢的條件要使用關(guān)系運(yùn)算表達(dá)式來(lái)表示。 因此,關(guān)系運(yùn)算是設(shè)計(jì)關(guān)系數(shù)據(jù)語(yǔ)言的基礎(chǔ)。 按表達(dá)查詢的方法不同,關(guān)系運(yùn)算可分為關(guān)系代數(shù)和關(guān)系演算兩大類。,2.6 關(guān)系代數(shù),2.6.1 關(guān)系代數(shù)的分類及其運(yùn)算符 關(guān)系代數(shù)是對(duì)關(guān)系進(jìn)行集合代數(shù)運(yùn)算,是基于關(guān)系代數(shù)的操作語(yǔ)言,稱為關(guān)系代數(shù)語(yǔ)言,簡(jiǎn)稱關(guān)系代數(shù)。 關(guān)系代數(shù)的運(yùn)算對(duì)象是關(guān)系,運(yùn)算結(jié)果也是關(guān)系,關(guān)系代數(shù)用到的
25、運(yùn)算符主要包括四類: 集合運(yùn)算符:(并),-(差),(交),X(廣義笛卡爾積); 專門的關(guān)系運(yùn)算符:(選擇),(投影),(連接),*(自然連接),(除); 算術(shù)比較運(yùn)算符:(大于),(大于等于),(小于),(小于等于),=(等于),(不等于); 邏輯運(yùn)算符:(與),(或),(非),2.6 關(guān)系代數(shù),關(guān)系代數(shù)的運(yùn)算按運(yùn)算符的不同主要分為兩類: 傳統(tǒng)的集合運(yùn)算:把關(guān)系看成元組的集合,以元組作為集合中元素來(lái)進(jìn)行運(yùn)算,其運(yùn)算是從關(guān)系的“水平”方向即行的角度進(jìn)行的。包括并、差、交和笛卡爾積等運(yùn)算。 專門的關(guān)系運(yùn)算:不僅涉及行運(yùn)算,也涉及列運(yùn)算,這種運(yùn)算是為數(shù)據(jù)庫(kù)的應(yīng)用而引進(jìn)的特殊運(yùn)算。包括選取、投影、連
26、接和除法等運(yùn)算。,2.6 關(guān)系代數(shù),2.6.2 傳統(tǒng)的集合運(yùn)算 對(duì)兩個(gè)關(guān)系的集合運(yùn)算傳統(tǒng)的集合運(yùn)算是二目運(yùn)算,是在兩個(gè)關(guān)系中進(jìn)行的。但是并不是任意的兩個(gè)關(guān)系都能進(jìn)行這種集合運(yùn)算,而是要在兩個(gè)滿足一定條件的關(guān)系中進(jìn)行運(yùn)算。那么,對(duì)關(guān)系有什么要求呢?下面先看一個(gè)定義。 定義2.9 設(shè)給定兩個(gè)關(guān)系R、S,若滿足: ()具有相同的度n; () R中第i個(gè)屬性和S中第i個(gè)屬性必須來(lái)自同一個(gè)域。則說(shuō)關(guān)系R、S是相容的。 除笛卡爾積外,要求參加運(yùn)算的關(guān)系必須滿足上述的相容性定義。,2.6 關(guān)系代數(shù),1. 并(Union) 關(guān)系R和關(guān)系S的并由屬于R或?qū)儆赟的元組組成,即R和S的所有元組合并,刪去重復(fù)元組,組
27、成一個(gè)新關(guān)系,其結(jié)果仍為n目關(guān)系。記作:RS=t|tRtS 對(duì)于關(guān)系數(shù)據(jù)庫(kù),記錄的插入和添加可通過(guò)并運(yùn)算實(shí)現(xiàn)。 2. 差(Difference) 關(guān)系R與關(guān)系S的差由屬于R而不屬于S的所有元組組成,即R中刪去與S中相同的元組,組成一個(gè)新關(guān)系,其結(jié)果仍為n目關(guān)系。記作:R-S=t|tRtS 通過(guò)差運(yùn)算,可實(shí)現(xiàn)關(guān)系數(shù)據(jù)庫(kù)記錄的刪除。,2.6 關(guān)系代數(shù),3. 交(Intersection) 關(guān)系R與關(guān)系S的交由既屬于R又屬于S的元組組成,即R與S中相同的元組,組成一個(gè)新關(guān)系,其結(jié)果仍為n目關(guān)系。記作:RS=t|tRtS 如果兩個(gè)關(guān)系沒(méi)有相同的元組,那么它們的交為空。 兩個(gè)關(guān)系的并和差運(yùn)算為基本運(yùn)算(
28、即不能用其他運(yùn)算表達(dá)的運(yùn)算),而交運(yùn)算為非基本運(yùn)算,交運(yùn)算可以用差運(yùn)算來(lái)表示:RS=R-(R-S),2.6 關(guān)系代數(shù),4. 廣義笛卡爾積(Extended Cartesian Product) 兩個(gè)分別為n目和m目關(guān)系R和S的廣義笛卡爾積是一個(gè)(n+m)列的元組的集合,元組的前n列是關(guān)系R的一個(gè)元組,后m列是關(guān)系S的一個(gè)元組。若R有k1個(gè)元組,S有k2個(gè)元組,則關(guān)系R和關(guān)系S的廣義笛卡爾積有k1*k2個(gè)元組,記作 RS=trts| trR,tsS 關(guān)系的廣義笛卡爾積可用于兩關(guān)系的連接操作(連接操作將在一節(jié)中介紹)。,2.6 關(guān)系代數(shù),【例4】 如圖2.4(a)、(b)所示的兩個(gè)關(guān)系R與S為相容
29、關(guān)系,(c)為R與S 的并,(d)為R與S的交,(e)為R與S的差,(f)為R與S的廣義笛卡爾積。 R S (a) (b),2.6 關(guān)系代數(shù),RS R-S (c) (d) RS (e),2.6 關(guān)系代數(shù),RS,(f)圖2.4 傳統(tǒng)的集合運(yùn)算,2.6 關(guān)系代數(shù),2.6.3 專門的關(guān)系運(yùn)算 由于傳統(tǒng)的集合運(yùn)算,只是從行的角度進(jìn)行,而要靈活地實(shí)現(xiàn)關(guān)系數(shù)據(jù)庫(kù)多樣的查詢操作,必須引入專門的關(guān)系運(yùn)算。 在講專門的關(guān)系運(yùn)算之前,為敘述上的方便先引入幾個(gè)概念。 (1)設(shè)關(guān)系模式為R(A1,A2,An),它的一個(gè)關(guān)系為R,tR表示t是R的一個(gè)元組,tAi則表示元組t中相應(yīng)于屬性Ai的一個(gè)分量。,2.6 關(guān)系代數(shù)
30、,(2)若A=Ai1,Ai2,,Aik,其中Ai1,Ai2,Aik是A1,A2,,An中的一部分,則A稱為屬性列或域列,則表示A1,A2,,An中去掉Ai1,Ai2,,Aik后剩余的屬性組。tA=tAi1,tAi2,tAik表示元組t在屬性列A上諸分量的集合。 (3)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元組。 (4)給定一個(gè)關(guān)系R(X,Z),X和Z為屬性組,定義當(dāng)tX=x時(shí),x在R中的象集(image set),為Zx=tZ|tR,tX=x,它表示R中的屬
31、性組X上值為x的諸元組在Z上分量的集合。,2.6 關(guān)系代數(shù),1. 選取(Selection) 選取運(yùn)算是單目運(yùn)算,是根據(jù)一定的條件在給定的關(guān)系R中選取若干個(gè)元組,組成一個(gè)新關(guān)系,記作: F(R)=t|tRF(t)為真 其中,為選取運(yùn)算符,F(xiàn)為選取的條件,它由運(yùn)算對(duì)象(屬性名、常數(shù)、簡(jiǎn)單函數(shù))、算術(shù)比較運(yùn)算符( ,=,)和邏輯運(yùn)算符( )連接起來(lái)的邏輯表達(dá)式,結(jié)果為邏輯值“真”或“假”。 選取運(yùn)算實(shí)際上是從關(guān)系R中選取使邏輯表達(dá)式為真的元組,是從行的角度進(jìn)行的運(yùn)算。,2.6 關(guān)系代數(shù),以下例題均是以圖1.12所示的五個(gè)關(guān)系為例進(jìn)行運(yùn)算。 例2.4 查詢計(jì)算機(jī)系的全體學(xué)生。 DEPT=計(jì)算機(jī) (S
32、)或 5=計(jì)算機(jī) (S)(其中5為DEPT的屬性序號(hào)) 結(jié)果右圖所示。,2.6 關(guān)系代數(shù),例2.5 查詢工資高于1000元的男教師。 (SAL1000) (SEX=男) (T) 結(jié)果如圖所示。 注意:字符型數(shù)據(jù)的值應(yīng)該使用單引號(hào)括起來(lái),例如,計(jì)算機(jī),男。,2.6 關(guān)系代數(shù),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)算符。 從其定義可看出,投影運(yùn)算是從列的角度進(jìn)行的運(yùn)算,這正是選取
33、運(yùn)算和投影運(yùn)算的區(qū)別所在。選取運(yùn)算是從關(guān)系的水平方向上進(jìn)行運(yùn)算的,而投影運(yùn)算則是從關(guān)系的垂直方向上進(jìn)行的。,2.6 關(guān)系代數(shù),例2.6 查詢教師的姓名及其職稱。 TN,TNO,PROF(T)或 2,1,5(T) (其中2,1,5分別為TN、TNO和PROF的屬性序號(hào)) 結(jié)果右圖所示 上例表明, 投影運(yùn)算可以改變 關(guān)系的屬性次序,2.6 關(guān)系代數(shù),例2.7 查詢教師關(guān)系中有哪些系。 DEPT(T) 結(jié)果如右圖所示 由例2.7可以看出,投影后取消了某些屬性列后,就可能出現(xiàn)重復(fù)行,應(yīng)該取消這些完全相同的行。所以投影之后,不但減少了屬性,元組也可能減少,新關(guān)系與原關(guān)系不相容。,2.6 關(guān)系代數(shù),例2.
34、8 查詢講授C5課程的教師號(hào)。 TNO(CNO=C5(TC) 結(jié)果如右圖所示。 本例中選取運(yùn)算和投影運(yùn)算相結(jié)合,先在授課表中選取滿足條件的元組,再于TNO屬性上進(jìn)行投影。,2.6 關(guān)系代數(shù),3. 連接(Join) 連接運(yùn)算是二目運(yùn)算,是從兩個(gè)關(guān)系的笛卡爾積中選取滿足連接條件的元組,組成新的關(guān)系。 設(shè)關(guān)系R(A1,A2,An)及S(B1,B2,Bm),連接屬性集X包含于A1,A2,An,及Y包含于B1,B2,Bm,X與Y中屬性列數(shù)目相等,且相對(duì)應(yīng)屬性有共同的域。若Z=A1,A2An/X (/X:去掉X之外的屬性) 及W=B1,B2Bm/Y,則 R及S可表示為R(Z,X),S(W,Y) 關(guān)系R和S
35、在連接屬性X和Y上的連接,就是以RS笛卡爾積中,選取X屬性列上的分量與Y屬性列上的分量滿足給定比較條件的那些元組,也就是在RS上選取在連接屬性X,Y上滿足條件的子集,組成新的關(guān)系。新關(guān)系的度為n+m。,2.6 關(guān)系代數(shù),記作: RS=t rts |trRtsStrXtsY為真 XY 其中,是連接運(yùn)算符,為算術(shù)比較運(yùn)算符,也稱連接; XY為連接條件; 為“=”時(shí),稱為等值連接; 為“”時(shí),稱為大于連接。 連接運(yùn)算為非基本運(yùn)算,可以用選取運(yùn)算和廣義笛卡爾積運(yùn)算來(lái)表示: RS=xy(RS),2.6 關(guān)系代數(shù),在連接運(yùn)算中,一種最常用的連接是自然連接。 所謂自然連接就是在等值連接的情況下,當(dāng)連接屬性X與Y具有相同屬性組時(shí),把在連接結(jié)果中重復(fù)的屬性列去掉。即如果R與S具有相同的屬性組Y,則自然連接可記作: RS=t rts |trRtsStrY=tsY 自然連接是在廣義笛卡爾積RS中選出同名屬性上符合相等條件元組,再進(jìn)行投影,去掉重復(fù)的同名屬性,組成新的關(guān)系。,2.6 關(guān)系代數(shù),例2.9 如圖2.9(a)、(b)所示的兩個(gè)關(guān)系R與S,(c)為R和S的大于連接(CD),(d)為R和S的等值連接(C=D),(e)為R和S的等值連接(R.B=S.B),(f)為R和S的自然連接。 R S (a) (b),2.6 關(guān)系代數(shù),大于連
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 三級(jí)人力資源題目及答案
- 趣味性筆試題目及答案
- 扶貧政策實(shí)施路徑研究
- 輻射安全和防護(hù)保衛(wèi)制度
- 談企業(yè)的首席評(píng)選制度
- 論公司法中的嚴(yán)格責(zé)任制度
- 行政規(guī)范性文件附帶審查制度
- 2025年河北保定輔警招錄筆試及答案
- 2025年事業(yè)編老師筆試題庫(kù)及答案
- 數(shù)學(xué)必修四知識(shí)點(diǎn)總結(jié)
- 2025-2026學(xué)年北京市朝陽(yáng)區(qū)高一(上期)期末考試英語(yǔ)試卷(含答案)
- 2026湖南衡陽(yáng)耒陽(yáng)市公安局招聘75名警務(wù)輔助人員考試參考題庫(kù)及答案解析
- 電力工程施工方案及規(guī)范
- 2026年1月浙江省高考(首考)英語(yǔ)試題(含答案詳解)+聽(tīng)力音頻+聽(tīng)力材料
- 2026年時(shí)事政治測(cè)試題庫(kù)附完整答案(網(wǎng)校專用)
- 圣都家裝合同范本
- 智慧物流背景下多式聯(lián)運(yùn)的協(xié)同發(fā)展與運(yùn)輸效能提升研究畢業(yè)論文答辯匯報(bào)
- 替人背債合同范本
- 山西省運(yùn)城市小學(xué)一年級(jí)上學(xué)期數(shù)學(xué)期末考試試題
- 如何預(yù)防旅游陷阱
- pms3.0系統(tǒng)全國(guó)視頻培訓(xùn)材料
評(píng)論
0/150
提交評(píng)論