數(shù)據(jù)庫應(yīng)用技術(shù)教程 課件 第13章 關(guān)系規(guī)范化與數(shù)據(jù)庫設(shè)計(jì)_第1頁
數(shù)據(jù)庫應(yīng)用技術(shù)教程 課件 第13章 關(guān)系規(guī)范化與數(shù)據(jù)庫設(shè)計(jì)_第2頁
數(shù)據(jù)庫應(yīng)用技術(shù)教程 課件 第13章 關(guān)系規(guī)范化與數(shù)據(jù)庫設(shè)計(jì)_第3頁
數(shù)據(jù)庫應(yīng)用技術(shù)教程 課件 第13章 關(guān)系規(guī)范化與數(shù)據(jù)庫設(shè)計(jì)_第4頁
數(shù)據(jù)庫應(yīng)用技術(shù)教程 課件 第13章 關(guān)系規(guī)范化與數(shù)據(jù)庫設(shè)計(jì)_第5頁
已閱讀5頁,還剩84頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

關(guān)系數(shù)據(jù)規(guī)范化與數(shù)據(jù)庫設(shè)計(jì)1本章目標(biāo)01能夠分析出關(guān)系模式中存在的異常。02能夠給出關(guān)系中屬性間的函數(shù)依賴集,并求出最小的函數(shù)依賴集。03根據(jù)最小函數(shù)依賴集求關(guān)系中的候選鍵。04根據(jù)根據(jù)規(guī)范化原則進(jìn)行關(guān)系分解,得到較好的關(guān)系模式。05數(shù)據(jù)庫設(shè)計(jì)的特點(diǎn)06數(shù)據(jù)庫設(shè)計(jì)的方法與步驟本章內(nèi)容13.1關(guān)系模式中可能存在的異常13.2函數(shù)依賴13.3候選鍵13.4關(guān)系模式的規(guī)范化13.5數(shù)據(jù)庫設(shè)計(jì)的特點(diǎn)13.6數(shù)據(jù)庫設(shè)計(jì)的方法與步驟2

關(guān)系students(sid,sname,dname,ddirector,cid,cname,cscore)

數(shù)據(jù)間存在的語義關(guān)系:

一個(gè)系有多名學(xué)生,而一個(gè)學(xué)生只屬于一個(gè)系,即系與學(xué)生之間是的1:n的聯(lián)系。

一個(gè)系只有一名系主任,一名系主任也只在一個(gè)系任職,即系與系主任之間是1:1的聯(lián)系。

一名學(xué)生可以選修多門課程,而每門課程有多名學(xué)生選修,即學(xué)生與課程之間是m:n的聯(lián)系。存在異常的關(guān)系模式示例13.1.1存在異常的關(guān)系模式示例SidSnameDnameDdirectorCidCnameCscore1001李紅計(jì)算機(jī)羅剛1數(shù)據(jù)庫原理861001李紅計(jì)算機(jī)羅剛3數(shù)據(jù)結(jié)構(gòu)902001張小偉信息管理李少強(qiáng)1數(shù)據(jù)庫原理922001張小偉信息管理李少強(qiáng)2電子商務(wù)752001張小偉信息管理李少強(qiáng)3數(shù)據(jù)結(jié)構(gòu)861002錢海斌計(jì)算機(jī)羅剛1數(shù)據(jù)庫原理901002錢海斌計(jì)算機(jī)羅剛3數(shù)據(jù)結(jié)構(gòu)60students關(guān)系關(guān)系students主鍵(sid,cid)存在異常的關(guān)系模式示例13.1.1存在異常的關(guān)系模式示例SidSnameDnameDdirectorCidCnameCscore1001李紅計(jì)算機(jī)羅剛1數(shù)據(jù)庫原理861001李紅計(jì)算機(jī)羅剛3數(shù)據(jù)結(jié)構(gòu)902001張小偉信息管理李少強(qiáng)1數(shù)據(jù)庫原理922001張小偉信息管理李少強(qiáng)2電子商務(wù)752001張小偉信息管理李少強(qiáng)3數(shù)據(jù)結(jié)構(gòu)861002錢海斌計(jì)算機(jī)羅剛1數(shù)據(jù)庫原理901002錢海斌計(jì)算機(jī)羅剛3數(shù)據(jù)結(jié)構(gòu)601.數(shù)據(jù)冗余指同一個(gè)數(shù)據(jù)被重復(fù)存儲多次,導(dǎo)致存儲空間的浪費(fèi)。可能存在的異常13.1.2可能存在的異常SidSnameDnameDdirectorCidCnameCscore1001李紅計(jì)算機(jī)羅剛1數(shù)據(jù)庫原理861001李紅計(jì)算機(jī)羅剛3數(shù)據(jù)結(jié)構(gòu)902001張小偉信息管理李少強(qiáng)1數(shù)據(jù)庫原理922001張小偉信息管理李少強(qiáng)2電子商務(wù)752001張小偉信息管理李少強(qiáng)3數(shù)據(jù)結(jié)構(gòu)861002錢海斌計(jì)算機(jī)羅剛1數(shù)據(jù)庫原理901002錢海斌計(jì)算機(jī)羅剛3數(shù)據(jù)結(jié)構(gòu)602.更新異常指對冗余數(shù)據(jù)沒有全部修改而出現(xiàn)數(shù)據(jù)不一致的問題可能存在的異常13.1.2可能存在的異常SidSnameDnameDdirectorCidCnameCscore1001李紅計(jì)算機(jī)羅剛1數(shù)據(jù)庫原理861001李紅計(jì)算機(jī)羅剛3數(shù)據(jù)結(jié)構(gòu)902001張小偉信息管理李少強(qiáng)1數(shù)據(jù)庫原理922001張小偉信息管理李少強(qiáng)2電子商務(wù)753.插入異常指應(yīng)該插入到關(guān)系中的數(shù)據(jù)而不能插入。新來的同學(xué),在未選課的前提下,該同學(xué)的基本信息能插入到該關(guān)系中嗎?不能。因?yàn)橹麈I為(sid,cid),要求主鍵中每列值均不能為空。可能存在的異常13.1.2可能存在的異常SidSnameDnameDdirectorCidCnameCscore1001李紅計(jì)算機(jī)羅剛1數(shù)據(jù)庫原理861001李紅計(jì)算機(jī)羅剛3數(shù)據(jù)結(jié)構(gòu)902001張小偉信息管理李少強(qiáng)1數(shù)據(jù)庫原理922001張小偉信息管理李少強(qiáng)2電子商務(wù)754.刪除異常指不應(yīng)該刪除的數(shù)據(jù)而被從關(guān)系中刪除了。某個(gè)系學(xué)生全部畢業(yè),刪除該系的學(xué)生信息,同時(shí)也將系和系主任的信息一起刪除掉了可能存在的異常13.1.2可能存在的異常數(shù)據(jù)依賴:關(guān)系模式中屬性間存在的依賴關(guān)系。

