第2章關(guān)系數(shù)據(jù)庫基本原理_第1頁
第2章關(guān)系數(shù)據(jù)庫基本原理_第2頁
第2章關(guān)系數(shù)據(jù)庫基本原理_第3頁
第2章關(guān)系數(shù)據(jù)庫基本原理_第4頁
第2章關(guān)系數(shù)據(jù)庫基本原理_第5頁
已閱讀5頁,還剩50頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第第2章章 關(guān)系數(shù)據(jù)庫基本原理關(guān)系數(shù)據(jù)庫基本原理2.1 關(guān)系模型的基本概念2.1.1 關(guān)系模型的發(fā)展2.1.2 關(guān)系模型的數(shù)據(jù)結(jié)構(gòu)2.1.3 關(guān)系模型的基本術(shù)語2.1.4 關(guān)系的性質(zhì)與關(guān)系模型的優(yōu)點2.2 關(guān)系模型的完整性約束2.3 關(guān)系代數(shù)的基本原理2.3.1 關(guān)系的數(shù)學定義2.3.2 關(guān)系運算2.4 關(guān)系數(shù)據(jù)庫的規(guī)范化理論2.4.1 關(guān)系模式的數(shù)據(jù)冗余和操作異常問題2.4.2 函數(shù)依賴的基本概念2.4.3 關(guān)系模式的范式2.4.4 關(guān)系模式的分解2.5 數(shù)據(jù)庫的設計方法2.5.1 數(shù)據(jù)庫設計過程2.5.2 E-R模型到關(guān)系模型的轉(zhuǎn)化2.5.3 數(shù)據(jù)庫設計實例2.1 2.1 關(guān)系模型的基本概

2、念關(guān)系模型的基本概念1970年6月,美國IBM公司San Jose實驗室的研究員E. F. Codd發(fā)表了大型共享數(shù)據(jù)庫數(shù)據(jù)的關(guān)系模型(A Relational Model of Data for Large Shared Data Banks)一文,首次提出了關(guān)系模型的概念,從而開創(chuàng)了關(guān)系數(shù)據(jù)庫方法和關(guān)系數(shù)據(jù)庫理論,為關(guān)系數(shù)據(jù)庫技術(shù)奠定了理論基礎。由于E. F. Codd的杰出貢獻,他于1981年獲得了ACM圖靈獎。20世紀70年代是關(guān)系數(shù)據(jù)庫理論研究和原型系統(tǒng)開發(fā)的時代,其中以IBM San Jose實驗室開發(fā)的System R和美國加利福尼亞大學伯克立分校(University of C

3、alifornia,Berkeley)研制的Ingres為典型代表。經(jīng)過大量的高層次研究和開發(fā),關(guān)系數(shù)據(jù)庫系統(tǒng)的研究取得了一系列研究成果。20世紀70年代后期,關(guān)系數(shù)據(jù)庫系統(tǒng)從實驗室走向了社會。因此,在計算機領域中把20世紀70年代稱為關(guān)系數(shù)據(jù)庫時代,在20世紀80年代幾乎所有新開發(fā)的數(shù)據(jù)庫系統(tǒng)均是關(guān)系型的。這些數(shù)據(jù)庫系統(tǒng)的運行,使數(shù)據(jù)庫技術(shù)日益廣泛地應用到企業(yè)管理、情報檢索、輔助決策等各個方面,成為信息系統(tǒng)和計算機應用系統(tǒng)的重要基礎。2.1.1 關(guān)系模型的發(fā)展關(guān)系模型的發(fā)展2.1 2.1 關(guān)系模型的基本概念關(guān)系模型的基本概念關(guān)系模型的數(shù)據(jù)結(jié)構(gòu)是滿足一定條件的一組二維表格,該組表格可能只有一個

4、表格,更多的時候是有關(guān)聯(lián)的多個表格組成的表格集合,表2-1表2-3是某公司人事數(shù)據(jù)庫的簡化版本,從中可以對關(guān)系模型的概念與方法獲得一個感性的了解。2.1.2 關(guān)系模型的數(shù)據(jù)結(jié)構(gòu)關(guān)系模型的數(shù)據(jù)結(jié)構(gòu)表2-1 某公司部門設置表部門代碼部門名稱D0001總經(jīng)理辦 D0002市場部D0003銷售部D0004倉儲部表2-2 某公司員工表員工代碼姓名部門代碼性別住址E0001錢達理D0001男東風路78號E0002東方牧D0001男五一東路25號E0003郭文斌D0002男公司集體宿舍E0004肖海燕D0003女公司集體宿舍E0005張明華D0004男韶山北路55號表2-3 表的連接示例部門代碼部門名稱員工

5、代碼姓名性別住址D001總經(jīng)理辦E001錢達理男東風路78號D001總經(jīng)理辦E002東方牧男五一東路25號D002市場部E003郭文斌男公司集體宿舍D003銷售部E004肖海燕女公司集體宿舍D004倉儲部E005張明華男韶山北路55號2.1 2.1 關(guān)系模型的基本概念關(guān)系模型的基本概念為描述方便,常使用下面的方法描述關(guān)系模式的數(shù)據(jù)結(jié)構(gòu):部門(部門代碼,部門名稱)員工(員工代碼,姓名,部門代碼,性別,住址)2.1.2 關(guān)系模型的數(shù)據(jù)結(jié)構(gòu)關(guān)系模型的數(shù)據(jù)結(jié)構(gòu)2.1 2.1 關(guān)系模型的基本概念關(guān)系模型的基本概念關(guān)系模型的基本數(shù)據(jù)結(jié)構(gòu)是關(guān)系,即平時所說的二維表格,在E-R模型中對應于實體集,而在數(shù)據(jù)庫中

6、關(guān)系又對應于表或數(shù)據(jù)表,因此二維表格、實體集、關(guān)系、表指的是同一概念,只是使用的場合不同而已。針對不同的場合有關(guān)術(shù)語的對應關(guān)系如圖2-1所示。2.1.3 關(guān)系模型的基本術(shù)語關(guān)系模型的基本術(shù)語圖2-1 關(guān)系模型有關(guān)術(shù)語的對應關(guān)系2.1 2.1 關(guān)系模型的基本概念關(guān)系模型的基本概念1關(guān)系通常將一個沒有重復行、重復列,并且每個行列的交叉點只有一個基本數(shù)據(jù)的二維表格看成一個關(guān)系。二維表格包括表頭和表中的內(nèi)容,相應地,關(guān)系包括關(guān)系模式和記錄的值,表包括表結(jié)構(gòu)(記錄類型)和表的記錄,而滿足一定條件的規(guī)范化關(guān)系的集合,就構(gòu)成了關(guān)系模型。2元組二維表格的每一行在關(guān)系中稱為元組(Tuple),相當于表的一個記錄

