




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第十講關(guān)系數(shù)據(jù)理論
與范式主講:顧曦電話mail:guxi@數(shù)據(jù)庫(kù)系統(tǒng)原理與設(shè)計(jì)主要內(nèi)容1、
問(wèn)題的提出2、函數(shù)依賴(lài)的概念3、函數(shù)依賴(lài)?yán)碚?、范式5、模式的分解*21、問(wèn)題的提出1.1回顧:關(guān)系模式的形式化定義關(guān)系模式是一個(gè)五元組:
R(U,D,DOM,F)R:關(guān)系名U:組成該關(guān)系的屬性名集合D:屬性組U中屬性所來(lái)自的域DOM:屬性向域的映象集合F:屬性間數(shù)據(jù)的依賴(lài)關(guān)系集合*4簡(jiǎn)化表示簡(jiǎn)化為一個(gè)三元組:
R(U,F)當(dāng)且僅當(dāng)U上的一個(gè)關(guān)系r滿(mǎn)足F時(shí),r稱(chēng)為關(guān)系模式R(U,F)的一個(gè)關(guān)系*51.2數(shù)據(jù)冗余定義:同一信息在數(shù)據(jù)庫(kù)中存儲(chǔ)了多個(gè)副本。[例5.1]
學(xué)生選課關(guān)系模式SCE(studentNo,courseNo, studentName,courseName,score)若:一個(gè)學(xué)生可選修多門(mén)課程一門(mén)課程可被多個(gè)學(xué)生選修可能的數(shù)據(jù):*6主碼studentNoStudentNamecourseNocourseNamescoreS0700001李小勇C001高等數(shù)學(xué)98S0700001李小勇C002離散數(shù)學(xué)82S0700001李小勇C006數(shù)據(jù)庫(kù)系統(tǒng)原理56S0700002劉方晨C003計(jì)算機(jī)原理69S0700002劉方晨C004C語(yǔ)言程序設(shè)計(jì)87S0700002劉方晨C005數(shù)據(jù)結(jié)構(gòu)77S0700002劉方晨C007操作系統(tǒng)90S0700003王紅敏C001高等數(shù)學(xué)46S0700003王紅敏C002離散數(shù)學(xué)38S0700003王紅敏C007操作系統(tǒng)50出現(xiàn)的問(wèn)題冗余存儲(chǔ):學(xué)生姓名和課程名被重復(fù)存儲(chǔ)多次;更新異常:當(dāng)修改某學(xué)生的姓名或某課程的課程名時(shí),可能只修改了部分?jǐn)?shù)據(jù);插入異常:如果某學(xué)生沒(méi)有選修課程,或某門(mén)課程未被任何學(xué)生選修時(shí),則該學(xué)生或該課程信息不能存入數(shù)據(jù)庫(kù),因?yàn)橹鞔a值不能為空;刪除異常:當(dāng)一學(xué)生的所有選修課程信息都被刪除時(shí),則該學(xué)生的信息將被丟失。對(duì)課程也是如此。*7數(shù)據(jù)冗余帶來(lái)的問(wèn)題冗余存儲(chǔ):信息被重復(fù)存儲(chǔ),導(dǎo)致浪費(fèi)大量存儲(chǔ)空間。更新異常:當(dāng)重復(fù)信息的一個(gè)副本被修改,所有副本都必須進(jìn)行同樣的修改。插入異常:只有當(dāng)一些信息事先已經(jīng)存放在數(shù)據(jù)庫(kù)中時(shí),另外一些信息才能存入數(shù)據(jù)庫(kù)中。刪除異常:刪除某些信息時(shí)可能丟失其它信息。*8數(shù)據(jù)冗余產(chǎn)生原因及解決方法產(chǎn)生問(wèn)題的原因:該模式中某些屬性之間存在依賴(lài)關(guān)系studentNo→studentName(即學(xué)號(hào)決定姓名)courseNo→courseName(即課程編號(hào)決定課程名稱(chēng)){studentNo,courseNo}→score解決方法:將一個(gè)關(guān)系模式分解為較小的關(guān)系模式。上例分解為三個(gè)關(guān)系模式
S(studentNo,studentName)C(courseNo,courseName)E(studentNo,courseNo,score)*9如何分解[例5.2]設(shè)一關(guān)系模式STU(studentNo,studentName,sex,birthday,native,classNo),其中studentNo為主碼。假設(shè)將STU分解為以下兩個(gè)子模式:STU1(studentNo,studentName)STU2(studentName,sex,birthday,native,classNo)分解后會(huì)發(fā)生什么問(wèn)題?*10studentNostudnetNamesexbirthdaynativeclassNoS0700005王紅男1992-4-26江西省南昌市CS0702S0800005王紅女1995-8-10湖北省武漢市CP0802studentNostudnetNameS0700005王紅S0800005王紅studnetNamesexbirthdaynativeclassNo王紅男1992-4-26江西省南昌市CS0702王紅女1995-8-10湖北省武漢市CP0802studentNostudnetNameSexbirthdaynativeclassNoS0700005王紅男1992-4-26江西省南昌市CS0702S0700005王紅女1995-8-10湖北省武漢市CP0802S0800005王紅男1992-4-26江西省南昌市CS0702S0800005王紅女1995-8-10湖北省武漢市CP0802*11模式分解存在的問(wèn)題有損分解:兩個(gè)分解后的關(guān)系通過(guò)連接運(yùn)算還原得到的信息與原來(lái)關(guān)系的信息不一致。如果能夠通過(guò)連接分解后所得到的較小關(guān)系完全還原被分解關(guān)系的所有實(shí)例,稱(chēng)之為無(wú)損分解(losslessdecomposition),也稱(chēng)該分解具有無(wú)損連接特性。依賴(lài)關(guān)系丟失:sex、birthday、age、native、classNo等與屬性studentNo依賴(lài)關(guān)系不再存在。如果被分解關(guān)系模式上的所有依賴(lài)關(guān)系都在分解得到的關(guān)系模式上保留,稱(chēng)該分解為保持依賴(lài)分解。一個(gè)“好”的關(guān)系模式數(shù)據(jù)冗余盡可能少不發(fā)生插入異常、刪除異常、更新異常等問(wèn)題。模式分解時(shí),分解后的模式應(yīng)具有無(wú)損連接、保持依賴(lài)等特性。*13問(wèn)題?為什么模式分解能解決數(shù)據(jù)冗余問(wèn)題?什么樣的關(guān)系模式需要進(jìn)一步分解?是否所有的模式分解都是有益的?如何分解?*142、函數(shù)依賴(lài)與碼2.1函數(shù)依賴(lài)定義函數(shù)依賴(lài)(functionaldependency,簡(jiǎn)稱(chēng)FD):
一種完整性約束,是事物屬性之間的一種制約關(guān)系。定義5.1設(shè)r(R)為關(guān)系模式,屬性集R,R。對(duì)任意合法關(guān)系r及其中任兩個(gè)元組ti和tj,ij,當(dāng)ti[]=tj[]時(shí),則ti[]=tj[],則稱(chēng)函數(shù)確定或函數(shù)依賴(lài)于,記作。函數(shù)依賴(lài)圖*16返回例如圖所示的是滿(mǎn)足函數(shù)依賴(lài)ABC的關(guān)系模式r(A,B,C,D)的一個(gè)關(guān)系實(shí)例。對(duì)于任意兩個(gè)在屬性集{A,B}上取值相同的元組,它們?cè)趯傩訡上的取值也相同。ABCDa1b1c1d1a1b1c1d2a1b2c2d1a2b1c3d1
滿(mǎn)足函數(shù)依賴(lài)ABC的一個(gè)關(guān)系實(shí)例問(wèn):如果在圖中再增加一個(gè)元組(a1,b1,c2,
d1),ABC
還成立嗎?函數(shù)依賴(lài)說(shuō)明函數(shù)依賴(lài)指關(guān)系模式r(R)的所有關(guān)系實(shí)例均要滿(mǎn)足的約束條件。函數(shù)依賴(lài)是語(yǔ)義范疇的概念,只能根據(jù)數(shù)據(jù)的語(yǔ)義來(lái)確定函數(shù)依賴(lài),是不能夠被證明的。數(shù)據(jù)庫(kù)設(shè)計(jì)者可以對(duì)現(xiàn)實(shí)世界作強(qiáng)制的規(guī)定。碼約束是函數(shù)依賴(lài)的一個(gè)特例。碼屬性(集)相當(dāng)于定義“”中的,關(guān)系中的所有屬性相當(dāng)于定義。*182.2平凡與非平凡函數(shù)依賴(lài)定義5.2
在關(guān)系模式r(R)中,R,R。若,但,則稱(chēng)是非平凡函數(shù)依賴(lài)。否則,若,則稱(chēng)是平凡函數(shù)依賴(lài)。對(duì)于任一關(guān)系模式,平凡函數(shù)依賴(lài)總是成立的。(a)非平凡函數(shù)依賴(lài)(b)平凡函數(shù)依賴(lài)*192.3完全函數(shù)依賴(lài)和部分函數(shù)依賴(lài)定義5.3
在關(guān)系模式r(R)中,R,R,且。若對(duì)任意的,都不成立,則稱(chēng)是完全函數(shù)依賴(lài),簡(jiǎn)稱(chēng)完全依賴(lài),記作
F
。當(dāng)是單屬性時(shí),則完全函數(shù)依賴(lài)總是成立的。否則,若存在非空的,且成立,則稱(chēng)是部分函數(shù)依賴(lài),簡(jiǎn)稱(chēng)部分依賴(lài),記作
P
。部分依賴(lài)可能會(huì)導(dǎo)致數(shù)據(jù)冗余及產(chǎn)生各種異常。*20舉例例如,在關(guān)系SCESCE(studentNo,courseNo, studentName,courseName,score)中完全依賴(lài):studentNostudentNamecourseNocourseName{studentNo,courseNo}score部分依賴(lài):{studentNo,courseNo}studentName{studentNo,courseNo}courseName*212.4傳遞函數(shù)依賴(lài)定義5.4
在關(guān)系模式r(R)中,R,R,,R。若,,,則必存在函數(shù)依賴(lài),并稱(chēng)是傳遞函數(shù)依賴(lài),簡(jiǎn)稱(chēng)傳遞依賴(lài),→。與部分依賴(lài)一樣,傳遞依賴(lài)也可能會(huì)導(dǎo)致數(shù)據(jù)冗余及產(chǎn)生各種異常。傳遞*22傳遞[例5.4]關(guān)系模式SCI(studentNo,classNo,institute)存在下列函數(shù)依賴(lài):studentNoclassNoinstitutestudentNoinstitute(傳遞函數(shù)依賴(lài))關(guān)系模式SCI中存在傳遞依賴(lài)studentNoinstitute,因此可能導(dǎo)致數(shù)據(jù)冗余、更新異常、插入異常及刪除異常(p166)。*232.5碼定義
設(shè)K為R<U,F>中的屬性或?qū)傩越M合。若K
U,則K稱(chēng)為R的侯選碼(CandidateKey)。候選碼多于一個(gè),則選定其中的一個(gè)做為主碼(PrimaryKey)。侯選碼的超集稱(chēng)為超碼。F*24主屬性與非主屬性主屬性(Primeattribute):包含在任何一個(gè)候選碼中的屬性。非主屬性(非碼屬性):不包含在任何碼中的屬性全碼:整個(gè)屬性組是碼,稱(chēng)為全碼(All-key)*25例:Student(StudentNo,sex,native)中:?jiǎn)蝹€(gè)屬性StudentNo是碼,StudentNo是主屬性。SC(StudentNo,CourseNo,score):(StudentNo,CourseNo)是碼,StudentNo是主屬性,score是非主屬性。關(guān)系模式R(P,W,A)。其中
P:演奏者W:作品A:聽(tīng)眾一個(gè)演奏者可以演奏多個(gè)作品某一作品可被多個(gè)演奏者演奏聽(tīng)眾可以欣賞不同演奏者的不同作品碼為(P,W,A),即All-Key*262.6外部碼定義
關(guān)系模式R中屬性或?qū)傩越MX并非R的碼,但X是另一個(gè)關(guān)系模式S的碼,則稱(chēng)X是R的外部碼(Foreignkey)也稱(chēng)外碼如在SC(StudentNo,CourseNo,score)中,StudentNo不是碼,但StudentNo是關(guān)系模式Student(StudentNo,sex,native)的碼,則StudentNo是關(guān)系模式SC的外部碼
主碼與外部碼一起提供了表示關(guān)系間聯(lián)系的手段*273、函數(shù)依賴(lài)?yán)碚?283.1函數(shù)依賴(lài)集閉包對(duì)于給定關(guān)系模式r(R)及其函數(shù)依賴(lài)集F,需要考慮在r(R)上總是成立的所有函數(shù)依賴(lài)。[例5.5]
給定關(guān)系模式r(R)=r(A,B,C)及函數(shù)依賴(lài)集F={AB,BC},證明AC成立。證明:假設(shè)對(duì)于關(guān)系實(shí)例r中的任意元組ti,tj,ij,滿(mǎn)足ti[A]=tj[A]。由于存在AB,則可推出ti[B]=tj[B]。又由于BC,則又可推出ti[C]=tj[C]。因此,ti[A]=tj[A]
ti[C]=tj[C]。按定義5.1有AC。證畢。函數(shù)依賴(lài)集閉包定義5.5
若給定函數(shù)依賴(lài)集F,可以證明其他函數(shù)依賴(lài)也成立,則稱(chēng)這些函數(shù)依賴(lài)被F邏輯蘊(yùn)涵。定義5.6
令F為一函數(shù)依賴(lài)集,F(xiàn)邏輯蘊(yùn)涵的所有函數(shù)依賴(lài)組成的集合稱(chēng)為F的閉包,記為F+。函數(shù)依賴(lài)集F的閉包計(jì)算方法Armstrong公理的推理規(guī)則Armstrong公理及推論Armstrong公理自反律(reflexivityrule):若存在,則有增補(bǔ)律(augmentationrule):若存在,則有傳遞律(transitivityrule):若存在且,則有Armstrong公理三個(gè)推論合并律(unionrule):若有且,則有分解律(decompositionrule):若有,則有和偽傳遞律(pseudotransitivityrule):若有且,則有函數(shù)依賴(lài)集閉包計(jì)算舉例[例5.6]
令r(R)=r(A,B,C,G,H,I),函數(shù)依賴(lài)集F={AB,AC,CGH,CGI,BH},計(jì)算F+中的依賴(lài)。由傳遞律可得AH,因?yàn)锳B且BH;由合并律可得CGHI,因?yàn)镃GH,CGI;由偽傳遞律可得AGI,因?yàn)锳C且CGI。還可以使用上述規(guī)則推導(dǎo)出更多的函數(shù)依賴(lài)。
3.2屬性集閉包定義5.7令r(R)為關(guān)系模式,F(xiàn)為函數(shù)依賴(lài)集,屬性集AR,則稱(chēng)在函數(shù)依賴(lài)集F下由A函數(shù)確定的所有屬性的集合為F下A的閉包,記為A+。屬性集閉包計(jì)算舉例[例5.7]r(R)=r(A,B,C,G,H,I),
F={AB,AC,CGH,CGI,BH},計(jì)算(AG)+。
算法:
步驟
FD
closure
1.初值A(chǔ)G2.
ABABG3.ACABCG4.CGHABCGH5.CGIABCGHI6.BHABCGHI第一次循環(huán)結(jié)果:closure=ABCGHI。算法第二次循環(huán)后的結(jié)果為closure=ABCGHI,沒(méi)有變化,算法終止。屬性集AG的閉包:(AG)+=ABCGHI。計(jì)算屬性集閉包的作用驗(yàn)證是否在F+中:看是否有+。判斷是否為r(R)的超碼:通過(guò)計(jì)算+,看其是否包含R的所有屬性。例如,(AG)+=ABCGHI,則AG為r(R)的超碼。判斷是否為r(R)的候選碼:若是超碼,可檢驗(yàn)包含的所有子集的閉包是否包含R的所有屬性。若不存在任何這樣的屬性子集,則是r(R)的候選碼。計(jì)算F+。對(duì)于任意R,可通過(guò)找出+,對(duì)任意的S+,可輸出一個(gè)S。判斷屬性集是否為候選碼舉例[例5.8]
r(R)和F定義同例5.7,判斷AG是否為r(R)的候選碼。例5.7已計(jì)算出(AG)+=ABCGHI,則還要進(jìn)一步分別計(jì)算A+和G+。經(jīng)計(jì)算得,A+=ABCH、G+=G,它們都不包含R的所有屬性。因此,AG為r(R)的候選碼。3.3無(wú)關(guān)屬性定義5.8
給定函數(shù)依賴(lài)集F及→F,如果去除或的一個(gè)屬性不會(huì)改變F+,則稱(chēng)該屬性是無(wú)關(guān)的。定義5.9
給定函數(shù)依賴(lài)集F及→F,若A,且F邏輯蘊(yùn)涵(F-{→}){(-A)
}(即,沒(méi)有產(chǎn)生新的函數(shù)依賴(lài)),則屬性A在中是無(wú)關(guān)的(左無(wú)關(guān))。定義5.10
給定函數(shù)依賴(lài)集F及→F,若A,且(F-{}){((-A)}邏輯蘊(yùn)涵F,則屬性A在中是無(wú)關(guān)的(右無(wú)關(guān))。
(-A)
=>
[例5.9]設(shè)F={AB→CD,A→E,E→C},證明C在AB→CD中為無(wú)關(guān)屬性。證明:步驟:計(jì)算F'F‘={AB→D,A→E,E→C}下(AB)+:(AB)+=ABCDE;所以,F(xiàn)‘邏輯蘊(yùn)含AB→CD,即F‘邏輯蘊(yùn)含F(xiàn)。因此,C是AB→CD中的無(wú)關(guān)屬性。證畢。無(wú)關(guān)屬性檢測(cè)算法(p169圖5-9)思路:
由于C是AB→CD依賴(lài)關(guān)系中的右邊屬性,需證明F‘={AB→D,A→E,E→C}邏輯蘊(yùn)含F(xiàn),即證明F‘邏輯蘊(yùn)含F(xiàn)’中沒(méi)有的函數(shù)依賴(lài):AB→CD3.4正則覆蓋定義5.11
正則覆蓋(canonicalcover)Fc是一個(gè)依賴(lài)集,使得F邏輯蘊(yùn)涵Fc中的所有依賴(lài),F(xiàn)c邏輯蘊(yùn)涵F中的所有依賴(lài),而且必須具有下列特性:Fc中的任何函數(shù)依賴(lài)都不包含無(wú)關(guān)屬性;Fc中函數(shù)依賴(lài)的左半部都是唯一的,即Fc中不存在兩個(gè)依賴(lài)1→1和1→2。計(jì)算F的正則覆蓋Fc的步驟合并函數(shù)依賴(lài)將F中所有形如1→1、1→2的函數(shù)依賴(lài)合并為1→12,得到新函數(shù)依賴(lài)集F'。去除無(wú)關(guān)屬性對(duì)F'中的每個(gè)函數(shù)依賴(lài),依次判斷是否包含無(wú)關(guān)屬性。若發(fā)現(xiàn)無(wú)關(guān)屬性,則用去除無(wú)關(guān)屬性后的函數(shù)依賴(lài)代替F'中的原函數(shù)依賴(lài)。*40關(guān)于驗(yàn)證無(wú)關(guān)屬性的方法左屬性無(wú)關(guān)算去掉驗(yàn)證屬性的左屬性集閉包包含右,則無(wú)關(guān)*41算左看右右屬性無(wú)關(guān)去掉驗(yàn)證屬性,得F’算左屬性集閉包包含原右,則無(wú)關(guān)計(jì)算正則覆蓋舉例[例5.10]考慮關(guān)系模式r(R)=r(A,B,C)和函數(shù)依賴(lài)集F={A→BC,B→C,A→B,AB→C},計(jì)算F的正則覆蓋Fc。解題步驟合并函數(shù)依賴(lài):將A→BC和A→B合并為A→BC。
故
F'={A→BC,B→C,AB→C}。去除無(wú)關(guān)屬性:對(duì)于AB→C,根據(jù)圖5-9(a)的算法可檢測(cè)A是無(wú)關(guān)的。因此,去除無(wú)關(guān)屬性A后,AB→C變?yōu)锽→C,而B(niǎo)→C已在F'中存在,則F'={B→C,A→BC}。對(duì)于B→C,由于其左右兩邊都為單屬性,故不存在無(wú)關(guān)屬性。對(duì)于A→BC,根據(jù)圖5-9(b)的算法可檢測(cè)C是無(wú)關(guān)的。因此,去除無(wú)關(guān)屬性C后,A→BC變?yōu)锳→B,則F'={B→C,A→B}。F'中的函數(shù)依賴(lài)左半部都是唯一的,且都不存在無(wú)關(guān)屬性,因此Fc={B→C,A→B}。*43正則覆蓋說(shuō)明Fc與F具有相同的閉包;Fc不包含無(wú)關(guān)屬性,每個(gè)依賴(lài)是最小的,且是必要的;正則覆蓋不一定唯一。函數(shù)依賴(lài)小結(jié)函數(shù)依賴(lài)是指關(guān)系模式中屬性之間存在的一種約束關(guān)系這種約束關(guān)系既可以是現(xiàn)實(shí)世界事物或聯(lián)系的屬性之間客觀存在的約束,也可以是數(shù)據(jù)庫(kù)設(shè)計(jì)者根據(jù)應(yīng)用需求或設(shè)計(jì)需要強(qiáng)加給數(shù)據(jù)的一種約束。正確了解數(shù)據(jù)的意義及確定屬性之間的函數(shù)依賴(lài)關(guān)系,對(duì)設(shè)計(jì)一個(gè)好的關(guān)系模式是十分重要的。*454、設(shè)計(jì)范式(規(guī)范化)*46
范式概述范式是符合某一種級(jí)別的關(guān)系模式的集合關(guān)系數(shù)據(jù)庫(kù)中的關(guān)系必須滿(mǎn)足一定的要求。滿(mǎn)足不同程度要求的為不同范式范式的種類(lèi):
*47第一范式(1NF)第二范式(2NF)第三范式(3NF)BC范式(BCNF)第四范式(4NF)第五范式(5NF)各種范式之間存在聯(lián)系某一關(guān)系模式R為第n范式,可簡(jiǎn)記為R∈nNF。一個(gè)低一級(jí)范式的關(guān)系模式,通過(guò)模式分解可以轉(zhuǎn)換為若干個(gè)高一級(jí)范式的關(guān)系模式的集合,這種過(guò)程就叫規(guī)范化
*484.1第一范式(1NF)——碼定義5.16
如果一關(guān)系模式r(R)的每個(gè)屬性對(duì)應(yīng)的域值都是不可分的(即原子的),則稱(chēng)r(R)屬于第一范式,記為r(R)1NF。第一范式的目標(biāo)是:將基本數(shù)據(jù)劃分成稱(chēng)為實(shí)體集或表的邏輯單元,當(dāng)設(shè)計(jì)好每個(gè)實(shí)體后,需要為其指定主碼。studentNostudentNamesexbirthdayageaddressclassNoprovincecitystreet圖5-10非規(guī)范化的關(guān)系模式studentNostudentNamesexbirthdayageprovincecitystreetclassNo圖5-111NF規(guī)范化后的關(guān)系模式問(wèn)題:例4.1(參考教材p175)關(guān)系模式S-L-C(Sno,Cno,Sdept,Sloc,Score),Sloc為學(xué)生住處假設(shè):,假設(shè)每個(gè)系的學(xué)生住在同一個(gè)地方。關(guān)系S-L-C的碼為(Sno,Cno)關(guān)系S-L-C滿(mǎn)足第一范式。*50非主屬性Sdept和Sloc部分函數(shù)依賴(lài)于碼(Sno,Cno)*51函數(shù)依賴(lài)包括:(Sno,Cno)FScoreSno→Sdept(Sno,Cno)PSdeptSno→Sloc(Sno,Cno)PSlocSdept→Sloc...出現(xiàn)的問(wèn)題:(1)插入異常:未選課的學(xué)生無(wú)法加入。(2)刪除異常:只選一門(mén)課的學(xué)生取消選擇時(shí),該學(xué)生信息(元組)被刪除。(3)數(shù)據(jù)冗余度大:多選課時(shí),學(xué)生信息多次錄入。(4)修改復(fù)雜:學(xué)生轉(zhuǎn)系時(shí),需多處修改Sloc。*52原因:
Sdept、Sloc部分依賴(lài)于碼4.2第二范式(2NF)——全部碼定義5.18
若R∈1NF,且每一個(gè)非主屬性完全函數(shù)依賴(lài)于碼,則R∈2NF。第二范式的目標(biāo)是:將只部分依賴(lài)于主碼(即依賴(lài)于主碼的部分屬性)的數(shù)據(jù)移到其他表中。在滿(mǎn)足第一范式的實(shí)體中,如果有復(fù)合主碼(即多個(gè)屬性共同構(gòu)成主碼),那么所有非主屬性必須依賴(lài)于全部的主碼,而不能只是依賴(lài)于部分的主碼屬性。違背了2NF的模式,即存在非主屬性對(duì)候選碼的部分依賴(lài),則可能導(dǎo)致例5.1所述的數(shù)據(jù)冗余及異常問(wèn)題*53修改例4.1*54SnoCnoScoreSCS-LSnoSdeptSloc
S-L-C分解為兩個(gè)關(guān)系模式,以消除這些部分函數(shù)依賴(lài)SC(Sno,Cno,Score)S-L(Sno,Sdept,Sloc)關(guān)系模式SC的碼為(Sno,Cno)關(guān)系模式S-L的碼為Sno非主屬性對(duì)碼都是完全函數(shù)依賴(lài);
SC∈2NF、S-L∈2NF函數(shù)依賴(lài)圖問(wèn)題:如果學(xué)生轉(zhuǎn)系,或某系更換住處,會(huì)發(fā)生什么情況?*55S-LSnoSdeptSloc函數(shù)依賴(lài):
Sno→SdeptSdept→Sloc
Sno→Sloc,即S-L中存在非主屬性對(duì)碼的傳遞函數(shù)依賴(lài)4.3第三范式(3NF)——僅僅是碼定義
關(guān)系模式R(U,F(xiàn))
中若不存在這樣的碼X、屬性組Y及非主屬性Z(ZY),使得X→Y,Y→Z成立,
Y→X,則稱(chēng)R(U,F(xiàn))∈3NF。若R∈3NF,則每一個(gè)非主屬性既不部分依賴(lài)于碼也不傳遞依賴(lài)于碼。*56第三范式的目標(biāo)是:去掉表中不依賴(lài)于主碼的數(shù)據(jù)。在滿(mǎn)足第二范式的實(shí)體中,非主屬性不能依賴(lài)于另一個(gè)非主屬性,即所有的非主屬性應(yīng)該直接依賴(lài)于全部的主屬性(即必須完全依賴(lài),這是2NF的要求),并且彼此之間無(wú)相互依賴(lài)關(guān)系(即不能存在部分依賴(lài),這是3NF的要求)。換一句話說(shuō),非主屬性不能包括它們自己的屬性,如果屬性不包括屬性,則它們就是真正的實(shí)體。*57例3NF解決辦法采用投影分解法(以決定性的非主屬性為碼),把S-L分解為兩個(gè)關(guān)系模式,以消除傳遞函數(shù)依賴(lài):S-D(Sno,Sdept)D-L(Sdept,Sloc)S-D的碼為Sno,D-L的碼為Sdept。分解后的關(guān)系模式S-D與D-L中不再存在傳遞依賴(lài)*58SnoSdeptS-DSdeptSlocD-L問(wèn)題:在關(guān)系模式STJ(S,T,J)中,S表示學(xué)生,T表示教師,J表示課程。每個(gè)教師只教一門(mén)課。每門(mén)課有若干教師,某一學(xué)生選定某門(mén)課,就對(duì)應(yīng)一個(gè)固定的教師。函數(shù)依賴(lài):(S,J)→T,(S,T)→J,T→J(S,J)和(S,T)是候選碼∵一個(gè)非主屬性都沒(méi)有∴R∈3NF*59SJTSTJ問(wèn)題:插入異常:(無(wú)法存放沒(méi)有選的課和老師)刪除異常:(刪除選課信息時(shí),丟失課程和老師的對(duì)應(yīng)信息)修改復(fù)雜:(如修改課程對(duì)應(yīng)的老師)*60BCNFBCNF是由Boyce和Codd提出的,比3NF又進(jìn)了一步,通常認(rèn)為是修正的第三范式.定義5.19
給定關(guān)系模式r(R)及函數(shù)依賴(lài)集F,若F+中的所有函數(shù)依賴(lài)
(R,R)至少滿(mǎn)足下列條件之一:是平凡函數(shù)依賴(lài)(即);是r(R)的一個(gè)超碼(
+包含R的全部屬性,起決定作用的屬性必須是超碼)。則稱(chēng)r(R)屬于Boyce-Codd范式,記為r(R)BCNF。即:*61推論在關(guān)系模式r(R)中,如果F+中的每一個(gè)非平凡函數(shù)依賴(lài)的決定屬性集都包含候選碼,則r(R)BCNF。所有非主屬性對(duì)每一個(gè)碼都是完全函數(shù)依賴(lài)(3NF)所有的主屬性對(duì)每一個(gè)不包含它的碼都是完全函數(shù)依賴(lài)沒(méi)有任何屬性完全函數(shù)依賴(lài)于非碼的一組屬性*623NF的問(wèn)題函數(shù)依賴(lài):(S,J)→T,(S,T)→J,T→J(每個(gè)教師只教一門(mén)課)(S,J)和(S,T)是候選碼主屬性J部分依賴(lài)碼(S,T)解決方法:可分解為ST(S,T)與TJ(T,J)它們都是BCNF。*63BC范式判斷舉例[例5.13]
r(R)=r(A,B,C),F(xiàn)={A→B,B→C},候選碼為A。r(R)BCNF,因?yàn)楹瘮?shù)依賴(lài)B→C中的決定屬性B不是超碼。[例5.14]
r(R)=r(A,B,C),候選碼為AB或BC,F(xiàn)={AB→C,C→A}。r(R)BCNF,因?yàn)镃→A的決定屬性C不是超碼。[例5.15]
r(R)=r(A,B,C),F(xiàn)={AB→C,BC→A}。候選碼為AB或BC。r(R)BCNF,因?yàn)閮蓚€(gè)函數(shù)依賴(lài)中的決定屬性AB或BC都是r(R)的候選碼。*643NF與BCNF比較BCNF比3NF嚴(yán)格。BCNF要求所有的非平凡函數(shù)依賴(lài)中的是超碼,而3NF則放松了該約束,允許不是超碼。若關(guān)系模式屬于BCNF范式就一定屬于3NF范式。反之,則不一定成立。3NF存在數(shù)據(jù)冗余和異常問(wèn)題,而B(niǎo)CNF是基于函數(shù)依賴(lài)?yán)碚撃軌蜻_(dá)到的最好關(guān)系模式。*65關(guān)系模式規(guī)范化的基本步驟*66規(guī)范化小結(jié)規(guī)范化程度越高的關(guān)系模式不一定就越好在設(shè)計(jì)數(shù)據(jù)庫(kù)模式結(jié)構(gòu)時(shí),必須對(duì)現(xiàn)實(shí)世界的實(shí)際情況和用戶(hù)應(yīng)用需求作進(jìn)一步分析,確定一個(gè)合適的、能夠反映現(xiàn)實(shí)世界的模式上面的規(guī)范化步驟可以在其中任何一步終止*675、模式的分解5.1無(wú)損連接分解5.2保持依賴(lài)分解模式的分解的概念把低一級(jí)的關(guān)系模式分解為若干個(gè)高一級(jí)的關(guān)系模式的方法不是唯一的只有能夠保證分解后的關(guān)系模式與原關(guān)系模式等價(jià),分解方法才有意義即:分解既要保持函數(shù)依賴(lài),又要具有無(wú)損連接性*695.1無(wú)損連接分解定義5.12
給定關(guān)系模式r(R)及函數(shù)依賴(lài)集F,若r(R)的任意一個(gè)滿(mǎn)足函數(shù)依賴(lài)集F的關(guān)系實(shí)例r都有
=r,其中r1(R1)、r2(R2)分別為分解后的子模式,則稱(chēng)該分解對(duì)于F是無(wú)損連接的。無(wú)損連接分解能夠根據(jù)分解后的關(guān)系通過(guò)連接來(lái)還原原來(lái)的關(guān)系實(shí)例。具有無(wú)損連接性的分解保證不丟失信息.如何判定一分解是否是無(wú)損的?*70無(wú)損連接分解判斷方法定義5.13
給定關(guān)系模式r(R)及函數(shù)依賴(lài)集F,則將r(R)分解成r1(R1)、r2(R2)的分解是無(wú)損連接分解,當(dāng)且僅當(dāng)F+包含函數(shù)依賴(lài)R1R2→R1或R1R2→R2。即,當(dāng)一個(gè)關(guān)系模式分解為兩個(gè)關(guān)系模式時(shí),該分解為無(wú)損連接分解的充要條件是兩分解關(guān)系的公共屬性包含r1(R1)的碼或r2(R2)的碼。*715.2保持依賴(lài)分解[例5.12]
設(shè)關(guān)系模式r(R)=r(A,B,C),F(xiàn)={AB,BC},有兩種分解:r1(R1)=r1(A,B)、r2(R2)
=r2(B,C)r1(R1)=r1(A,B)、r2(R2)=r2(A,C)。分解1是保持依賴(lài)分解;分解2不是保持依賴(lài)分解(函數(shù)依賴(lài)BC丟失)因?yàn)榉纸夂?,函?shù)依賴(lài)BC既不能從F在R1的投影F1中推導(dǎo)出來(lái),也不能從F在R2的投影F2中推導(dǎo)出來(lái)。*726、模式求精*73定義模式求精:運(yùn)用關(guān)系理論(如函數(shù)依賴(lài)?yán)碚摗⒍嘀狄蕾?lài)?yán)碚摰?對(duì)已有關(guān)系模式進(jìn)行結(jié)構(gòu)調(diào)整、分解、合并和優(yōu)化,以滿(mǎn)足應(yīng)用系統(tǒng)的功能及性能等需求。模式求精步驟基于函數(shù)依賴(lài)?yán)碚摰哪J角缶襟E:確定函數(shù)依賴(lài)。確定關(guān)系模式所屬范式。分析是否滿(mǎn)足應(yīng)用需求。模式分解。根據(jù)范式要求(是選擇BCNF還是3NF),運(yùn)用規(guī)范化方法將關(guān)系模式分解成所要
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 家具廠溯源管理制度
- 家淘寶平臺(tái)管理制度
- 形象進(jìn)度與管理制度
- 徑向井安全管理制度
- 德魯納酒店管理制度
- 志愿團(tuán)規(guī)章管理制度
- 快速充電站管理制度
- 性少數(shù)群體管理制度
- 總經(jīng)理巡檢管理制度
- 意向金轉(zhuǎn)正管理制度
- 2025年安全月主題宣貫課件
- 廣東省深圳市2025年高三年級(jí)下學(xué)期第二次調(diào)研考試語(yǔ)文試題(含答案)
- 一種砂仁精油的應(yīng)用
- 浙江省寧波市慈溪市部分校2025屆數(shù)學(xué)五年級(jí)第二學(xué)期期末考試模擬試題含答案
- 大模型備案-落實(shí)算法安全主體責(zé)任基本情況
- 犢牛腹瀉防控課件
- 整形醫(yī)院AI智能設(shè)備行業(yè)深度調(diào)研及發(fā)展戰(zhàn)略咨詢(xún)報(bào)告
- 學(xué)校護(hù)學(xué)崗制度
- 天津市靜海區(qū)第四中學(xué)2024-2025學(xué)年高二下學(xué)期3月月考英語(yǔ)試題(原卷版+解析版)
- 人工智能藝術(shù)風(fēng)格-深度研究
- 養(yǎng)發(fā)館對(duì)員工規(guī)章制度
評(píng)論
0/150
提交評(píng)論