例如一個(gè)系只有一名系主任,一名系主任也只能在一個(gè)系任職這個(gè)數(shù)據(jù)語義,表明系和系主任間是1:1的數(shù)據(jù)依賴關(guān)系異常現(xiàn)象產(chǎn)生的原因:關(guān)系模式中存在的這些復(fù)雜的數(shù)據(jù)依賴關(guān)系所導(dǎo)致的。解決:關(guān)系模式規(guī)范化,將單一的關(guān)系模式分解為數(shù)據(jù)依賴關(guān)系單純化的多個(gè)關(guān)系模式。Student(Sno,Sname,Dname)Dept(Dname,Ddirector)Score(Sid,Cid,Cscore)Course(Cid,Cname)Students(Sid,Sname,Dname,Ddirector,Cid,Cname,Cscore)關(guān)系模式中存在異常的原因13.1.3關(guān)系模式中存在異常的原因本章內(nèi)容13.1關(guān)系模式中可能存在的異常13.2函數(shù)依賴13.3候選鍵13.4關(guān)系模式的規(guī)范化13.5數(shù)據(jù)庫設(shè)計(jì)的特點(diǎn)13.6數(shù)據(jù)庫設(shè)計(jì)的方法與步驟10什么是函數(shù)依賴?函數(shù)依賴(FD)是數(shù)據(jù)庫設(shè)計(jì)的核心部分。SidSnameSdept1001李紅計(jì)算機(jī)1001李紅計(jì)算機(jī)Sid→Sname

Sid→Sdept

SidSnameSdept1001李紅計(jì)算機(jī)1001李紅自動化

設(shè)R(U)是屬性集U上的關(guān)系模式,X和Y是U的子集。若對于R(U)的任意一個(gè)可能的關(guān)系r,對于X的每一個(gè)具體值,Y都有唯一的具體的值與之對應(yīng),則稱X函數(shù)決定Y,或Y函數(shù)依賴于X,記作X→Y。此表依賴關(guān)系是錯(cuò)誤的

函數(shù)依賴定義13.2.1函數(shù)依賴定義函數(shù)依賴說明①函數(shù)依賴是語義范疇概念。SidSnameAge1001李紅181002張麗17沒有重名的前提下,Sname→AgeSidSnameAge1001李紅181002張麗171003李紅20允許重名,則Sname?

Age②函數(shù)依賴關(guān)心的問題是一個(gè)或一組屬性的值決定其它屬性的值。函數(shù)依賴定義13.2.1函數(shù)依賴定義③函數(shù)依賴不是指關(guān)系模式R的某個(gè)或某些元組滿足的約束條件,而是指R的所有元組均要滿足的約束條件,不能部分滿足。SidSnameSdeptCid1001李紅計(jì)算機(jī)C11001李紅計(jì)算機(jī)C21002張明自動化C11002張明自動化C21003趙海濤計(jì)算機(jī)C11003趙海濤自動化C2Sname→SdeptSname

?

SdeptSname

?

Sdept函數(shù)依賴定義13.2.1函數(shù)依賴定義1.根據(jù)完整的樣本數(shù)據(jù)發(fā)現(xiàn)函數(shù)依賴存在的函數(shù)依賴:(Order_ID,SKU)→(Quantity,Price,Total)

(Quantity,Price)→TotalOrder_ID(訂單編號)SKU(商品編號)Quantity(數(shù)量)Price(單價(jià))Total(總價(jià))30011002011300300200110110145020030011011012601202001101201250100300120100125010010011012012150300發(fā)現(xiàn)函數(shù)依賴13.2.2發(fā)現(xiàn)函數(shù)依賴2.根據(jù)數(shù)據(jù)語義發(fā)現(xiàn)函數(shù)依賴

對于關(guān)系模式R(U),X、Y為其屬性子集,根據(jù)函數(shù)依賴的定義和實(shí)體間聯(lián)系的類型,可以得出如下變換的方法:(1)如果X和Y之間是1:1的聯(lián)系,則存在的函數(shù)X→Y和Y→X;(2)如果X和Y之間是1:n的聯(lián)系,則存在的函數(shù)Y→X;(3)如果X和Y之間是m:n的聯(lián)系,則X和Y之間不存在函數(shù)依賴關(guān)系。例如,在Students關(guān)系模式中,系與系主任之間是1:1的聯(lián)系;系與學(xué)生之間是1:n的聯(lián)系學(xué)生和課程之間是m:n的聯(lián)系Dname→Ddirector和Ddirector→DnameSid→DnameSid與Cid之間不存在函數(shù)依賴發(fā)現(xiàn)函數(shù)依賴13.2.2發(fā)現(xiàn)函數(shù)依賴