7、(Record)。一行描述了現(xiàn)實世界中的一個實體。如在表2-2中,每行描述了一個員工的基本信息。在關(guān)系數(shù)據(jù)庫中,行是不能重復的,即不允許兩行的全部元素完全對應相同。2.1.3 關(guān)系模型的基本術(shù)語關(guān)系模型的基本術(shù)語2.1 2.1 關(guān)系模型的基本概念關(guān)系模型的基本概念3屬性二維表格的每一列在關(guān)系中稱為屬性(Attribute),相當于記錄中的一個字段(Field)或數(shù)據(jù)項。每個屬性有一個屬性名,一個屬性在其每個元組上的值稱為屬性值,因此,一個屬性包括多個屬性值,只有在指定元組的情況下,屬性值才是確定的。同時,每個屬性有一定的取值范圍,稱為該屬性的值域。同樣,在關(guān)系數(shù)據(jù)庫中,列是不能重復的,即關(guān)系的

8、屬性不允許重復。屬性必須是原子的,即屬性是一個基本的數(shù)據(jù)項,不能是幾個數(shù)據(jù)的組合項。有了屬性概念后,可以這樣定義關(guān)系模式和關(guān)系模型:關(guān)系模式是屬性名及屬性值域的集合,關(guān)系模型是一組相互關(guān)聯(lián)的關(guān)系模式的集合。2.1.3 關(guān)系模型的基本術(shù)語關(guān)系模型的基本術(shù)語2.1 2.1 關(guān)系模型的基本概念關(guān)系模型的基本概念4關(guān)鍵字關(guān)系中能唯一區(qū)分、確定不同元組的單個屬性或?qū)傩越M合,稱為該關(guān)系的一個關(guān)鍵字。關(guān)鍵字又稱為鍵或碼(Key)。單個屬性組成的關(guān)鍵字稱為單關(guān)鍵字,多個屬性組合的關(guān)鍵字稱為組合關(guān)鍵字。需要強調(diào)的是,關(guān)鍵字的屬性值不能取“空值”。所謂空值就是“不知道”或“不確定”的值,因為空值無法唯一地區(qū)分、確

9、定元組。關(guān)系中能夠作為關(guān)鍵字的屬性或?qū)傩越M合可能不是唯一的。凡在關(guān)系中能夠唯一區(qū)分、確定不同元組的屬性或?qū)傩越M合,稱為候選關(guān)鍵字(Candidate Key)。例如,表2-2所示關(guān)系中的“員工代碼”和“姓名”屬性都是候選關(guān)鍵字(假定沒有重名的職工)。在候選關(guān)鍵字中選定一個作為關(guān)鍵字,稱為該關(guān)系的主關(guān)鍵字或主鍵(Primary Key)。關(guān)系中主關(guān)鍵字是唯一的。2.1.3 關(guān)系模型的基本術(shù)語關(guān)系模型的基本術(shù)語2.1 2.1 關(guān)系模型的基本概念關(guān)系模型的基本概念5外部關(guān)鍵字如果關(guān)系中某個屬性或?qū)傩越M合并非本關(guān)系的關(guān)鍵字,但卻是另一個關(guān)系的關(guān)鍵字,則稱這樣的屬性或?qū)傩越M合為本關(guān)系的外部關(guān)鍵字或外鍵(

10、Foreign Key)。在關(guān)系數(shù)據(jù)庫中,用外部關(guān)鍵字表示兩個表之間的聯(lián)系。如表2-2所示關(guān)系中的“部門代碼”屬性就是一個外部關(guān)鍵字,該屬性是表2-1所示關(guān)系的關(guān)鍵字,該外部關(guān)鍵字描述了員工和部門兩個實體之間的聯(lián)系。2.1.3 關(guān)系模型的基本術(shù)語關(guān)系模型的基本術(shù)語2.1.4 關(guān)系的性質(zhì)與關(guān)系模型的優(yōu)點關(guān)系的性質(zhì)與關(guān)系模型的優(yōu)點關(guān)系是一種規(guī)范化了的二維表格。1關(guān)系的性質(zhì)在關(guān)系模型中,對關(guān)系作了種種規(guī)范性限制,關(guān)系具有以下性質(zhì)。(1)關(guān)系必須規(guī)范化,屬性不可再分割。(2)在同一關(guān)系中不允許出現(xiàn)相同的屬性名。(3)關(guān)系中不允許有完全相同的元組。(4)在同一關(guān)系中元組的次序無關(guān)緊要。(5)在同一關(guān)系中

11、屬性的次序無關(guān)緊要。單位教師職稱分布教授人數(shù)副教授人數(shù)講師人數(shù)助教人數(shù)計算機系4111513自動化系5142011電子工程系39169表2-4 不能直接作為關(guān)系的表格示例2.1 2.1 關(guān)系模型的基本概念關(guān)系模型的基本概念2.1 2.1 關(guān)系模型的基本概念關(guān)系模型的基本概念2關(guān)系模型的優(yōu)點與其他模型相比,關(guān)系模型具有以下優(yōu)點。(1)數(shù)據(jù)結(jié)構(gòu)單一。(2)關(guān)系規(guī)范化,并建立在嚴格的理論基礎上。(3)概念簡單,操作方便。2.1.4 關(guān)系的性質(zhì)與關(guān)系模型的優(yōu)點關(guān)系的性質(zhì)與關(guān)系模型的優(yōu)點2.2 2.2 關(guān)系模型的完整性約束關(guān)系模型的完整性約束在關(guān)系模型中,數(shù)據(jù)完整性包括實體完整性(Entity Inte

12、grity)、參照完整性(Referential Integrity)及用戶自定義完整性(User-defined Integrity)3種。2.3 2.3 關(guān)系代數(shù)的基本原理關(guān)系代數(shù)的基本原理1域域(Domain)是一組具有相同數(shù)據(jù)類型的值的集合,又稱為值域(用D表示)。在關(guān)系中,用域來表示屬性的取值范圍。例如,0,1、教授、副教授,講師,助教、n|n0,100的整數(shù)等都是域。分別用D1、D2和D3表示教師關(guān)系中編號、姓名和性別3個屬性的取值范圍,則可能的結(jié)果是:D1=T1,T2,T3D2=張伶俐,羅佳旺,黎達仁D3=男,女注意,域中的元素無排列次序,如D3=男,女=女,男。2.3.1 關(guān)系

13、的數(shù)學定義關(guān)系的數(shù)學定義2.3 2.3 關(guān)系代數(shù)的基本原理關(guān)系代數(shù)的基本原理2元組利用集合論的觀點,關(guān)系是元組的集合,每個元組包含的屬性數(shù)目相同,其中屬性的個數(shù)稱為元組的維數(shù)。通常,元組用圓括號括起來的屬性值表示,屬性值間用逗號隔開。例如(3,5,6)和(E0001,錢達理,男,東風路78號)是3元組和4元組的例子。注意不要把元組和集合混為一談,集合中的元素沒有順序,而元組是有順序的。例如,1,2,3和2,1,3是同一個集合,但(1,2,3)和(2,1,3)則是兩個元組。2.3.1 關(guān)系的數(shù)學定義關(guān)系的數(shù)學定義2.3 2.3 關(guān)系代數(shù)的基本原理關(guān)系代數(shù)的基本原理3關(guān)系給定一組域D1、D2、Dn

