第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ù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

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)點(diǎn)2.2 關(guān)系模型的完整性約束2.3 關(guān)系代數(shù)的基本原理2.3.1 關(guān)系的數(shù)學(xué)定義2.3.2 關(guān)系運(yù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ù)庫的設(shè)計(jì)方法2.5.1 數(shù)據(jù)庫設(shè)計(jì)過程2.5.2 E-R模型到關(guān)系模型的轉(zhuǎn)化2.5.3 數(shù)據(jù)庫設(shè)計(jì)實(shí)例2.1 2.1 關(guān)系模型的基本概

2、念關(guān)系模型的基本概念1970年6月,美國IBM公司San Jose實(shí)驗(yàn)室的研究員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ù)奠定了理論基礎(chǔ)。由于E. F. Codd的杰出貢獻(xiàn),他于1981年獲得了ACM圖靈獎(jiǎng)。20世紀(jì)70年代是關(guān)系數(shù)據(jù)庫理論研究和原型系統(tǒng)開發(fā)的時(shí)代,其中以IBM San Jose實(shí)驗(yàn)室開發(fā)的System R和美國加利福尼亞大學(xué)伯克立分校(University of C

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

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

5、代碼姓名性別住址D001總經(jīng)理辦E001錢達(dá)理男東風(fēng)路78號(hào)D001總經(jīng)理辦E002東方牧男五一東路25號(hào)D002市場(chǎng)部E003郭文斌男公司集體宿舍D003銷售部E004肖海燕女公司集體宿舍D004倉儲(chǔ)部E005張明華男韶山北路55號(hào)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)系,即平時(shí)所說的二維表格,在E-R模型中對(duì)應(yīng)于實(shí)體集,而在數(shù)據(jù)庫中

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

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

8、屬性不允許重復(fù)。屬性必須是原子的,即屬性是一個(gè)基本的數(shù)據(jù)項(xiàng),不能是幾個(gè)數(shù)據(jù)的組合項(xiàng)。有了屬性概念后,可以這樣定義關(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ū)分、確定不同元組的單個(gè)屬性或?qū)傩越M合,稱為該關(guān)系的一個(gè)關(guān)鍵字。關(guān)鍵字又稱為鍵或碼(Key)。單個(gè)屬性組成的關(guān)鍵字稱為單關(guān)鍵字,多個(gè)屬性組合的關(guān)鍵字稱為組合關(guān)鍵字。需要強(qiáng)調(diào)的是,關(guān)鍵字的屬性值不能取“空值”。所謂空值就是“不知道”或“不確定”的值,因?yàn)榭罩禑o法唯一地區(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)鍵字中選定一個(gè)作為關(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)系中某個(gè)屬性或?qū)傩越M合并非本關(guān)系的關(guān)鍵字,但卻是另一個(gè)關(guān)系的關(guān)鍵字,則稱這樣的屬性或?qū)傩越M合為本關(guān)系的外部關(guān)鍵字或外鍵(

10、Foreign Key)。在關(guān)系數(shù)據(jù)庫中,用外部關(guān)鍵字表示兩個(gè)表之間的聯(lián)系。如表2-2所示關(guān)系中的“部門代碼”屬性就是一個(gè)外部關(guān)鍵字,該屬性是表2-1所示關(guān)系的關(guān)鍵字,該外部關(guān)鍵字描述了員工和部門兩個(gè)實(shí)體之間的聯(lián)系。2.1.3 關(guān)系模型的基本術(shù)語關(guān)系模型的基本術(shù)語2.1.4 關(guān)系的性質(zhì)與關(guān)系模型的優(yōu)點(diǎn)關(guān)系的性質(zhì)與關(guān)系模型的優(yōu)點(diǎn)關(guān)系是一種規(guī)范化了的二維表格。1關(guān)系的性質(zhì)在關(guān)系模型中,對(duì)關(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ù)計(jì)算機(jī)系4111513自動(dòng)化系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)點(diǎn)與其他模型相比,關(guān)系模型具有以下優(yōu)點(diǎn)。(1)數(shù)據(jù)結(jié)構(gòu)單一。(2)關(guān)系規(guī)范化,并建立在嚴(yán)格的理論基礎(chǔ)上。(3)概念簡單,操作方便。2.1.4 關(guān)系的性質(zhì)與關(guān)系模型的優(yōu)點(diǎn)關(guān)系的性質(zhì)與關(guān)系模型的優(yōu)點(diǎn)2.2 2.2 關(guān)系模型的完整性約束關(guān)系模型的完整性約束在關(guān)系模型中,數(shù)據(jù)完整性包括實(shí)體完整性(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)系中編號(hào)、姓名和性別3個(gè)屬性的取值范圍,則可能的結(jié)果是:D1=T1,T2,T3D2=張伶俐,羅佳旺,黎達(dá)仁D3=男,女注意,域中的元素?zé)o排列次序,如D3=男,女=女,男。2.3.1 關(guān)系

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

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

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

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

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

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

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

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

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