【例13-1】設(shè)有關(guān)系模式R(A,B,C),其關(guān)系R如下所示。解答:(1)在關(guān)系r中,A→B成立,BC→A不成立,B→A不成立。(2)在關(guān)系r中,不成立的FD有:B→A,C→A,C→B,C→AB,BC→A。ABC123423533(1)試判斷下列3個(gè)FD在關(guān)系r中是否成立?A→BBC→AB→A(2)根據(jù)關(guān)系r,你能斷定哪些FD在關(guān)系模式R上不成立?發(fā)現(xiàn)函數(shù)依賴13.2.2發(fā)現(xiàn)函數(shù)依賴

【例13-2】有一個(gè)包括學(xué)生選課、教師任課數(shù)據(jù)的關(guān)系模式:R(S#,SNAME,AGE,SEX,C#,CNAME,SCORE,T#,TNAME,TITLE)規(guī)定:每個(gè)學(xué)號只能有一個(gè)學(xué)生,每個(gè)課程號只能決定一門課程;每個(gè)學(xué)生每學(xué)一門課,只能有一個(gè)成績;每門課程只由一位教師任課。根據(jù)上面的規(guī)定和實(shí)際意義,寫出該關(guān)系模式所有的FD。解答:R關(guān)系模式包括的FD有:S#→SNAME C#→CNAME(S#,C#)→GRADE C#→T#S#→(AGE,SEX) T#→(TNAME,TITLE)發(fā)現(xiàn)函數(shù)依賴13.2.2發(fā)現(xiàn)函數(shù)依賴1.函數(shù)依賴的推理規(guī)則A1(自反性):如果Y?X?U,則X→Y。A2(增廣性):如果X→Y且Z?U,則XZ→YZ。A3(傳遞性):如果X→Y且Y→Z,則X→Z。B1(合并性):如果X→Y且X→Z,則X→YZ。B2(分解性):如果X→YZ,則X→Y、X→Z。B3(結(jié)合性):如果X→Y且W→Z,則XW→YZ。B4(偽傳遞性):如果X→Y且WY→Z,則XW→Z。Amstrong公理Amstrong公理推論最小函數(shù)依賴集13.2.3最小函數(shù)依賴集

【例13-3】設(shè)有關(guān)系模式R,屬性集U={A,B,X,Y,Z},函數(shù)依賴集F={Z→A,B→X,AX→Y,ZB→Y},試給出ZB→Y是冗余的函數(shù)依賴的過程。解答:(1)因?yàn)閆→A,B→X,由B3可知,ZB→AX;(2)因?yàn)閆B→AX,AX→Y,由A3可知,ZB→Y。即ZB→Y可以由F中其它函數(shù)依賴導(dǎo)出,所以ZB→Y是冗余的函數(shù)依賴。最小函數(shù)依賴集13.2.3最小函數(shù)依賴集2.求最小函數(shù)依賴集如果函數(shù)依賴集F滿足下列條件,則稱F為一個(gè)最小函數(shù)依賴集。每個(gè)函數(shù)依賴的右邊都是單屬性(可以通過B2分解性實(shí)現(xiàn):如果X→YZ,則X→Y、X→Z。);函數(shù)依賴集F中沒有冗余的函數(shù)依賴;F中每個(gè)函數(shù)依賴的左邊沒有多余的屬性。注意:每個(gè)函數(shù)依賴集至少存在一個(gè)最小依賴集,但并不一定唯一。最小函數(shù)依賴集13.2.3最小函數(shù)依賴集【例13-4】設(shè)F是關(guān)系模式R(A,B,C)的FD集,

F={A→BC,B→C,A→B,AB→C},試求最小函數(shù)依賴集。解:(1)先把F中的函數(shù)依賴寫成右邊是單屬性形式:

F={A→B,A→C,B→C,A→B,AB→C}刪去一個(gè)A→B,得:F={A→B,A→C,B→C,AB→C}最小函數(shù)依賴集13.2.3最小函數(shù)依賴集(2)刪去冗余的函數(shù)依賴。

F={A→B,B→C,AB→C}(3)消除函數(shù)依賴左邊冗余的屬性。

最小函數(shù)依賴集為:F={A→B,B→C}【例13-5】設(shè)關(guān)系模式R(A,B,C,D,E,G,H)上的函數(shù)依賴集F={AC→BEGH,A→B,C→DEH,E→H},求F的最小函數(shù)依賴集。解:(1)把每個(gè)FD的右邊拆成單屬性,得到9個(gè)FD,得:F={AC→B,AC→E,AC→G,AC→H,A→B,C→D,C→E,C→H,E→H}(2)消除冗余的FD,得:F={AC→B,AC→E,AC→G,AC→H,A→B,C→D,C→E,E→H}最小函數(shù)依賴集13.2.3最小函數(shù)依賴集(3)消除FD中左邊冗余的屬性。因?yàn)锳→B,所以消去AC→B中的C;因?yàn)镃→E,所以消去AC→E的A;因?yàn)橛蒀→E、E→H,可推出C→H,所以消去AC→H中的A,得C→H,因?yàn)榭捎蒀→E、E→H推出,所以將AC→H刪去,得到的F為:F={A→B,C→E,AC→G,C→D,E→H}(4)再把左邊相同的FD合并起來,得到最小的函數(shù)依賴集為:F={A→B,C→DE,AC→G,E→H}最小函數(shù)依賴集13.2.3最小函數(shù)依賴集本章內(nèi)容13.1關(guān)系模式中可能存在的異常13.2函數(shù)依賴13.3候選鍵13.4關(guān)系模式的規(guī)范化13.5數(shù)據(jù)庫設(shè)計(jì)的特點(diǎn)13.6數(shù)據(jù)庫設(shè)計(jì)的方法與步驟24定義13.2