14、,設R=(d1,d2,dn)|diDi,i=1,2,n,即R是由n元組組成的集合,其中每個元組的第i個元素取自集合Di,稱R為定義在D1、D2、Dn上的一個n元關(guān)系,可用R(D1,D2,Dn)表示。其中R稱為關(guān)系的名字,(d1,d2,dn)稱為R的一個元組。根據(jù)上面D1、D2和D3的取值,可以構(gòu)成教師關(guān)系R=(T1,張伶俐,女),(T2,羅佳旺,男),(T3,黎達仁,男),相應的二維表格表示形式如表2-5所示。將關(guān)系與二維表進行比較可以看出兩者存在簡單的對應關(guān)系,關(guān)系模式對應一個二維表的表頭,而關(guān)系的一個元組就是二維表的一行。在很多時候,甚至不加區(qū)別地使用這兩個概念。2.3.1 關(guān)系的數(shù)學定義

15、關(guān)系的數(shù)學定義編號編號姓名姓名性別性別T1張伶俐張伶俐女女T2羅佳旺羅佳旺男男T3黎達仁黎達仁男男表2-5 教師關(guān)系R2.3 2.3 關(guān)系代數(shù)的基本原理關(guān)系代數(shù)的基本原理4關(guān)系模式設A1、A2、An是關(guān)系R的屬性,通常用R(A1,A2,An)來表示這個關(guān)系的一個框架,也稱為R的關(guān)系模式。屬性的名字唯一,屬性的取值范圍Di(i=1,2,n)稱為值域。2.3.1 關(guān)系的數(shù)學定義關(guān)系的數(shù)學定義2.3 2.3 關(guān)系代數(shù)的基本原理關(guān)系代數(shù)的基本原理1并設R、S同為n元關(guān)系,則R、S的并也是一個n元關(guān)系,記作RS。RS包含了所有分屬于R、S或同屬于R、S的元組。因為集合中不允許有重復元素,因此,同時屬于R

16、、S的元組在RS中只出現(xiàn)一次。2交設R、S同為n元關(guān)系,則R、S的交也是一個n元關(guān)系,記作RS。RS包含了所有同屬于R、S的元組。3差設R、S同為n元關(guān)系,則R、S的差也是一個n元關(guān)系,記作R-S。R-S包含了所有屬于R但不屬于S的元組?!纠?-1】 設R=(湖南,長沙),(河北,石家莊),(陜西,西安),S=(湖北,武漢),(廣東,廣州),(廣東,深圳),(陜西,西安),求RS、RS、R-S。顯然,R、S是表示城市和所在省的關(guān)系。RS=(湖南,長沙),(河北,石家莊),(陜西,西安),(湖北,武漢),(廣東,廣州),(廣東,深圳)RS=(陜西,西安)R-S=(湖南,長沙),(河北,石家莊)2

17、.3.2 關(guān)系運算關(guān)系運算2.3 2.3 關(guān)系代數(shù)的基本原理關(guān)系代數(shù)的基本原理4集合的笛卡爾乘積設D1、D2、Dn為任意集合,D1、D2、Dn的笛卡爾乘積記作:D1D2Dn,并且定義D=D1D2Dn=(d1,d2,dn)| diDi,i=1,2,n,其中(d1,d2,dn)是一個元組,它的每個元素di取自對應的集合Di。例如,設D1=1,2,D2=a,b,則D1D2=(1,a),(1,b),(2,a),(2,b)。應當注意,集合的笛卡爾乘積是所有滿足diDi的元組(d1,d2,dn)組合構(gòu)成的集合,設D1有m1個元素,D2有m2個元素,Dn有mn個元素,則D= D1D2Dn,它包含m1m2mn

18、個元素。所以,D1、D2、Dn的笛卡爾乘積D是定義在D1、D2、Dn上的一個特殊關(guān)系,而一般定義在D1、D2、Dn上的關(guān)系R都是D的一個子集。例如,教師關(guān)系中姓名和性別兩個域的笛卡爾乘積為:R=D1D2=李一,王二,陳三男,女=(李一,男),(李一,女),(王二,男),(王二,女),(陳三,男),(陳三,女)在數(shù)學上,關(guān)系是笛卡爾乘積的任意子集,但在實際應用中,關(guān)系是笛卡爾乘積中所取的有意義的子集。顯然,(李一,男),(李一,女)是不符合實際意義的關(guān)系。2.3.2 關(guān)系運算關(guān)系運算2.3 2.3 關(guān)系代數(shù)的基本原理關(guān)系代數(shù)的基本原理5連接設R是一個包含m個元組的j元關(guān)系,S是一個包含n個元組的

19、k元關(guān)系,則R,S的連接是一個包含mn個元組的j+k元關(guān)系,記作R S。并定義:R S=(r1,r2,rj,s1,s2,sk)|(r1,r2,rj)R且s1,s2,skS即R S的每個元組的前j個分量是R中的一個元組,而后k個分量是S中的一個元組。無條件的連接把R中的每個元組都和S中的n個元組進行連接,這樣生成n個新的元組,m個元組總共生成nm個新的元組。但一般進行的是有條件的連接,即對無條件連接的結(jié)果再施加投影和選擇運算。6投影設R=R(A1,A2,An)是一個n元關(guān)系,i1,i2,im是1,2,n的一個子集,并且i1i2im,定義:即(R)是R中只保留屬性的新的關(guān)系,稱(R)是R在屬性上的

20、一個投影,通常記作。這是關(guān)于投影的一個形式描述,通俗地講,關(guān)系R的一個投影就是對R的所有元組去掉某些分量并去掉完全的相同元組(去掉某些分量后,兩個原來不完全相同的元組就可能相同)后的結(jié)果。 2.3.2 關(guān)系運算關(guān)系運算2.3 2.3 關(guān)系代數(shù)的基本原理關(guān)系代數(shù)的基本原理7選擇設R=(a1,a2,an)是一個n元關(guān)系,F(xiàn)是關(guān)于(a1,a2,an)的一個條件,R中所有滿足F條件的元組組成的子關(guān)系稱為R的一個選擇,記作F(R),并定義:F(R)=(a1,a2,an)|(a1,a2,an)R且(a1,a2,an)滿足條件F 簡言之,對R關(guān)系按一定規(guī)則篩選一個子集的過程就是對R施加了一次選擇運算?!纠?