22、號(hào)),(錢達(dá)理,銷售部,五一東路25號(hào)),(東方牧,總經(jīng)理辦,東風(fēng)路78號(hào)),(東方牧,銷售部,五一東路25號(hào))(3)根據(jù)表2-2,錢達(dá)理是總經(jīng)理辦的,住在東風(fēng)路78號(hào),東方牧也是總經(jīng)理辦的,住在五一東路25號(hào),R關(guān)系中只有一個(gè)元組反映的情況正確,其余元組數(shù)據(jù)錯(cuò)誤,應(yīng)刪掉,根據(jù)該條件(即符合表2-2的描述)得到的一個(gè)選擇是:R(S)=(錢達(dá)理,總經(jīng)理辦,東風(fēng)路78號(hào))2.3.2 關(guān)系運(yùn)算關(guān)系運(yù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的除法運(yùn)算的結(jié)果是

23、一個(gè)只含屬性組X的新的關(guān)系。定義:RS=t|tX(R)且tY(S)R按照定義,RS是R在X屬性組上的投影X(R)的一個(gè)子關(guān)系,并且其中的任意元組t與Y(S)的乘積是R的一個(gè)子集。元組與關(guān)系的乘積運(yùn)算是關(guān)系笛卡爾乘積運(yùn)算的特殊形式,實(shí)際上是只含有一個(gè)元組的關(guān)系與另一個(gè)關(guān)系的的乘法運(yùn)算,按照笛卡爾乘積運(yùn)算定義,tY(S)是在關(guān)系Y(S)的前面增加屬性組X,該屬性組的每個(gè)元素值都為t。2.3.2 關(guān)系運(yùn)算關(guān)系運(yùn)算2.3 2.3 關(guān)系代數(shù)的基本原理關(guān)系代數(shù)的基本原理8除法2.3.2 關(guān)系運(yùn)算關(guān)系運(yùn)算【例2-3】 設(shè)關(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)系運(yùn)算關(guān)系運(yùn)算這里,A(R)=(a1),(a2),(a3),(a4),(B,C)(S)=(b1,c2),(b2,c1,(b2,c3)。對(duì)A(R)中的每個(gè)元素與(B,C)(S)進(jìn)行乘法運(yùn)算,得: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個(gè)表達(dá)式,容易看出,只有a1(B,C)(S)R,因此,RS=(a1)。上面介紹了8種關(guān)系代數(shù)運(yùn)算,其中連接、投影、選擇、除法是關(guān)系數(shù)據(jù)庫中專門建立的運(yùn)算規(guī)則,故稱為專門的關(guān)系運(yùn)算,而并、交、差、笛卡爾乘積則是沿用了傳統(tǒng)的集合論運(yùn)算規(guī)則,也稱為關(guān)系的傳統(tǒng)運(yùn)算。此外,在上述8種關(guān)系代數(shù)運(yùn)算中,交、連接和除法3種運(yùn)算可以通過其余5種關(guān)系運(yùn)算的有機(jī)組合來實(shí)現(xiàn),例如AB=A-(A-B)或B-(B-A),所以

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

27、個(gè)關(guān)系實(shí)例如表2-8所示。表2-8 商品供應(yīng)關(guān)系供應(yīng)商名稱供應(yīng)商地址聯(lián)系人商品名稱訂貨數(shù)量單價(jià)華科電子有限公司韶山路22號(hào)施賓彬筆記本計(jì)算機(jī)109800.00華科電子有限公司韶山路22號(hào)施賓彬激光打印機(jī)52800.00湘江計(jì)算機(jī)外設(shè)公司芙蓉南路127號(hào)方勝力筆記本計(jì)算機(jī)510200.00韋力電子實(shí)業(yè)公司五一路99號(hào)周昌噴墨打印機(jī)5780.00韋力電子實(shí)業(yè)公司五一路99號(hào)周昌交換機(jī)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ù)冗余在商品供應(yīng)關(guān)系中,供應(yīng)商名稱、供應(yīng)商地址、聯(lián)系人對(duì)每種商品

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

29、數(shù)依賴的基本概念函數(shù)依賴的基本概念定義1 設(shè)有關(guān)系模式R(A1,A2,An)或簡記為R(U),X、Y是U的子集,r是R的任一具體關(guān)系,如果對(duì)r的任意兩個(gè)元組t1、t2,由t1X=t2X導(dǎo)致t1Y=t2Y,則稱X函數(shù)決定Y,或Y函數(shù)依賴于X,記為XY。XY為模式R的一個(gè)函數(shù)依賴。這里t1X表示元組t1在屬性集X上的值,其余符號(hào)表示的含義類似。這個(gè)定義可以這樣理解:有一個(gè)設(shè)計(jì)好的二維表格,X、Y是表的某些列(可以是一列,也可以是多列),若在表中的t1行和t2行上的X值相等,那么必有t1行和t2行上的Y值也相等,這就是說Y函數(shù)依賴于X。根據(jù)定義,對(duì)于任意X、Y,當(dāng)XY時(shí),都有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所設(shè),如果XY成立,但對(duì)X的任意真子集X1,都有X1Y不成立,稱Y完全函數(shù)依賴于X,否則,稱Y部分函數(shù)依賴于X。所謂完全依賴是說明在依賴關(guān)系的決定項(xiàng)(即依賴關(guān)系的左項(xiàng))中沒有多余屬性,有多余屬性就是部分依賴。在定義3中,如果YX也成立,則稱Z直接函數(shù)依賴于X,而不是傳遞函數(shù)依賴。例如,在學(xué)生關(guān)系模式中,當(dāng)學(xué)生沒有重名時(shí),有“學(xué)號(hào)姓名”,“姓名學(xué)號(hào)”,“姓名班號(hào)”,這是“班號(hào)”對(duì)“學(xué)號(hào)”是直接函數(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ī)范化要求設(shè)立的不同標(biāo)準(zhǔn)稱為模式的范式(Normal Form,NF)。1主屬性與非主屬性前面討論過候選關(guān)鍵字與關(guān)鍵字,下面將在函數(shù)依賴?yán)碚摰幕A(chǔ)上,比較嚴(yán)格地論述這些概念。1)候選關(guān)鍵屬性和關(guān)鍵屬性。定義4 設(shè)關(guān)系模式R(A1,A2,An),Ai(i1,2,n)是R的屬性,X是R的一個(gè)屬性組,如果 X(A1,A2,An)。 對(duì)于X的任意真子集X1,X1(A1,A2,An)不成立。則稱屬性組X是關(guān)系模式R的一個(gè)候選關(guān)鍵屬性。上述條件表示X能唯一決定一個(gè)元組,而條件表

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

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