設(shè)關(guān)系模式R(U),k?U。如果k滿足下列條件,則稱k是R的一個(gè)候選鍵。

k→U;不存在k的真子集z,使得z→U。例如:關(guān)系模式students(sid,sname,dname,ddirector,cid,cname,csore)∵

(sid,cid)→(sid,sname,dname,ddirector,cid,cname,csore)∴候選鍵:(sid,cid)

sid

?

(cid,cname,score)

cid

?

(sid,sname,dname,ddirector,cscore)如何確定屬性集k→U?求屬性集k的閉包如果k+=U,則k為候選鍵候選鍵定義13.3.1候選鍵定義定義13.3

設(shè)F是屬性集U上的函數(shù)依賴集,X是U的子集,那么屬性集X的閉包用X+表示,它是一個(gè)從F集使用函數(shù)依賴推理規(guī)則推出的所有滿足X→A的屬性A的集合:

X+={屬性A|X→A能由F推導(dǎo)出來}定理13.1

X→Y能由F根據(jù)函數(shù)依賴推理規(guī)則推出的充分必要條件是Y?X+。屬性集的閉包13.3.2屬性集的閉包算法13.1

求屬性集X(X?U)關(guān)于U上的函數(shù)依賴集F的閉包X+。輸入:函數(shù)依賴集F;屬性集U輸出:X+步驟:(1)令X(i)=X,i=0;(2)求b,這里b={A|(

V)(

W)(V→W∈F∧V?X(i)∧A∈W)};(3)X(i+1)=b∪X(i)

;(4)判斷X(i+1)=X(i)是否成立;(5)如果等式成立或X(i+1)=U,則X(i+1)

就是X+,算法終止;(6)如果等式不成立,則i=i+1,返回步驟(2)繼續(xù)。屬性集的閉包13.3.2屬性集的閉包【例13-6】已知關(guān)系模式R(U,F(xiàn)),其中U={A,B,C,D,E};

F={AB→C,B→D,C→E,EC→B,AC→B}。求(AB)+。解答:(1)令X(0)=XX(0)=AB(2)求b。逐一掃描F集中各個(gè)函數(shù)依賴,找左部為A、B或AB的函數(shù)依賴,b=函數(shù)依賴右端屬性集合。b=CD(3)X(1)=b∪X(0)

X(1)=CD∪AB=ABCD(4)因?yàn)閄(1)≠X(0),所以再找左部為ABCD子集的函數(shù)依賴X(2)=b∪X(1)=BE∪ABCD=ABCDEb=BE(5)因?yàn)閄(2)=U,所以(AB)+=ABCDE。屬性集的閉包13.3.2屬性集的閉包【例13-7】設(shè)關(guān)系模式R(A,B,C,D,E,G)上函數(shù)依賴集為F,F(xiàn)={D→G,C→A,CD→E,A→B}。求D+,CD+,AD+,AC+,ACD+。解答:D+=DG,CD+=ABCDEG,AD+=ABDG,AC+=ABC,ACD+=ABCDEG。屬性集的閉包13.3.2屬性集的閉包【例13-8】設(shè)有關(guān)系模式R(A,B,C,D,E,G),函數(shù)依賴集F={AB→E,AC→G,AD→B,B→C,C→D},求出R的所有候選鍵。步驟一:查看函數(shù)依賴集F中的每個(gè)形如Xi→Yi(i=1,…,n)的函數(shù)依賴關(guān)系。看哪些屬性在所有Yi(i=1,…,n)中一次也沒有出現(xiàn)過,設(shè)沒有出現(xiàn)過的屬性集為P(P=U-Y1-Y2-…Yn)。P={A}步驟二:P≠

時(shí),根據(jù)候選鍵的定義,候選鍵中應(yīng)必包含P(因?yàn)闆]有其它屬性能決定P,但自己能決定自己)。考察P,如果P滿足候選鍵定義,則P為候選鍵,并且候選鍵只有P一個(gè),結(jié)束。(A)+=AA不是候選鍵求候選鍵13.3.3求候選鍵設(shè)有關(guān)系模式R(A,B,C,D,E,G),函數(shù)依賴集F={AB→E,AC→G,AD→B,B→C,C→D},求出R的所有候選鍵。步驟三:如果P不滿足候選鍵定義,則P可以分別與{U-P}中的每一個(gè)屬性合并,形成P1、P2、…、Pm。再分別判斷Pj(j=1,…,m)是否滿足候選鍵定義,能成立則找到了一個(gè)候選鍵,沒有則放棄。合并一個(gè)屬性如果不能找到或不能找全候選鍵,可進(jìn)一步考慮P與{U-P}中的2個(gè)(或3個(gè),4個(gè),…)屬性的所有組合分別進(jìn)行合并,繼續(xù)判斷分別合并后的各屬性組是否滿足候選鍵的定義,如此下去,直到找出R的所有候選鍵為止。結(jié)束。注意:如果屬性組K已有K→U,則不需要再去考察含K的其它屬性組合,顯然它們都不可能再是候選鍵了。

P中A分別與{U-P}中的(B,C,D,E,G)合并,形成AB、AC、AD、AE、AG。下面分別求(AB)+、(AC)+、(AD)+、(AE)+、(AG)+。(AB)+=ABCDEG,(AC)+=ABCDEG,

(AD)+=ABCDEG,(AE)+=AE,(AG)+=AG候選鍵為AB、AC、AD【例13-9】設(shè)有關(guān)系模式R(A,B,C,D,E)上的函數(shù)依賴集為F,并且F={A→BC,CD→E,B→D,E→A},求出R的所有候選鍵。步驟一:查看函數(shù)依賴集F中的每個(gè)形如Xi→Yi(i=1,…,n)的函數(shù)依賴關(guān)系。看哪些屬性在所有Yi(i=1,…,n)中一次也沒有出現(xiàn)過,設(shè)沒有出現(xiàn)過的屬性集為P(P=U-Y1-Y2-…Yn)。P=