21、-2】 設R1=R1(姓名,性別)=(錢達理,男),(東方牧,男),R2=R2(部門名稱,住址)=(總經(jīng)理辦,東風路78號),(銷售部,五一東路25號),求(1)R=R1R2。(2)R在(姓名,所在單位,住址)上的投影。(3)根據(jù)表2-2,求R關(guān)系的一個選擇。根據(jù)定義,結(jié)果分別如下:(1)R=(錢達理,男,總經(jīng)理辦,東風路78號),(錢達理,男,銷售部,五一東路25號),(東方牧,男,總經(jīng)理辦,東風路78號),(東方牧,男,銷售部,五一東路25號),R是一個包含4個元組的4元關(guān)系。(2)根據(jù)投影的定義,只需對上面得到的R關(guān)系的每個元組刪掉性別屬性即可,所以(R)=(錢達理,總經(jīng)理辦,東風路78

22、號),(錢達理,銷售部,五一東路25號),(東方牧,總經(jīng)理辦,東風路78號),(東方牧,銷售部,五一東路25號)(3)根據(jù)表2-2,錢達理是總經(jīng)理辦的,住在東風路78號,東方牧也是總經(jīng)理辦的,住在五一東路25號,R關(guān)系中只有一個元組反映的情況正確,其余元組數(shù)據(jù)錯誤,應刪掉,根據(jù)該條件(即符合表2-2的描述)得到的一個選擇是:R(S)=(錢達理,總經(jīng)理辦,東風路78號)2.3.2 關(guān)系運算關(guān)系運算2.3 2.3 關(guān)系代數(shù)的基本原理關(guān)系代數(shù)的基本原理8除法給定關(guān)系R(X,Y)和S(Y,Z),其中X、Y、Z為屬性組。R中的Y與S中的Y可以有不同的屬性名,但必須取自相同的集合。R與S的除法運算的結(jié)果是

23、一個只含屬性組X的新的關(guān)系。定義:RS=t|tX(R)且tY(S)R按照定義,RS是R在X屬性組上的投影X(R)的一個子關(guān)系,并且其中的任意元組t與Y(S)的乘積是R的一個子集。元組與關(guān)系的乘積運算是關(guān)系笛卡爾乘積運算的特殊形式,實際上是只含有一個元組的關(guān)系與另一個關(guān)系的的乘法運算,按照笛卡爾乘積運算定義,tY(S)是在關(guān)系Y(S)的前面增加屬性組X,該屬性組的每個元素值都為t。2.3.2 關(guān)系運算關(guān)系運算2.3 2.3 關(guān)系代數(shù)的基本原理關(guān)系代數(shù)的基本原理8除法2.3.2 關(guān)系運算關(guān)系運算【例2-3】 設關(guān)系R和S分別如表2-6和表2-7所示,表中的第一行是關(guān)系名, R、S中的屬性組(B,C

24、)取自相同的集合,求RS。ABCa1b1c2a2b2c7a3b4c6a1b2c3a4b6c6a2b2c3a1b2c1表2-6 關(guān)系RBCDb1c2d1b2c1d1b2c3d2表2-7 關(guān)系S2.3 2.3 關(guān)系代數(shù)的基本原理關(guān)系代數(shù)的基本原理8除法2.3.2 關(guān)系運算關(guān)系運算這里,A(R)=(a1),(a2),(a3),(a4),(B,C)(S)=(b1,c2),(b2,c1,(b2,c3)。對A(R)中的每個元素與(B,C)(S)進行乘法運算,得:a1(B,C)(S)=(a1,b1,c2),(a1,b2,c1,(a1,b2,c3)a2(B,C)(S)=(a2,b1,c2),(a2,b2,c1

25、,(a2,b2,c3)a3(B,C)(S)=(a3,b1,c2),(a3,b2,c1,(a3,b2,c3)a4(B,C)(S)=(a4,b1,c2),(a4,b2,c1,(a4,b2,c3)考察上述4個表達式,容易看出,只有a1(B,C)(S)R,因此,RS=(a1)。上面介紹了8種關(guān)系代數(shù)運算,其中連接、投影、選擇、除法是關(guān)系數(shù)據(jù)庫中專門建立的運算規(guī)則,故稱為專門的關(guān)系運算,而并、交、差、笛卡爾乘積則是沿用了傳統(tǒng)的集合論運算規(guī)則,也稱為關(guān)系的傳統(tǒng)運算。此外,在上述8種關(guān)系代數(shù)運算中,交、連接和除法3種運算可以通過其余5種關(guān)系運算的有機組合來實現(xiàn),例如AB=A-(A-B)或B-(B-A),所以

26、這3種關(guān)系運算之外的并、差、笛卡爾乘積、投影和選擇5種關(guān)系運算也稱為基本關(guān)系運算。2.4 2.4 關(guān)系數(shù)據(jù)庫的規(guī)范化理論關(guān)系數(shù)據(jù)庫的規(guī)范化理論2.4.1 關(guān)系模式的數(shù)據(jù)冗余和操作異常問題關(guān)系模式的數(shù)據(jù)冗余和操作異常問題數(shù)據(jù)冗余是指同一個數(shù)據(jù)在系統(tǒng)中多次重復出現(xiàn)。在數(shù)據(jù)管理中,數(shù)據(jù)冗余一直是影響系統(tǒng)性能的大問題。在文件系統(tǒng)中,由于文件之間沒有聯(lián)系,引起一個數(shù)據(jù)在多個文件中出現(xiàn)。數(shù)據(jù)庫系統(tǒng)克服了文件系統(tǒng)的這種缺陷,但是如果關(guān)系模式設計得不好,仍然會象文件系統(tǒng)一樣出現(xiàn)數(shù)據(jù)的冗余、異常和不一致等問題。設有商品供應關(guān)系模式:商品供應(供應商名稱,供應商地址,聯(lián)系人,商品名稱,訂貨數(shù)量,單價),該模式的一

27、個關(guān)系實例如表2-8所示。表2-8 商品供應關(guān)系供應商名稱供應商地址聯(lián)系人商品名稱訂貨數(shù)量單價華科電子有限公司韶山路22號施賓彬筆記本計算機109800.00華科電子有限公司韶山路22號施賓彬激光打印機52800.00湘江計算機外設公司芙蓉南路127號方勝力筆記本計算機510200.00韋力電子實業(yè)公司五一路99號周昌噴墨打印機5780.00韋力電子實業(yè)公司五一路99號周昌交換機2350.002.4 2.4 關(guān)系數(shù)據(jù)庫的規(guī)范化理論關(guān)系數(shù)據(jù)庫的規(guī)范化理論2.4.1 關(guān)系模式的數(shù)據(jù)冗余和操作異常問題關(guān)系模式的數(shù)據(jù)冗余和操作異常問題1數(shù)據(jù)冗余在商品供應關(guān)系中,供應商名稱、供應商地址、聯(lián)系人對每種商品

28、名稱都要重復輸入一次。如果一個供應商供應多種商品,即使它的名稱、地址、聯(lián)系人不改變,也要輸入多次,既造成數(shù)據(jù)冗余,又會引起輸入上的麻煩。如“華科電子有限公司”和“韋力電子實業(yè)公司”及其地址、聯(lián)系人都在表中出現(xiàn)了兩次,這不僅浪費了存儲空間,更有可能導致數(shù)據(jù)更新后產(chǎn)生數(shù)據(jù)不一致。2.4 2.4 關(guān)系數(shù)據(jù)庫的規(guī)范化理論關(guān)系數(shù)據(jù)庫的規(guī)范化理論2.4.1 關(guān)系模式的數(shù)據(jù)冗余和操作異常問題關(guān)系模式的數(shù)據(jù)冗余和操作異常問題2操作異常由于存在數(shù)據(jù)冗余,就可能導致數(shù)據(jù)操作異常,這主要表現(xiàn)在以下幾個方面。1)更新異常2)插入異常3)刪除異常2.4 2.4 關(guān)系數(shù)據(jù)庫的規(guī)范化理論關(guān)系數(shù)據(jù)庫的規(guī)范化理論2.4.2 函

29、數(shù)依賴的基本概念函數(shù)依賴的基本概念定義1 設有關(guān)系模式R(A1,A2,An)或簡記為R(U),X、Y是U的子集,r是R的任一具體關(guān)系,如果對r的任意兩個元組t1、t2,由t1X=t2X導致t1Y=t2Y,則稱X函數(shù)決定Y,或Y函數(shù)依賴于X,記為XY。XY為模式R的一個函數(shù)依賴。這里t1X表示元組t1在屬性集X上的值,其余符號表示的含義類似。這個定義可以這樣理解:有一個設計好的二維表格,X、Y是表的某些列(可以是一列,也可以是多列),若在表中的t1行和t2行上的X值相等,那么必有t1行和t2行上的Y值也相等,這就是說Y函數(shù)依賴于X。根據(jù)定義,對于任意X、Y,當XY時,都有XY,這樣的函數(shù)依賴稱為

30、平凡依賴,否則,稱為非平凡函數(shù)依賴。2.4 2.4 關(guān)系數(shù)據(jù)庫的規(guī)范化理論關(guān)系數(shù)據(jù)庫的規(guī)范化理論2.4.2 函數(shù)依賴的基本概念函數(shù)依賴的基本概念定義2 R、X、Y如定義1所設,如果XY成立,但對X的任意真子集X1,都有X1Y不成立,稱Y完全函數(shù)依賴于X,否則,稱Y部分函數(shù)依賴于X。所謂完全依賴是說明在依賴關(guān)系的決定項(即依賴關(guān)系的左項)中沒有多余屬性,有多余屬性就是部分依賴。在定義3中,如果YX也成立,則稱Z直接函數(shù)依賴于X,而不是傳遞函數(shù)依賴。例如,在學生關(guān)系模式中,當學生沒有重名時,有“學號姓名”,“姓名學號”,“姓名班號”,這是“班號”對“學號”是直接函數(shù)依賴,而不是傳遞函數(shù)依賴。2.4

31、 2.4 關(guān)系數(shù)據(jù)庫的規(guī)范化理論關(guān)系數(shù)據(jù)庫的規(guī)范化理論2.4.3 關(guān)系模式的范式關(guān)系模式的范式通常將關(guān)系模式規(guī)范化過程為不同程度的規(guī)范化要求設立的不同標準稱為模式的范式(Normal Form,NF)。1主屬性與非主屬性前面討論過候選關(guān)鍵字與關(guān)鍵字,下面將在函數(shù)依賴理論的基礎上,比較嚴格地論述這些概念。1)候選關(guān)鍵屬性和關(guān)鍵屬性。定義4 設關(guān)系模式R(A1,A2,An),Ai(i1,2,n)是R的屬性,X是R的一個屬性組,如果 X(A1,A2,An)。 對于X的任意真子集X1,X1(A1,A2,An)不成立。則稱屬性組X是關(guān)系模式R的一個候選關(guān)鍵屬性。上述條件表示X能唯一決定一個元組,而條件表

32、示X中沒有多余屬性,判斷一個屬性集是否組成一個候選關(guān)鍵屬性時,上述兩個條件是缺一不可的。2.4 2.4 關(guān)系數(shù)據(jù)庫的規(guī)范化理論關(guān)系數(shù)據(jù)庫的規(guī)范化理論2.4.3 關(guān)系模式的范式關(guān)系模式的范式如果關(guān)系模式R只有一個候選關(guān)鍵屬性,稱這唯一的候選關(guān)鍵屬性為關(guān)鍵屬性,否則,應從多個候選關(guān)鍵屬性中指定一個作為關(guān)鍵屬性。習慣上把候選關(guān)鍵屬性稱為候選關(guān)鍵字,關(guān)鍵屬性稱為關(guān)鍵字。從定義知道,對于關(guān)系模式R,R的任何兩個元組在候選關(guān)鍵屬性上的屬性值應不完全相同。2)主屬性和非主屬性。一個關(guān)系模式R可能有多個候選關(guān)鍵屬性,而一個候選關(guān)鍵屬性又可能包含多個屬性,這樣,R的所有屬性Ai(i1,2,n)按是否屬于一個候選