34、加工資的操作要求。當(dāng)然,屬性是否可以一步分解,是相對(duì)于應(yīng)用要求來說的,同樣是上述員工關(guān)系模式,如果關(guān)于這個(gè)模式的任何操作都不涉及基本工資和崗位工資,那么對(duì)工資也就沒有進(jìn)一步分解的要求,則這個(gè)關(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的每一個(gè)候選關(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的每一個(gè)候選關(guān)鍵字,稱R滿足第3范式(3NF)。不滿足3NF的關(guān)系模式中必定存在非主屬性對(duì)候選關(guān)鍵字的傳遞函數(shù)依賴。再來考查公司關(guān)系模式R。在R中,公司注冊(cè)號(hào)注冊(cè)城市,注冊(cè)城市所在省,所以,公司注冊(cè)號(hào)所在省,即R的非主屬性“所在省”傳遞函數(shù)依賴于其候選關(guān)鍵屬性“公司注冊(cè)號(hào)”,因而R不滿足3NF。關(guān)于3NF,有一個(gè)重要結(jié)論,這里對(duì)這個(gè)結(jié)論只敘述而不進(jìn)行形式證明。定理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、屬性對(duì)侯選關(guān)鍵字的傳遞函數(shù)依賴,因此有必要對(duì)3NF進(jìn)一步規(guī)范化,為此,Boyce和Codd共同提出了一個(gè)更高一級(jí)的范式,這就是Boyce-Codd范式(BCNF)。定義9 如果關(guān)系模式R滿足1NF,且R的所有屬性都不傳遞函數(shù)依賴于R的每一個(gè)候選關(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)系模式的分解,就是對(duì)原有關(guān)系模式在不同的屬性上進(jìn)行投影,從而將原有關(guān)系模式分解為含有較少屬性的多個(gè)關(guān)系模式。在闡述分

37、解方法以前,有必要就分解的一般問題先進(jìn)行討論。先看一個(gè)實(shí)例,見表2-9。員工號(hào)姓名部門月份月度獎(jiǎng)00901張小強(qiáng)辦公室2010-0538000902陳斌一車間2010-0545000903李哲銷售科2010-0588000904趙大明設(shè)計(jì)科2010-0585000905馮珊辦公室2010-0535000906張青松銷售科2010-0592000901張小強(qiáng)辦公室2010-0635000902陳斌一車間2010-06480表2-9 員工獎(jiǎng)金分配表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)鍵屬性是屬性組(員工號(hào),月份),

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

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

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

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

42、NF條件,先對(duì)其分解,使其滿足1NF。對(duì)R進(jìn)行1NF分解的方法不是采用投影,而是直接將其復(fù)合屬性進(jìn)行分解,用分解后的基本屬性集取代原來的屬性,以獲得1NF。 【例2-3】 將R(員工號(hào),姓名,工資)進(jìn)行分解,使其滿足1NF條件。假定R的“工資”屬性由“基本工資”和“崗位工資”組成,直接用屬性組(基本工資,崗位工資)取代“工資”屬性,得到新關(guān)系R_NEW(員工號(hào),姓名,基本工資,崗位工資),R_NEW滿足1NF。注意:對(duì)工資屬性是否應(yīng)進(jìn)行上述分解,要根據(jù)具體情況決定,這里只是一個(gè)示意性的解答。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條件時(shí),分解R使其滿足2NF。若R不滿足2NF條件,根據(jù)定義7,R中一定存在候選關(guān)鍵字K和非主屬性X,使X部分函數(shù)依賴于K,因此,候選關(guān)鍵字K一定是由一個(gè)以上的屬性組成的屬性組。設(shè)K(K1,K2),并且K1X是R中的函數(shù)依賴關(guān)系。又設(shè)R(K1,K2,X1,X2),且(K1,K2)是R的一個(gè)侯選關(guān)鍵字,X1部分函數(shù)依賴于(K1,K2),不妨設(shè)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ù)上述分解過程,直到每個(gè)分解后的關(guān)系模式都滿足要求為止。再考查對(duì)表2-9所示關(guān)系的分解過程。設(shè)K1員工號(hào),K2月份,X1(姓名,部門),X2月度獎(jiǎng),有關(guān)系模式:R(員工號(hào),姓名,部門,月份,月度獎(jiǎng))(K1,K2,X1,X2),Primary key(K1,K2)(員工號(hào),月份),將R分解為R1和R2:R1(K1,K2,X2)(員工號(hào),月份,月度獎(jiǎng)),Primary Key(員工號(hào),月份),F(xiàn)oreign Key(員工號(hào))。R2(K1,X1)(員工號(hào),姓名,部門),Primary Key(員工號(hào))。經(jīng)過這