步驟二:P=

時(shí),則可以先考察Xi→Yi(i=1,…,n)中的單個(gè)Xi,判斷Xi是否滿足候選鍵定義。如果成立則Xi為候選鍵。剩下不是候選鍵的,可以考察它們兩個(gè)或多個(gè)的組合,查看這些組合是否滿足候選鍵定義,從而找出其它可能還有的候選鍵。結(jié)束。(A)+=ABCDE,(CD)+=ABCDE,

(B)+=BD,

(E)+=ABCDE,

B與C、D分別組合,不要與A、E組合,因?yàn)锳、E已為候選鍵。

(BC)+=ABCDE,(BD)+=BD

候選鍵為:A、CD、E、BC本次內(nèi)容13.1關(guān)系模式中可能存在的異常13.2函數(shù)依賴13.3候選鍵13.4關(guān)系模式的規(guī)范化13.5數(shù)據(jù)庫設(shè)計(jì)的特點(diǎn)13.6數(shù)據(jù)庫設(shè)計(jì)的方法與步驟33SidSnameDnameDdirectorCidCnameCscore1001李紅計(jì)算機(jī)羅剛1數(shù)據(jù)庫原理861001李紅計(jì)算機(jī)羅剛3數(shù)據(jù)結(jié)構(gòu)902001張小偉信息管理李少強(qiáng)1數(shù)據(jù)庫原理922001張小偉信息管理李少強(qiáng)2電子商務(wù)751002錢海斌計(jì)算機(jī)羅剛1數(shù)據(jù)庫原理901002錢海斌計(jì)算機(jī)羅剛3數(shù)據(jù)結(jié)構(gòu)60下面的關(guān)系模式好不好?不好數(shù)據(jù)冗余更新異常插入異常刪除異常關(guān)系模式的好與壞,用什么標(biāo)準(zhǔn)來衡量呢?這個(gè)標(biāo)準(zhǔn)就是關(guān)系模式的范式。將壞的關(guān)系模式轉(zhuǎn)換成好的關(guān)系模式,則需要對范式進(jìn)行規(guī)范化為什么?范式(NormalForm,NF)是指關(guān)系模式的規(guī)范形式。各范式間的聯(lián)系為:

1NF2NF3NFBCNF范式級別與異常問題的關(guān)系是:級別越低,出現(xiàn)異常的現(xiàn)象越高級別:高低范式及規(guī)范化13.4.1范式及規(guī)范化1.范式

2.規(guī)范化①將一個(gè)給定的關(guān)系模式轉(zhuǎn)化為某種范式的過程,稱為關(guān)系模式的規(guī)范化過程,簡稱為規(guī)范化。②規(guī)范化一般采用分解的辦法,將低級別范式向高級別范式轉(zhuǎn)化,使關(guān)系的語義單純化。③規(guī)范化程度,不一定越高越好,在關(guān)系模式設(shè)計(jì)時(shí),一般要求關(guān)系模式達(dá)到3NF或BCNF即可。范式及規(guī)范化13.4.1范式及規(guī)范化

定義13.4

設(shè)R是一個(gè)具有屬性集合U的關(guān)系模式,X和Y是U的子集。如果X→Y,并且對于X的任何一個(gè)真子集Z,Z→Y都不成立,則稱Y完全函數(shù)依賴于X,記作

X→Y;如果X→Y,并且對于X的任何一個(gè)真子集Z,Z→Y都成立,則稱Y部分函數(shù)依賴于X,記作

X→Y。fp1.完全函數(shù)依賴和部分函數(shù)依賴完全函數(shù)依賴、部分函數(shù)依賴和傳遞函數(shù)依賴13.4.2完全函數(shù)依賴、部分函數(shù)依賴和傳遞函數(shù)依賴①(Sid,Cid)→Cscore②(Sid,Cid)→Dnamefp【例13-10】對于關(guān)系模式students(sid,sname,dname,ddirector,cid,cname,cscore),判斷下面所給的兩個(gè)函數(shù)依賴是完全函數(shù)依賴還是部分函數(shù)依賴,為什么?①(sid,cid)→cscore②(sid,cid)→dname。【說明】只有當(dāng)決定因素(函數(shù)依賴左側(cè))是組合屬性時(shí),討論部分函數(shù)依賴才有意義,當(dāng)決定因素是單屬性時(shí),都是完全函數(shù)依賴。完全函數(shù)依賴、部分函數(shù)依賴和傳遞函數(shù)依賴13.4.2完全函數(shù)依賴、部分函數(shù)依賴和傳遞函數(shù)依賴定義13.5

設(shè)R是一個(gè)具有屬性集合U的關(guān)系模式,X、Y、Z是U的子集,且X、Y、Z是不同的屬性集。如果X→Y,Y→X不成立,Y→Z,則稱Z傳遞函數(shù)依賴于X,記作X→Z。t2.傳遞函數(shù)依賴完全函數(shù)依賴、部分函數(shù)依賴和傳遞函數(shù)依賴13.4.2完全函數(shù)依賴、部分函數(shù)依賴和傳遞函數(shù)依賴【例13-11】對于關(guān)系模式students(sid,sname,dname,ddirector,cid,cname,cscore)①存在Sid→Dname,Dname?Sid不成立,而Dname→Ddirector,

Sid→Ddirector。t【說明】(1)如果X→Y,且Y→X,則稱X與Y等價(jià),記作X?Y。(2)如果定義中X?Y,稱Z對X直接函數(shù)依賴,而不是傳遞函數(shù)。②在學(xué)生不存在重名的情況下,Sid?Sname,而Sname→Dname,