33、關(guān)鍵屬性被劃分為兩類:主屬性和非主屬性。定義5 設Ai是關(guān)系模式R的一個屬性,若Ai屬于R的某個候選關(guān)鍵屬性,稱Ai是R的主屬性,否則,稱Ai為非主屬性。應該注意的是,一般說來,單個主屬性并不一定能作為候選關(guān)鍵屬性。 2.4 2.4 關(guān)系數(shù)據(jù)庫的規(guī)范化理論關(guān)系數(shù)據(jù)庫的規(guī)范化理論2.4.3 關(guān)系模式的范式關(guān)系模式的范式2第1范式定義6 當關(guān)系模式R的所有屬性都不能分解為更基本的數(shù)據(jù)元素時,即R的所有屬性均滿足原子特征時,稱R滿足第1范式(1NF)。滿足第1范式是關(guān)系模式規(guī)范化的最低要求,否則,將有許多基本操作在這樣的關(guān)系模式中實現(xiàn)不了,如上述的員工關(guān)系模式就實現(xiàn)不了按基本工資的20%給每位員工增

34、加工資的操作要求。當然,屬性是否可以一步分解,是相對于應用要求來說的,同樣是上述員工關(guān)系模式,如果關(guān)于這個模式的任何操作都不涉及基本工資和崗位工資,那么對工資也就沒有進一步分解的要求,則這個關(guān)系模式也就符合1NF。2.4 2.4 關(guān)系數(shù)據(jù)庫的規(guī)范化理論關(guān)系數(shù)據(jù)庫的規(guī)范化理論2.4.3 關(guān)系模式的范式關(guān)系模式的范式3第2范式定義7 如果關(guān)系模式R滿足1NF,并且R的所有非主屬性都完全函數(shù)依賴于R的每一個候選關(guān)鍵屬性,稱R滿足第2范式(2NF)。2.4 2.4 關(guān)系數(shù)據(jù)庫的規(guī)范化理論關(guān)系數(shù)據(jù)庫的規(guī)范化理論2.4.3 關(guān)系模式的范式關(guān)系模式的范式4第3范式定義8 如果關(guān)系模式R滿足1NF,并且R的所