45、樣一次分解后得到的R1、R2均已滿足2NF和3NF條件,因此,分解過程結(jié)束。當(dāng)R符合2NF條件但不符合3NF條件時(shí),繼續(xù)對(duì)其分解,使其滿足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條件時(shí),分解R使其滿足3NF。R滿足2NF條件但不滿足3NF條件時(shí),說明R中的所有非主屬性對(duì)R中的任何候選關(guān)鍵字都是完全函數(shù)依賴的,但至少存在一個(gè)非主屬性對(duì)侯選關(guān)鍵字是傳遞函數(shù)依賴的。因此,存在R中的非主屬性間的依賴作為傳遞函數(shù)依賴的過渡屬性,設(shè)R(K,X1,X2),且R以K作為主關(guān)鍵字,X2通過非主屬性X

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

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

48、換結(jié)果進(jìn)行規(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ù)庫最終是要存儲(chǔ)在物理設(shè)備上的。為一個(gè)給定的邏輯數(shù)據(jù)模型選取一個(gè)最適合應(yīng)用環(huán)境的物理結(jié)構(gòu),包括存儲(chǔ)結(jié)構(gòu)與存取方法,并把得到的關(guān)系模型在一個(gè)選定的DBMS上實(shí)現(xiàn),就是數(shù)據(jù)庫的物理設(shè)計(jì)。數(shù)據(jù)庫的物理結(jié)構(gòu)依賴于給定的計(jì)算機(jī)系統(tǒng)和DBMS。5實(shí)施與維護(hù)確定了數(shù)據(jù)庫的邏輯結(jié)構(gòu)和物理結(jié)構(gòu)后,就可以用所選用的DBMS提供的數(shù)據(jù)定義語言(DDL)來嚴(yán)格定義數(shù)據(jù)庫,包括建立表、定義表的完整性約束規(guī)則等。數(shù)據(jù)庫系統(tǒng)投入運(yùn)行后,對(duì)數(shù)據(jù)庫設(shè)計(jì)進(jìn)行評(píng)價(jià)、調(diào)整、修改等

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

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

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

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

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

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

溫馨提示

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