Sid→Dname是直接函數(shù)依賴,不是傳遞函數(shù)依賴。完全函數(shù)依賴、部分函數(shù)依賴和傳遞函數(shù)依賴13.4.2完全函數(shù)依賴、部分函數(shù)依賴和傳遞函數(shù)依賴1.第一范式(1NF)定義13.6

設(shè)R是一個(gè)關(guān)系模式。如果R中每個(gè)屬性的值域,都是不可分的原子值,則稱R是第一范式,記作1NF。1NF是關(guān)系模式具備的最起碼的條件。以函數(shù)依賴為基礎(chǔ)的范式13.4.3以函數(shù)依賴為基礎(chǔ)的范式存在:數(shù)據(jù)冗余、插入異常、刪除異常、更新異常。SidSnameDnameDdirectorCidCnameCscore1001李紅計(jì)算機(jī)羅剛1數(shù)據(jù)庫原理861001李紅計(jì)算機(jī)羅剛3數(shù)據(jù)結(jié)構(gòu)902001張小偉信息管理李少強(qiáng)1數(shù)據(jù)庫原理922001張小偉信息管理李少強(qiáng)2電子商務(wù)75示例StudentsStudents關(guān)系模式滿足1NF?是1NFStudents存在異常?以函數(shù)依賴為基礎(chǔ)的范式13.4.3以函數(shù)依賴為基礎(chǔ)的范式2.第二范式(2NF)主屬性——候選鍵中所有的屬性均稱為主屬性;非主屬性——不包含在任何候選鍵中的屬性。示例SidSnameDnameDdirectorCidCnameCscore1001李紅計(jì)算機(jī)羅剛1數(shù)據(jù)庫原理861001李紅計(jì)算機(jī)羅剛3數(shù)據(jù)結(jié)構(gòu)90Students假設(shè)Students不允許重名,候選鍵?(sid,cid)(sname,cid)Students主屬性?sidsnamecidStudents非主屬性?DnameDdirectiorCnameCscore以函數(shù)依賴為基礎(chǔ)的范式13.4.3以函數(shù)依賴為基礎(chǔ)的范式定義13.7

如果關(guān)系模式R是1NF,而且R中所有非主屬性都完全函數(shù)依賴于任意一個(gè)候選鍵,則稱R是第二范式,記作2NF。2NF的實(shí)質(zhì)是不存在非主屬性“部分函數(shù)依賴”于候選鍵的情況。以函數(shù)依賴為基礎(chǔ)的范式13.4.3以函數(shù)依賴為基礎(chǔ)的范式SidSnameDnameDdirectorCidCnameCscore1001李紅計(jì)算機(jī)羅剛1數(shù)據(jù)庫原理861001李紅計(jì)算機(jī)羅剛3數(shù)據(jù)結(jié)構(gòu)90示例Students為1NF,但存在數(shù)據(jù)冗余、插入異常、刪除異常和更新異常。Students滿足2NF?StudentsStudents上的函數(shù)依賴有:{Sid→Sname,

Sid→Dname,Dname?Ddirector,Cid→Cname,

(Sid,Cid)→Cscore,(Sid,Cid)→Sname,(Sid,Cid)→Dname,

(Sid,Cid)→Ddirector,(Sid,Cid)→Cname}fpppp存在部分函數(shù)依賴,不滿足2NF以函數(shù)依賴為基礎(chǔ)的范式13.4.3以函數(shù)依賴為基礎(chǔ)的范式1NF關(guān)系向2NF的轉(zhuǎn)換原則設(shè)關(guān)系模式R屬性集合為U,主鍵是W,R上還存在函數(shù)依賴X→Z,且X是W的子集,Z是非主屬性,那么W→Z就是一個(gè)部分函數(shù)依賴。此時(shí)應(yīng)把R分解成兩個(gè)關(guān)系模式:R1(XZ),主鍵是X;R2(Y),其中Y=U-Z,主鍵仍是W,外鍵是X(sid,cid)sid->snamesid->dnamesid->ddirectorcid->cname將導(dǎo)致部分函數(shù)依賴的屬性放入R1{Sid→Sname,

Sid→Dname,Dname?Ddirector,Cid→Cname,

(Sid,Cid)→Cscore,(Sid,Cid)→Sname,(Sid,Cid)→Dname,

(Sid,Cid)→Ddirector,(Sid,Cid)→Cname}fpppp示例R11(Sid,Sname,Dname,Ddirector)PK為Sid{Sid→Sname,Sid→Dname,Dname?Ddirector}R12(Cid,Cname)PK為Cid{Cid→Cname}R2(Sid,Cid,Cscore){(Sid,Cid)→Cscore}

PK為(Sid,Cid)f以函數(shù)依賴為基礎(chǔ)的范式R11(Sid,Sname,Dname,Ddirector)PK為Sid{Sid→Sname,Sid→Dname,Dname?Ddirector}R12(Cid,Cname)PK為Cid{Cid→Cname}R2(Sid,Cid){Cid→Cname}

PK為(Sid,Cid)f分解后的3個(gè)關(guān)系模式好壞?SidSnameDnameDdirector1001李紅計(jì)算機(jī)羅剛1003孫海英計(jì)算機(jī)羅剛CidCname1數(shù)據(jù)庫原理3數(shù)據(jù)結(jié)構(gòu)SidCidCscore10011861001390滿足2NF,存在數(shù)據(jù)冗余、刪除異常、插入異常、更新異常滿足2NF,不存在問題滿足2NF,不存在問題Sid→Ddirectort以函數(shù)依賴為基礎(chǔ)的范式3.第三范式(3NF)定義13.8

如果關(guān)系模式R是2NF,而且R中所有非主屬性對任何候選鍵都不存在傳遞函數(shù)依賴,則稱R是第三范式,記作3NF。3NF是從1NF消除非主屬性對候選鍵的部分函數(shù)依賴,和從2NF消除傳遞函數(shù)依賴而得到的關(guān)系模式。以函數(shù)依賴為基礎(chǔ)的范式13.4.3以函數(shù)依賴為基礎(chǔ)的范式2NF關(guān)系向3NF的轉(zhuǎn)換原則