35、有非主屬性都不傳遞函數(shù)依賴于R的每一個候選關(guān)鍵字,稱R滿足第3范式(3NF)。不滿足3NF的關(guān)系模式中必定存在非主屬性對候選關(guān)鍵字的傳遞函數(shù)依賴。再來考查公司關(guān)系模式R。在R中,公司注冊號注冊城市,注冊城市所在省,所以,公司注冊號所在省,即R的非主屬性“所在省”傳遞函數(shù)依賴于其候選關(guān)鍵屬性“公司注冊號”,因而R不滿足3NF。關(guān)于3NF,有一個重要結(jié)論,這里對這個結(jié)論只敘述而不進行形式證明。定理1 若關(guān)系模式R符合3NF條件,則R一定符合2NF條件。2.4 2.4 關(guān)系數(shù)據(jù)庫的規(guī)范化理論關(guān)系數(shù)據(jù)庫的規(guī)范化理論2.4.3 關(guān)系模式的范式關(guān)系模式的范式5Boyce-Codd范式在3NF中,并未排除主

36、屬性對侯選關(guān)鍵字的傳遞函數(shù)依賴,因此有必要對3NF進一步規(guī)范化,為此,Boyce和Codd共同提出了一個更高一級的范式,這就是Boyce-Codd范式(BCNF)。定義9 如果關(guān)系模式R滿足1NF,且R的所有屬性都不傳遞函數(shù)依賴于R的每一個候選關(guān)鍵字,稱R滿足BCNF。定理2 若關(guān)系模式R符合BCNF條件,則R一定符合3NF條件,但反過來卻不一定成立。2.4 2.4 關(guān)系數(shù)據(jù)庫的規(guī)范化理論關(guān)系數(shù)據(jù)庫的規(guī)范化理論2.4.4 關(guān)系模式的分解關(guān)系模式的分解1關(guān)系模式分解的一般問題所謂關(guān)系模式的分解,就是對原有關(guān)系模式在不同的屬性上進行投影,從而將原有關(guān)系模式分解為含有較少屬性的多個關(guān)系模式。在闡述分

37、解方法以前,有必要就分解的一般問題先進行討論。先看一個實例,見表2-9。員工號姓名部門月份月度獎00901張小強辦公室2010-0538000902陳斌一車間2010-0545000903李哲銷售科2010-0588000904趙大明設計科2010-0585000905馮珊辦公室2010-0535000906張青松銷售科2010-0592000901張小強辦公室2010-0635000902陳斌一車間2010-06480表2-9 員工獎金分配表2.4 2.4 關(guān)系數(shù)據(jù)庫的規(guī)范化理論關(guān)系數(shù)據(jù)庫的規(guī)范化理論2.4.4 關(guān)系模式的分解關(guān)系模式的分解表2-9所示關(guān)系的關(guān)鍵屬性是屬性組(員工號,月份),

38、它也是唯一的候選關(guān)鍵屬性(這里假定姓名有重名情況),從前面的知識可以知道,這個關(guān)系不滿足2NF,因為該關(guān)系的非主屬性“姓名”和“部門”都只部分函數(shù)依賴于侯選關(guān)鍵字(員工號,月份)。解決這個問題的基本方法是將其分解為兩個關(guān)系,見表2-10和表2-11。員工號姓名部門員工號姓名部門00901張小強辦公室00904趙大明設計科00902陳斌一車間00905馮珊辦公室00903李哲銷售科00906張青松銷售科員工號月份月度獎員工號月份月度獎009012010-05380009012010-06350009022010-05450009022010-06480009032010-058800090320

39、10-06850009042010-05850009042010-06860009052010-05350009052010-06360009062010-05920009062010-06900表2-11 員工獎金分配表表2-10 員工基本情況表2.4 2.4 關(guān)系數(shù)據(jù)庫的規(guī)范化理論關(guān)系數(shù)據(jù)庫的規(guī)范化理論2.4.4 關(guān)系模式的分解關(guān)系模式的分解上述分解過程是對原有關(guān)系R(員工號,姓名,部門,月份,月度獎)在(員工號,姓名,部門)和(員工號,月份,月度獎)上分別投影,并刪除完全相同行后的結(jié)果。經(jīng)過這種分解后,兩個關(guān)系表都符合BCNF標準,從而符合3NF標準。并且,從這兩個表完全可以經(jīng)過連接恢復

40、到原來的表,這樣的分解稱為無損分解。與之相反,如果對表2-9進行另一種分解(見表2-10和表2-12),這種分解就不是無損的。部門月份月度獎部門月份月度獎辦公室2010-05380辦公室2010-06350一車間2010-05450一車間2010-06480銷售科2010-05880銷售科2010-06850設計科2010-05850設計科2010-06860辦公室2010-05350辦公室2010-06360銷售科2010-05920銷售科2010-06900表2-12 員工獎金分配表2.4 2.4 關(guān)系數(shù)據(jù)庫的規(guī)范化理論關(guān)系數(shù)據(jù)庫的規(guī)范化理論2.4.4 關(guān)系模式的分解關(guān)系模式的分解無損的含

41、義有兩個方面,其一是信息沒有丟失,即從分解后的關(guān)系通過連接運算可以恢復原有關(guān)系;其二是依賴關(guān)系沒有改變。前者稱為連接不失真,后者稱為依賴不失真。Heath定理 設關(guān)系模式R(A,B,C),A、B、C是R的屬性集。如果AB,并且AC,則R和投影(A,B),(A,C)的連接等價。由Heath定理可知,只要將關(guān)系R的某個候選關(guān)鍵字分解到每個子關(guān)系中,就會同時保持連接不失真和依賴不失真。23NF分解理論上已證明,任何關(guān)系都可以無損地分解為多個3NF關(guān)系。下面采用一種非形式化的敘述方法來討論這個問題。在討論中,假定R是一個關(guān)系模式,R1、R2、Rn是對R進行分解而得到的n個關(guān)系模式。(1)如果R不滿足1

42、NF條件,先對其分解,使其滿足1NF。對R進行1NF分解的方法不是采用投影,而是直接將其復合屬性進行分解,用分解后的基本屬性集取代原來的屬性,以獲得1NF。 【例2-3】 將R(員工號,姓名,工資)進行分解,使其滿足1NF條件。假定R的“工資”屬性由“基本工資”和“崗位工資”組成,直接用屬性組(基本工資,崗位工資)取代“工資”屬性,得到新關(guān)系R_NEW(員工號,姓名,基本工資,崗位工資),R_NEW滿足1NF。注意:對工資屬性是否應進行上述分解,要根據(jù)具體情況決定,這里只是一個示意性的解答。2.4 2.4 關(guān)系數(shù)據(jù)庫的規(guī)范化理論關(guān)系數(shù)據(jù)庫的規(guī)范化理論2.4.4 關(guān)系模式的分解關(guān)系模式的分解(2

43、)如果R符合1NF條件但不符合2NF條件時,分解R使其滿足2NF。若R不滿足2NF條件,根據(jù)定義7,R中一定存在候選關(guān)鍵字K和非主屬性X,使X部分函數(shù)依賴于K,因此,候選關(guān)鍵字K一定是由一個以上的屬性組成的屬性組。設K(K1,K2),并且K1X是R中的函數(shù)依賴關(guān)系。又設R(K1,K2,X1,X2),且(K1,K2)是R的一個侯選關(guān)鍵字,X1部分函數(shù)依賴于(K1,K2),不妨設K1X1,則將R分解成R1和R2:R1(S1,S2,X2),Primary Key(S1,S2),F(xiàn)oreign Key(S1),即屬性組(S1,S2)是R1的關(guān)鍵字,S1是R1的外部關(guān)鍵字。R2(S1,X1),Prima