設(shè)關(guān)系模式R屬性集合為U,主鍵是W,R上還存在函數(shù)依賴X→Z,并且Z是非主屬性,Z不包含于X,X不是候選鍵,這樣W→Z就是一個(gè)傳遞依賴。此時(shí)應(yīng)把R分解成兩個(gè)關(guān)系模式:R1(XZ),主鍵是X;R2(Y),其中Y=U-Z,主鍵仍是W,外鍵是X。(sid)dname->ddirector將導(dǎo)致傳遞函數(shù)依賴的屬性放入R1R(Sid,Sname,Dname,Ddirector)PK為Sid{Sid→Sname,Sid→Dname,Dname?Ddirector,Sid→Ddirector}t示例R1(Dname,Ddirector)PK為Dname{Dname?Ddirector}R2(Sid,Sname,Dname)PK為SidFK為Dname

{Sid→Sname,Sid→Dname}以函數(shù)依賴為基礎(chǔ)的范式SidCidGradeTname11001190Mary11001387Rose21001185Jone11002192Mary11002387Rose示例STC屬于3NF?

STC3NF。因?yàn)榉侵鲗傩詆rade對候選鍵完全函數(shù)依賴。sid與cid關(guān)系為m:ncid與tname關(guān)系為1:n函數(shù)依賴集:{(Sid,Cid)→Grade,(Sid,Tname)→Grade,Tname→Cid}候選鍵:(Sid,Cid)和(Sid,Tname)但依然存在:數(shù)據(jù)冗余、插入異常、刪除異常、更新異常。以函數(shù)依賴為基礎(chǔ)的范式13.4.3以函數(shù)依賴為基礎(chǔ)的范式4.Boycc-Codd范式(BCNF)定義13.9

如果關(guān)系模式R是1NF,且對于R中每個(gè)函數(shù)依賴X→Y,X必為候選鍵,則稱R是BCNF范式。

由BCNF的定義可以知,每個(gè)BCNF范式應(yīng)具有以下3個(gè)性質(zhì):(1)所有非主屬性都完全函數(shù)依賴于每個(gè)候選鍵;(2)所有主屬性都完全函數(shù)依賴于每個(gè)不包含它的候選鍵;(3)沒有任何屬性完全函數(shù)依賴于非鍵的任何一組屬性。3NF關(guān)系向BCNF轉(zhuǎn)換的原則是消除主屬性對候選鍵的部分和傳遞函數(shù)依賴,將3NF關(guān)系分解成多個(gè)BCNF關(guān)系模式。以函數(shù)依賴為基礎(chǔ)的范式13.4.3以函數(shù)依賴為基礎(chǔ)的范式SidCidGradeTname11001190Mary11001387Rose21001185Jone11002192Mary11002387Rose示例1

STC函數(shù)依賴集:{(Sid,Cid)→Grade,(Sid,Tname)→Grade,Tname→Cid}候選鍵:(Sid,Cid)和(Sid,Tname)(Sid,Tname)→Cidp分解:

R1(Tname,Cid){Tname→Cid}PK為TnameFK為Cid

R2(Sid,Cid,Grade){(Sid,Cid)→Grade}PK為(Sid,Cid)以函數(shù)依賴為基礎(chǔ)的范式13.4.3以函數(shù)依賴為基礎(chǔ)的范式示例2關(guān)系模式STJ(S,T,J)中,S表示學(xué)生,T表示教師,J表示課程。每一教師只教一門課。每門課有若干教師,某一學(xué)生選定某門課,就對應(yīng)一個(gè)固定的教師。由語義可得到函數(shù)依賴:(S,J)→T;(S,T)→J;T→J

因?yàn)闆]有任何非主屬性對碼傳遞依賴或部分依賴,STJ∈3NF。因?yàn)門是決定因素,而T不包含碼,所以STJ∈BCNF。以函數(shù)依賴為基礎(chǔ)的范式53非BCNF的關(guān)系模式也可以通過分解成為BCNF。例如STJ可分解為ST(S,T)與TJ(T,J),它們都是BCNF。3NF和BCNF是在函數(shù)依賴的條件下對模式分解所能達(dá)到的分離程度的測度。一個(gè)模式中的關(guān)系模式如果都屬于BCNF,那么在函數(shù)依賴范疇內(nèi),它已實(shí)現(xiàn)了徹底的分離,已消除了插入和刪除的異常。3NF的“不徹底”性表現(xiàn)在可能存在主屬性對碼的部分依賴和傳遞依賴。以函數(shù)依賴為基礎(chǔ)的范式54關(guān)系模式規(guī)范化的基本步驟:關(guān)系模式規(guī)范化總結(jié)13.4.5關(guān)系模式規(guī)范化總結(jié)本章內(nèi)容13.1關(guān)系模式中可能存在的異常13.2函數(shù)依賴13.3候選鍵13.4關(guān)系模式的規(guī)范化13.5數(shù)據(jù)庫設(shè)計(jì)的特點(diǎn)13.6數(shù)據(jù)庫設(shè)計(jì)的方法與步驟56數(shù)據(jù)庫設(shè)計(jì)的特點(diǎn)(1)綜合性

涉及面廣,需包含計(jì)算機(jī)專業(yè)知識及業(yè)務(wù)系統(tǒng)專業(yè)知識;要解決技術(shù)及非技術(shù)兩方面的問題;(2)結(jié)構(gòu)設(shè)計(jì)與行為設(shè)計(jì)是分離的

結(jié)構(gòu)設(shè)計(jì)是指數(shù)據(jù)庫的模式結(jié)構(gòu)設(shè)計(jì),包括概念結(jié)構(gòu)、邏輯結(jié)構(gòu)和存儲結(jié)構(gòu);行為設(shè)計(jì)是指應(yīng)用程序設(shè)計(jì),包括功能組織、流程控制等方面的設(shè)計(jì)。數(shù)據(jù)庫設(shè)計(jì)的特點(diǎn)數(shù)據(jù)庫設(shè)計(jì)與傳統(tǒng)的軟件工程的做法正好相反。數(shù)據(jù)庫設(shè)計(jì)的主要精力首先是放在數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)上,比如數(shù)據(jù)庫的表結(jié)構(gòu)、視圖等。本章內(nèi)容13.1關(guān)系模式中可能存在的異常13.2函數(shù)依賴13.3候選鍵13.4關(guān)系模式的規(guī)范化13.5數(shù)據(jù)庫設(shè)計(jì)的特點(diǎn)13.6數(shù)據(jù)庫設(shè)計(jì)的方法與步驟59數(shù)據(jù)庫設(shè)計(jì)方法概述為了使數(shù)據(jù)庫設(shè)計(jì)更合理更有效,需要有效的指導(dǎo)原則,這種原則就稱為數(shù)據(jù)庫設(shè)計(jì)方法。新奧爾良(NewOrleans)方法將數(shù)據(jù)庫設(shè)計(jì)分為四個(gè)階段:需求分析、概念結(jié)構(gòu)設(shè)計(jì)、邏輯結(jié)構(gòu)設(shè)計(jì)和物理結(jié)構(gòu)設(shè)計(jì)

需求說明需求分析概念結(jié)構(gòu)概念結(jié)構(gòu)設(shè)計(jì)邏輯結(jié)構(gòu)邏輯結(jié)構(gòu)設(shè)計(jì)物理結(jié)構(gòu)結(jié)構(gòu)物理設(shè)計(jì)數(shù)據(jù)庫設(shè)計(jì)方法從本質(zhì)上看仍然是手工設(shè)計(jì)方法,其基本思想是過程迭代和逐步求精。數(shù)據(jù)庫設(shè)計(jì)的基本步驟

需求分析結(jié)構(gòu)設(shè)計(jì)行為設(shè)計(jì)數(shù)據(jù)庫實(shí)施數(shù)據(jù)庫運(yùn)行和維護(hù)數(shù)據(jù)庫設(shè)計(jì)全過程運(yùn)行和維護(hù)需求分析數(shù)據(jù)分析功能分析概念結(jié)構(gòu)設(shè)計(jì)邏輯結(jié)構(gòu)設(shè)計(jì)物理結(jié)構(gòu)設(shè)計(jì)加載數(shù)據(jù)功能設(shè)計(jì)事務(wù)設(shè)計(jì)程序設(shè)計(jì)調(diào)試運(yùn)行合理確定實(shí)體和屬性一般是描述中的名詞;能作為屬性對待的,盡量作為屬性;區(qū)分實(shí)體和屬性的兩條準(zhǔn)則:(1)屬性不能再具有需要描述的性質(zhì)。即屬性必須是不可分的數(shù)據(jù)項(xiàng),不能再由另一些屬性組成(2)屬性不能與其他實(shí)體具有聯(lián)系。聯(lián)系只發(fā)生在實(shí)體之間例13-12:職工是一個(gè)實(shí)體,職工號、姓名、年齡是職工的屬性,考慮“職稱”,是作為屬性,還是實(shí)體?如果職稱與工資、福利掛鉤,即職稱有需要進(jìn)一步描述的特性,則根據(jù)準(zhǔn)則(1),職稱作為一個(gè)實(shí)體看待更恰當(dāng)。如果職稱與工資、福利掛鉤,即職稱有需要進(jìn)一步描述的特性,則根據(jù)準(zhǔn)則(1),職稱作為一個(gè)實(shí)體看待更恰當(dāng)。職稱作為一個(gè)實(shí)體例13-13:在醫(yī)院中,一個(gè)病人只能住在一個(gè)病房中,考慮“病房號”的設(shè)計(jì);如果一個(gè)病人只能住在一個(gè)病房中,考慮“病房號”的設(shè)計(jì);如果,一個(gè)醫(yī)生負(fù)責(zé)幾個(gè)病房的病人的醫(yī)療工作,即,病房還要與醫(yī)生實(shí)體發(fā)生聯(lián)系,則根據(jù)準(zhǔn)則(2),“病房號”應(yīng)作為一個(gè)實(shí)體病房作為一個(gè)實(shí)體如果,一個(gè)醫(yī)生負(fù)責(zé)幾個(gè)病房的病人的醫(yī)療工作,即,病房還要與醫(yī)生實(shí)體發(fā)生聯(lián)系,則根據(jù)準(zhǔn)則(2),“病房號”應(yīng)作為一個(gè)實(shí)體設(shè)計(jì)全局E-R模型

將局部E-R圖集成為全局E-R圖;需消除各分E-R圖合并時(shí)產(chǎn)生的沖突;解決沖突是合并E-R圖的主要工作和關(guān)鍵所在。沖突主要有三類:屬性沖突命名沖突結(jié)構(gòu)沖突優(yōu)化全局E-R模型

實(shí)體個(gè)數(shù)盡可能少;實(shí)體所包含的屬性盡可能少;實(shí)體間聯(lián)系無冗余。邏輯結(jié)構(gòu)設(shè)計(jì)

把概念結(jié)構(gòu)設(shè)計(jì)階段設(shè)計(jì)好的基本E-R模型轉(zhuǎn)換為具體的數(shù)據(jù)庫管理系統(tǒng)支持的數(shù)據(jù)模型,也就是導(dǎo)出特定的DBMS可以處理的數(shù)據(jù)庫邏

溫馨提示

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

最新文檔

評論

0/150

提交評論