44、ry Key(S1)。容易證明,這樣的分解是無損的。如果R1、R2還不滿足2NF條件,可以繼續(xù)上述分解過程,直到每個分解后的關(guān)系模式都滿足要求為止。再考查對表2-9所示關(guān)系的分解過程。設K1員工號,K2月份,X1(姓名,部門),X2月度獎,有關(guān)系模式:R(員工號,姓名,部門,月份,月度獎)(K1,K2,X1,X2),Primary key(K1,K2)(員工號,月份),將R分解為R1和R2:R1(K1,K2,X2)(員工號,月份,月度獎),Primary Key(員工號,月份),F(xiàn)oreign Key(員工號)。R2(K1,X1)(員工號,姓名,部門),Primary Key(員工號)。經(jīng)過這

45、樣一次分解后得到的R1、R2均已滿足2NF和3NF條件,因此,分解過程結(jié)束。當R符合2NF條件但不符合3NF條件時,繼續(xù)對其分解,使其滿足3NF條件。 2.4 2.4 關(guān)系數(shù)據(jù)庫的規(guī)范化理論關(guān)系數(shù)據(jù)庫的規(guī)范化理論2.4.4 關(guān)系模式的分解關(guān)系模式的分解(3)如果R符合2NF條件但不符合3NF條件時,分解R使其滿足3NF。R滿足2NF條件但不滿足3NF條件時,說明R中的所有非主屬性對R中的任何候選關(guān)鍵字都是完全函數(shù)依賴的,但至少存在一個非主屬性對侯選關(guān)鍵字是傳遞函數(shù)依賴的。因此,存在R中的非主屬性間的依賴作為傳遞函數(shù)依賴的過渡屬性,設R(K,X1,X2),且R以K作為主關(guān)鍵字,X2通過非主屬性X

46、1傳遞函數(shù)依賴于K,即KX1(但X1K不成立),X1X2,則對R分解成R1和R2:R1(K,X1),Primary Key(K),F(xiàn)oreign Key(X1)。R2(X1,X2),Primary Key(X1)。上述分解過程是無損的。如果R1、R2還不滿足3NF,可以重復上述過程,直到符合3NF條件為止。2.5 2.5 數(shù)據(jù)庫的設計方法數(shù)據(jù)庫的設計方法2.5.1 數(shù)據(jù)庫設計過程數(shù)據(jù)庫設計過程數(shù)據(jù)庫設計過程一般包括需求分析、概念設計、邏輯設計、物理設計以及實施與維護等內(nèi)容。1需求分析在仔細調(diào)查研究的基礎上,摸清目標需求以及現(xiàn)在的數(shù)據(jù)內(nèi)容與形式,包括現(xiàn)在使用的帳簿、票據(jù)等原始單據(jù)以及這些單據(jù)的使

47、用頻率、數(shù)據(jù)量,并在此基礎上編寫需求分析報告。需求分析報告中要羅列出目標系統(tǒng)涉及的全部數(shù)據(jù)實體、每個數(shù)據(jù)實體的屬性名一覽表、以及數(shù)據(jù)實體間的關(guān)聯(lián)關(guān)系等。2概念設計概念設計是把用戶的需求進行綜合、歸納與抽象,統(tǒng)一到一個整體概念結(jié)構(gòu)中,形成數(shù)據(jù)庫的概念模型。概念模型是面向現(xiàn)實世界的一個真實模型,它一方面能夠充分反映現(xiàn)實世界,同時又容易轉(zhuǎn)換為數(shù)據(jù)庫邏輯模型,也容易為用戶理解。數(shù)據(jù)庫概念模型獨立于計算機系統(tǒng)和DBMS。2.5 2.5 數(shù)據(jù)庫的設計方法數(shù)據(jù)庫的設計方法2.5.1 數(shù)據(jù)庫設計過程數(shù)據(jù)庫設計過程(3邏輯設計數(shù)據(jù)庫邏輯設計是將概念模型轉(zhuǎn)換為邏輯模型,也就是被某個DBMS所支持的數(shù)據(jù)模型,并對轉(zhuǎn)

48、換結(jié)果進行規(guī)范化處理。關(guān)系數(shù)據(jù)庫的邏輯結(jié)構(gòu)由一組關(guān)系模式組成。因而,從概念模型結(jié)構(gòu)到關(guān)系數(shù)據(jù)庫邏輯結(jié)構(gòu)的轉(zhuǎn)換就是將E-R圖轉(zhuǎn)換為關(guān)系模型的過程。4物理設計數(shù)據(jù)庫最終是要存儲在物理設備上的。為一個給定的邏輯數(shù)據(jù)模型選取一個最適合應用環(huán)境的物理結(jié)構(gòu),包括存儲結(jié)構(gòu)與存取方法,并把得到的關(guān)系模型在一個選定的DBMS上實現(xiàn),就是數(shù)據(jù)庫的物理設計。數(shù)據(jù)庫的物理結(jié)構(gòu)依賴于給定的計算機系統(tǒng)和DBMS。5實施與維護確定了數(shù)據(jù)庫的邏輯結(jié)構(gòu)和物理結(jié)構(gòu)后,就可以用所選用的DBMS提供的數(shù)據(jù)定義語言(DDL)來嚴格定義數(shù)據(jù)庫,包括建立表、定義表的完整性約束規(guī)則等。數(shù)據(jù)庫系統(tǒng)投入運行后,對數(shù)據(jù)庫設計進行評價、調(diào)整、修改等

49、維護工作也是一項重要、長期的任務。 2.5 2.5 數(shù)據(jù)庫的設計方法數(shù)據(jù)庫的設計方法2.5.2 E-R模型到關(guān)系模型的轉(zhuǎn)化模型到關(guān)系模型的轉(zhuǎn)化E-R模型雖然能比較方便地模擬實際問題的靜態(tài)過程,也很容易進行交流,但迄今為止,還沒有哪個數(shù)據(jù)庫管理系統(tǒng)直接支持該模型,因而,它只是一種工具,作為聯(lián)接實際問題與數(shù)據(jù)庫間的橋梁。E-R模型到關(guān)系模型的轉(zhuǎn)化過程如圖2-1所示。圖2-1 E-R模型到關(guān)系模型的轉(zhuǎn)化過程2.5 2.5 數(shù)據(jù)庫的設計方法數(shù)據(jù)庫的設計方法2.5.2 E-R模型到關(guān)系模型的轉(zhuǎn)化模型到關(guān)系模型的轉(zhuǎn)化下面討論從E-R模型到關(guān)系模型的轉(zhuǎn)化過程。1獨立實體到關(guān)系模式的轉(zhuǎn)化一個獨立實體轉(zhuǎn)化為一個

50、關(guān)系模式,實體的屬性即為關(guān)系模式的屬性,實體名稱作為關(guān)系模式的名稱,實體標識符轉(zhuǎn)化為關(guān)系模式的關(guān)鍵屬性。注意根據(jù)實際對象屬性情況確定關(guān)系模式屬性的值域。例如對于圖2-2所示的學生實體,將其轉(zhuǎn)化為關(guān)系模式:學生(學號,姓名,民族,出生年月)其中下劃線標注的屬性表示關(guān)鍵屬性。圖2-2 學生實體的E-R圖2.5 2.5 數(shù)據(jù)庫的設計方法數(shù)據(jù)庫的設計方法2.5.2 E-R模型到關(guān)系模型的轉(zhuǎn)化模型到關(guān)系模型的轉(zhuǎn)化21:1聯(lián)系到關(guān)系模式的轉(zhuǎn)化若實體間的聯(lián)系是1:1聯(lián)系,只要在兩個實體類型轉(zhuǎn)化成的兩個關(guān)系模式中任意一個關(guān)系模式中增加另一關(guān)系模式的關(guān)鍵屬性和聯(lián)系的屬性即可。圖2-3所示的E-R圖中有“經(jīng)理”和

51、“公司”兩個實體,一個經(jīng)理只主管一個公司,而一個公司也只有一個經(jīng)理,兩者是一對一關(guān)系,可以轉(zhuǎn)化為兩個關(guān)系模式:經(jīng)理(經(jīng)理姓名,民族,住址,出生年月,電話,任職年月,公司名稱)公司(公司名稱,注冊地,類型,電話)圖2-3 1:1聯(lián)系到關(guān)系模式的轉(zhuǎn)化2.5 2.5 數(shù)據(jù)庫的設計方法數(shù)據(jù)庫的設計方法2.5.2 E-R模型到關(guān)系模型的轉(zhuǎn)化模型到關(guān)系模型的轉(zhuǎn)化31:n聯(lián)系到關(guān)系模式的轉(zhuǎn)化若實體間的聯(lián)系是1:n聯(lián)系,則需要在n方(即1對多聯(lián)系的多方)實體的關(guān)系模式中增加1方實體類型的關(guān)鍵屬性和聯(lián)系的屬性,1方的關(guān)鍵屬性作為外部關(guān)鍵屬性處理。如圖2-4所示的“學院”與“教師”的聯(lián)系是1:n的聯(lián)系,對圖2-4

52、進行轉(zhuǎn)化,得到關(guān)系模式:學院(學院名稱,院長姓名,辦公地點,電話)教師(工號,姓名,性別,出生年月,研究方向,聘期,學院名稱)在教師關(guān)系中增加學院關(guān)系中的關(guān)鍵屬性“學院名稱”作為外部關(guān)鍵屬性,以及增加聯(lián)系的屬性“聘期”。圖2-4 1:n聯(lián)系到關(guān)系模式的轉(zhuǎn)化2.5 2.5 數(shù)據(jù)庫的設計方法數(shù)據(jù)庫的設計方法2.5.2 E-R模型到關(guān)系模型的轉(zhuǎn)化模型到關(guān)系模型的轉(zhuǎn)化4m:n聯(lián)系到關(guān)系模式的轉(zhuǎn)化若實體間的聯(lián)系是m:n聯(lián)系,則除對兩個實體分別進行轉(zhuǎn)化外,還要為聯(lián)系類型單獨建立一個關(guān)系模式,其屬性為兩方實體類型的關(guān)鍵屬性加上聯(lián)系類型的屬性,兩方實體關(guān)鍵屬性的組合作為關(guān)鍵屬性。圖2-5描述的學生與課程的聯(lián)系

53、是m:n聯(lián)系,該E-R圖應轉(zhuǎn)化為3個關(guān)系模式:學生(學號,姓名,民族,出生年月)課程(課程號,課程名,學分)選課(學號,課程號,成績)圖2-5 m:n聯(lián)系到關(guān)系模式的轉(zhuǎn)化2.5 2.5 數(shù)據(jù)庫的設計方法數(shù)據(jù)庫的設計方法2.5.2 E-R模型到關(guān)系模型的轉(zhuǎn)化模型到關(guān)系模型的轉(zhuǎn)化5多元聯(lián)系到關(guān)系模式的轉(zhuǎn)化所謂多元聯(lián)系,即是說該聯(lián)系涉及兩個以上的實體。例如采購貨物涉及供應商、采購員和貨物等3個實體,其E-R圖如圖2-6所示,3個實體之間的聯(lián)系是m:n:p。和二元聯(lián)系的轉(zhuǎn)換類似,3元聯(lián)系的轉(zhuǎn)換方法是:(1)若實體間的聯(lián)系是1:1:1聯(lián)系,只要在3個實體類型轉(zhuǎn)化成的3個關(guān)系模式中任意一個關(guān)系模式中增加另

54、兩個關(guān)系模式的關(guān)鍵屬性(作為外部關(guān)鍵屬性)和聯(lián)系的屬性即可。(2)若實體間的聯(lián)系是1:1:n聯(lián)系,則需要在n方實體的關(guān)系模式中增加兩個1方實體的關(guān)鍵屬性(作為外部關(guān)鍵屬性)和聯(lián)系的屬性。(3)若實體間的聯(lián)系是1:m:n聯(lián)系,則除對3個實體分別進行轉(zhuǎn)化外,還要為聯(lián)系類型單獨建立一個關(guān)系模式,其屬性為m方和n方實體類型的關(guān)鍵屬性(作為外部關(guān)鍵屬性)加上聯(lián)系類型的屬性,m方和n方實體關(guān)鍵屬性的組合作為關(guān)鍵屬性。(4)若實體間的聯(lián)系是m:n:p聯(lián)系,則除對3個實體分別進行轉(zhuǎn)化外,還要為聯(lián)系類型單獨建立一個關(guān)系模式,其屬性為3方實體類型的關(guān)鍵屬性(作為外部關(guān)鍵屬性)加上聯(lián)系類型的屬性,3方實體關(guān)鍵屬性的組合作為關(guān)鍵屬性。2.5 2.5 數(shù)據(jù)庫的設計方法數(shù)據(jù)庫的設計方法2.5.2 E-R模型到關(guān)系模型的轉(zhuǎn)化模型到關(guān)系模型的轉(zhuǎn)化圖2-6 m:n:p聯(lián)系到關(guān)系模式的轉(zhuǎn)化圖2-6描述的E-R圖應轉(zhuǎn)化為4個關(guān)系模式:供應商(供應商號,名稱,地址,電話)采購員(采購員號,姓名,性別,業(yè)績)貨物(貨物代碼,名稱,型號,庫存量)采購(采購單號,數(shù)量,單價,日期,供應商號,采購員號,貨物代碼)2.5 2.5

溫馨提示

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

評論

0/150

提交評論